OMAP-L138_FlashAndBootUtils使用及编译指导
图 3 AISgen 配置界面
该命令将 AIS格式的 UBoot文件写到 flash的起始地址。命令执行显示结果如图 4所示:重新上电,从图 5启动信息可见没有 UBL的运行信息,是直接从 UBoot运行的。
图 4 sfh_OMAPL138.exe –flash_noubl命令运行界面
重新上电,从图 5启动信息可见没有 UBL的运行信息,是直接从 UBoot运行的。
图 5 从 UBoot直接运行界面
3.3烧写 UBL和 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的偏移地址。
图 6 sfh_OMAPL138.exe –flash命令运行界面
UBL和 UBoot烧写完后,关闭 EVM板电源,按图 6所示,将 EVM板的 S7开关设为 SPI flash启动。
图 7 S7开关设置为 SPI Flash启动
打开串口终端如 Hyper terminal,打开 EVM板电源,串口终端输出信息如图 7所示,表示 UBL和 UBoot成功烧写,并成功从 SPI flash启动
图 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-L138\Common\include\device_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-L138\Common\drivers\include\Spi_mem.h
OMAP-L138\Common\drivers\src\Spi_mem.c
4.3 NAND flash
NAND flash的数据位宽配置在 OMAP-L138\Common\include\device_async_mem.h文件中定义:
#define DEVICE_ASYNC_MEM_NANDBOOT_BUSWIDTH (DEVICE_BUSWIDTH_8BIT)
如果 NAND flash更换的与 EVM上的不同,必要时需要修改如下两个文件
OMAP-L138\Common\drivers\include\Device_nand.h
OMAP-L138\Common\drivers\src\Device_nand.c
4.4 NOR flash
NOR flash是标准设备,除了时序参数之外,一般不需要修改,NOR flash相关代码文件如下:
OMAP-L138_FlashAndBootUtils_2_40\Common\drivers\src\nor.c
OMAP-L138_FlashAndBootUtils_2_40\Common\drivers\include\nor.h
OMAP-L138\Common\src\device_async_mem.c
OMAP-L138\Common\include\device_async_mem.h
OMAP-L138_FlashAndBootUtils_2_40\Common\drivers\src\ async_mem.c
4.5 时钟及 PLL
如果外部输入时钟频率不是 24MHz,则需要 OMAP-L138\Common\src\device.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的倍频系数,主频计算公式为:
函数 DEVICE_PLL1Init()参数含义与 PLL0的类同,为 DDR提供时钟。
4.6 UART配置
如果系统主频发生变化,相应的模块时钟也改变,调试串口的分频值需要做相应调整,否则串口输出会因为波特率不正确而出现乱码。根据不同的主频修改 OMAP-L138\Common\src\device_uart.c中 DEVICE_UART_config的 UART时钟分频系数 divider的值,得到合适的 UART波特率。
如果不是用 UART2做为调试串口,修改 OMAP-L138\Common\include\ device_uart.h文件中的DEVICE_UART_PERI
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)
- 浪涌抑制器IC简化了危险环境中电子设备的本质安全势垒设计(08-19)
- 严酷的汽车环境要求高性能电源转换(08-17)
- 适用于工业能源采集的技术 (08-10)
- 单片式电池充电器简化太阳能供电设计(08-20)