新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > OMAP-L138_FlashAndBootUtils使用及编译指导

OMAP-L138_FlashAndBootUtils使用及编译指导

作者:时间:2013-06-06来源:网络收藏

QQ截图20130606134843.jpg

图 4 sfh_.exe –flash_noubl命令运行界面

重新上电,从图 5启动信息可见没有的运行信息,是直接从 UBoot运行的。

QQ截图20130606135150.jpg

3.3烧写和 UBoot

sfh_OMAP-L138.exe –targetType OMAP-L138 –flashType SPI_MEM -flash ubl-spi-ais.bin u-boot.bin命令执行结果显示如图 5所示。该命令将 ubl-spi-ais.bin写到 flash的起始地址,u-boot.bin写到 flash的0x10000的偏移地址。

QQ截图20130606135251.jpg

UBL和 UBoot烧写完后,关闭 EVM板电源,按图 6所示,将 EVM板的 S7开关设为 SPI flash启动。

QQ截图20130606135349.jpg

打开串口终端如 Hyper terminal,打开 EVM板电源,串口终端输出信息如图 7所示,表示和 UBoot成功烧写,并成功从 SPI flash启动

QQ截图20130606135443.jpg

图 8 终端调试信息输出

使用 sfh_OMAP-L138.exe烧写 UBL和 UBoot时,建议使用工具包自带的 UBL。因为 UBoot的烧写地址,要与 UBL的读取地址一致,这样 UBL运行时,才能正确的读取 UBoot。工具包自带的 UBL与烧写工具保证了这一点。其它版本的 UBL需要用户自行确认。

4. 根据硬件改动修改 serial flash utility

开发者自己的硬件板与 TI的 EVM比较,会影响工具使用的不同部分可能存在于:

(1) DDR型号

(2) FLASH型号

(3) 时钟频率

(4) UART配置

4.1 DDR参数修改

EVM板用的是 mDDR,大多数用户用的是 DDR2,需要修改 OMAP-L138/Common/src/device.c文件中函数Uint32 DEVICE_ExternalMemInit( )的 5个 DDR参数值。这个函数同样被 UBL调用,如果不用 UBL,则要在AISgen界面里配置正确的 DDR参数。

可使用 TI提供的 DDR寄存器配置工具[5]。根据 DDR手册进行 DDR参数的计算,

4.2 SPI flash

如果更改了 SPI flash的硬件连接,可在 OMAP-L138Commonincludedevice_spi.h文件中修改配置。

#define DEVICE_SPIBOOT_PERIPHNUM (1)//选择 SPI1

#define DEVICE_SPI_UBL_HDR_OFFSET (0*1024)//ubl在 SPI flash中的偏移地址

#define DEVICE_SPI_APP_HDR_OFFSET (64*1024)//application image在 SPI flash中的偏移地址如果更换了与 EVM板不同的 SPI flash,必要时需要修改如下两个文件:

OMAP-L138CommondriversincludeSpi_mem.h

OMAP-L138CommondriverssrcSpi_mem.c

4.3 NAND flash

NAND flash的数据位宽配置在 OMAP-L138Commonincludedevice_async_mem.h文件中定义:

#define DEVICE_ASYNC_MEM_NANDBOOT_BUSWIDTH (DEVICE_BUSWIDTH_8BIT)

如果 NAND flash更换的与 EVM上的不同,必要时需要修改如下两个文件

OMAP-L138CommondriversincludeDevice_nand.h

OMAP-L138CommondriverssrcDevice_nand.c

4.4 NOR flash

NOR flash是标准设备,除了时序参数之外,一般不需要修改,NOR flash相关代码文件如下:

OMAP-L138_FlashAndBootUtils_2_40Commondriverssrcnor.c

OMAP-L138_FlashAndBootUtils_2_40Commondriversincludenor.h

OMAP-L138Commonsrcdevice_async_mem.c

OMAP-L138Commonincludedevice_async_mem.h

OMAP-L138_FlashAndBootUtils_2_40Commondriverssrc async_mem.c

4.5 时钟及 PLL

如果外部输入时钟频率不是 24MHz,则需要 OMAP-L138Commonsrcdevice.c文件中函数DEVICE_PLL0Init()和 DEVICE_PLL1Init()的参数值。

函数原型 Uint32 DEVICE_PLL0Init(Uint8 clk_src, Uint8 pllm, Uint8 prediv, Uint8 postdiv, Uint8 div1 ,Uint8 div3, Uint8 div7)中 pllm是 PLL的倍频系数,主频计算公式为:

QQ截图20130606135611.jpg

函数 DEVICE_PLL1Init()参数含义与 PLL0的类同,为 DDR提供时钟。

4.6 UART配置

如果系统主频发生变化,相应的模块时钟也改变,调试串口的分频值需要做相应调整,否则串口输出会因为波特率不正确而出现乱码。根据不同的主频修改 OMAP-L138Commonsrcdevice_uart.c中 DEVICE_UART_config的 UART时钟分频系数 divider的值,得到合适的 UART波特率。

如果不是用 UART2做为调试串口,修改 OMAP-L138Commoninclude device_uart.h文件中的DEVICE_UART_PERIPHNUM定义。

5. OMAP-L138_FlashAndBootUtils编译环境搭建

在根据硬件改动,修改了代码后,需要对工具包重新编译,生成 UBL和 sfh_OMAP-L138.exe。如果在 Linux下使用此工具,需要在 Linux下进行编译(具体编译过程参考参考文献 4)。下面介绍如何在Windows环境下搭建OMAP-L138_FlashAndBootUtils的编译环境。



关键词: OMAPL138 串口烧写 UBL

评论


技术专区

关闭