AM335x SPI Flash启动说明

AM335x SPI Flash启动说明_第1张图片

本文主要描述如何在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,如下图所示:



AM335x SPI Flash启动说明_第2张图片

二:编译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 位)、校验位(无)、数据流控制(无),如下图所示:

AM335x SPI Flash启动说明_第3张图片

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

AM335x SPI Flash启动说明_第4张图片

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

AM335x SPI Flash启动说明_第5张图片

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

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


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

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

AM335x SPI Flash启动说明_第6张图片

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

AM335x SPI Flash启动说明_第7张图片

然后,选择发送,传送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

AM335x SPI Flash启动说明_第8张图片

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

AM335x SPI Flash启动说明_第9张图片

然后,选择发送,传输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

AM335x SPI Flash启动说明_第10张图片

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

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

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

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

 








你可能感兴趣的:(CoM-335x)