本文主要描述如何在EVB335X-II上实现从SPI Flash启动系统,包括启动方式的修改,u-boot编译,SPI Flash的烧写。EVB335X-II使用的SPI Flash型号为W25Q32FV,大小为4M-Byte,挂载在SPI0总线上。以下为功能实现步骤。

一 修改核心板启动方式:

根据COM335X核心板设计原理图,从SPI0启动时,SYSBOOT[4:0]应该为11000b。因此,核心板应做以下修改:焊接R9、R8、R15、R14、R13,不焊接R17、R16、R7、R6、R5,如下图所示:


二:编译u-boot

在终端输入以下命令:

$makecom335x_spi_128_config

(注:128是指RAM大小为128M,如果使用的RAm大小为256M或者512M,请将128改为256或者512.)

$makeARCH=arm CROSS_COMPILE=/opt/arm-2010.09/bin/arm-none-linux-gnueabi-

编译完成,在当前目录下生成MLO、MLO.byteswap和u-boot.img文件,在spl目录下生成u-boot-spl.bin文件。其中,MLO.byteswap是烧写到SPI Flash的专用文件。

三:SPI Flash烧写步骤

下载 MLO.byteswap和 u-boot.img 到 SPI Flash 中,可以通过网口、串口、USB 口、SD Card  将上一步骤中编译好的文件下载到 SDRAM中,然后通过运行的 u-boot 将程序烧写到 SPIFlash 中。本文以从串口下载为例进行说明。

1、将调试串口连接到电脑上,打开Windows下的超级终端,设置如下参数:波特率(115200)、数据位(8 位)、停止位(1 位)、校验位(无)、数据流控制(无),如下图所示:

2、给开发板上电,当超级终端打印出“CCCCC”字符后,表示内部ROM工作正常,然后选择超级终端:传送 → 发送文件→ 1K Xmodem,如下图所示:

3、点击→浏览,选择u-boot-spl.bin文件

然后,选择发送,传输u-boot-spl.bin文件

4、传输成功,则u-boot-spl.bin会自动在CPU内部RAM中运行,初始化外部DDR3RAM,并自动引导待下载到DDR3 RAM中的u-boot.bin,如下图所示:

5、 这时会再次出现”CC”字符,此时可以传输u-boot.img文件,

选择:传送 → 发送文件 → Ymodem

6、点击→浏览,选择u-boot.img文件

然后,选择发送,传送u-boot.img文件。注意:此过程可能需要等待50s左右才能开始传输。

7、u-boot.img传输成功后,SPL会自动引导在DDR3 RAM的u-boot

8、在3秒内单击回车键,会出现“U-Boot# ”提示,此时u-boot已经正确烧写到DDR3 RAM中,但还没有烧写到SPI Flash中。接下来我们要通过UART串口将镜像烧到SPI Flash.

9、 在“U-Boot# ”提示下依次输入:

U-Boot# mw.b 0x81000000 0xFF 0x20000   //把内存0x81000000开始的0x20000字节设为0xFF

U-Boot# loadb 0x81000000              //等待从串口下载文件至内存0x81000000处

打开传输协议,选择:传送 → 发送文件 → Kermit

10、点击→浏览,选择MLO.byteswap文件

然后,选择发送,传输MLO.byteswap文件。

11、传输完成后,在“U-Boot# ”提示下依次输入:

U-Boot# sf probe 0                      //检测SPI0上的flash是否存在,操作SPI Flash前必须运行一次

U-Boot# sf erase 0 +0x400000                               //擦除SPI Flash

U-Boot#sf write 0x81000000 0 ${filesize} //将DDR3中的MLO文件烧写到SPI Flash起始地址为0的区域

此时,MLO已经烧写到SPIFlash中,接下来要将u-boot.img烧写到SPIFlash中。

12、在“U-Boot# ”提示下依次输入:

U-Boot# mw.b 0x81000000 0xFF 0x1e0000

U-Boot# loadb 0x81000000

打开传输协议,选择:传送 → 发送文件 → Kermit

13、点击浏览,选择u-boot.img文件,然后选择发送,传输u-boot.img文件

14、传输完成后,在“U-Boot# ”提示下依次输入:

U-Boot# sfwrite 0x81000000 0x20000 ${filesize}//将DDR3中的MLO文件烧写到SPI Flash起始地址为                                                                                                         0x20000的区域

烧写完成后,重启开发板,系统从SPI Flash启动。

AM335x SPI Flash启动说明相关推荐

  1. 荔枝派Zero(V3s)SPI Flash 启动

    参考:http://zero.lichee.pro/系统开发/SPI_flash_build.html#linux 本文以型号为MX25L12805.MX25L25635F为例,flash大小分别为1 ...

  2. NUC972 SPI Flash启动+内核+Cramfs文件系统

    NUC972 作为一个低成本linux方案,有片内SDRAM,又有茫茫多的外设,简直工控神U. 为了追究更低成本,考虑放弃使用NAND,把uboot, 内核,文件系统都放在SPI FLASH.这样画板 ...

  3. [转]i.MXRT1050 从外部QSPI Nor Flash启动

    晕,不看不知道一看吓一跳,都快两年没有更新我的博客了,哎,惭愧的同时也是感叹时间过的真快啊,之前写博客还高喊着自己快奔三的人了,结果现在都已经迈过去了...不继续说了,都暴露年龄了,咳咳.不过虽然时光 ...

  4. ADSP-SC589开发板更换SPI FLASH并从flash引导内核与文件系统

    前情提要:目前本人正在用ADSP-SC589开发板做开发,希望实现内核与文件系统都从SPI FLASH启动,但板子上原来的SPI FLASH太小了,于是更换了镁光的MT25QU01GBBB FLASH ...

  5. AM335X 、AM5728 NOR flash启动

    现在AM335X上设计nor flash启动的相关要点总结如下,供大家参考. 1. 关于nor flash启动的信息 可以参考TRM的26.1.7.2 XIP Memory章节,在这里就不详述了. 2 ...

  6. nuc972 配置成SPI nor flash 启动

    nuc972开发板用的是w25q128的spi nor flash (总共16M). 做了如下事情使得从nor flash启动,jffs2文件系统也放在nor flash上: sudo apt ins ...

  7. HI3516a w25q128 spi flash无法启动问题

    海思HI3516a开发套件上spi flash硬件默认3 addr模式,需要更改u-boot代码才能正确支持3 addr模式,具体操作如下: 更改u-boot代码osdrv/opensource/ub ...

  8. FPGA配置 - 基于SPI FLASH的FPGA多重配置(Xilinx)

    原文地址:http://www.elecfans.com/emb/fpga/20140124334884_2.html IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用 ...

  9. lichee linux nfs,SPI Flash 系统编译

    在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. 这里 使用 MX25L25645G, 32M SPI fl ...

最新文章

  1. 使用EF操作Oracle数据库小计
  2. 【Linux 内核】Linux 内核源码目录说明 ③ ( lib 目录 | LICENSES 目录 | mm 目录 | net 目录 | samples 目录 | scripts 目录 )
  3. QDoc分组事物Grouping Things
  4. XGBoost对比RandomForest、GBDT、决策树、SVM,XGB+LR精度还能提升
  5. HTTP基础10--web(2)
  6. Spring Cloud Alibaba基础教程:与Dubbo的完美融合
  7. Sql server 数据转到 Mysql 数据库
  8. IAI OpenLab工业人工智能开放实验室白皮书(一)
  9. 95-38-035-Buffer-AbstractByteBuf
  10. spring源码之—Assert.notNull()
  11. 计算机usb速度设置,怎样提升USB2.0的速度 注册列表修改法【详解】
  12. 六种实现元素水平居中
  13. 深度学习之torch(一)MINIST手写字符分类
  14. get和post区别
  15. 5V限流IC,0.4A-4.8A可调限流芯片解决方案
  16. java里如何继承一个类_java如何继承类
  17. 英文名为什么最好不用joe?JOE英文名的寓意是什么?
  18. python 全栈什么意思_python全栈指的是什么意思
  19. 【区块链扩容】侧链技术 Plasma(Layer 2)
  20. 全球与中国3D透视导航技术市场现状及未来发展趋势(2022)

热门文章

  1. Java8日期时间API,Java高级多线程面试
  2. swagger ui 怎么输入对象_swagger ui页面参数不能输入
  3. Oracle配置EM(Enterprise Manager)
  4. java调用ffmepg_java调用ffmpeg施行视频转换
  5. 终于发布一个android应用程序到机锋市场,AppChina应用汇了
  6. getOrDefault()方法
  7. GTS Fail修改集锦com.google.android.xts.afw.AfwRequiredAppsOverlaysTest
  8. Android-插入短信及备份手机中的短信到SD卡
  9. 在windows系统上使用linux系统的最佳姿势
  10. android v7支持库使用,正确引用 Android Support v7 兼容支持库