首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

OMAP-L138_FlashAndBootUtils使用及编译指导(2)

OMAP-L138_FlashAndBootUtils使用及编译指导(2)

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_PERIPHNUM定义。

5.   OMAP-L138_FlashAndBootUtils编译环境搭建

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

编译环境需要的几个工具如下[6]:

(1) cygwin
(2) .NET framework
(3) ARM Compiler tools(CodeSourcery G++ Lite)
(4) C6x Compiler Tools
(5) CCSV5

5.1  Cygwin安装

从 http:/ / www. cygwin. com/下载并运行在线安装工具setup.exe,注意安装路径中不能带有空格。具体步骤如下:
1)        选择从互联网安装;也可以选择先下载,再从本地安装。



图 9 cygwin安装界面 1

2)        选择安装路径。



图 10 cygwin安装界面 2

3)        可选择直接连接或使用代理。



图 11 cygwin安装界面 3

4)        选择从哪个网址或者服务器上进行下载。



图 12 cygwin安装界面 4

5)        选择安装包



图 13 cygwin安装界面 4

一般选择以下三项,其他默认即可。

• Devel-->make: The GNU version of the 'make' utility
• Devel-->subversion: A version control subsystem
• Editor-->vim (or similar)

安装后要先运行一次 cygwin 后,才会在 cygwin/home/下出现 Administrator 目录,进入该目录,修改.bashrc。
同时,需要验证变量TMP和 TEMP是否包含/tmp。使用如下命令:

echo $TMP
echo $TEMP

如果找不到"unset TMP" and "unset TEMP",可在cygwin\home\[user]\.bashrc 文件中添加如下命令创建:

export TMP=/tmp
export TEMP=/tmp

设置完后,重新打开cygwin即可。至此,cygwin安装完成。

5.2  NET framework

从下面网址下载安装最新的.NET Framework(4.0或者更高的版本)

http:/ / www. microsoft. com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en

安装默认路径为 C盘。然后将 C#编译器路径添加到 windows系统环境变量中。进入目录
C:\WINDOWS\Microsoft.NET\Framework查看软件的版本号并复制,如
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319。然后右键我的电脑->属性->高级->环境变量,如图 13所示,选择系统变量中的 path 点击编辑,在原有变量值后粘帖添加刚刚复制的内容,路径之间以’;’分隔。至此,Net Framework安装结束。



图 14 windows环境变量设置

5.3  C6x Compiler Tools

在 CCSV5安装目录下 ccsv5\tools\compiler\c6000_7.3.4即为 C6x编译器目录,在 CCSV3.3下的路径为CCStudio_v3.3\C6000\cgtools\bin。如果没有安装 CCS,从下面网址下载 TI的 C6x 编译工具并安装,如不确认版本则下载最新版本。

https:/ / www-a. ti. com/ downloads/ sds_support/ TICodegenerationTools/download. htm
将C6x编译器路径添加到windows环境变量。

5.4  ARM Compiler tools(CodeSourcery G++ Lite)

从下面网址下载安装 GCC交叉编译器。注意交叉编译工具的安装目录名不能含有空格,否则编译时会报错。

https://sourcery.mentor.com/sgpp/lite/arm/portal/release858

修改 OMAP-L138_FlashAndBootUtils_2_40\Common\build.mak文件中的 ARM_TOOLS_PATH变量为交叉编译器的安装路径。例如ARM_TOOLS_PATH?=C:\\CodeSourcery\\arm-2009q1-203\\

5.5  CCSV5

如果需要用 CCS编译工程,则安装 CCS。

6. 编译 OMAP-L138_FlashAndBootUtils

6.1查看环境变量

打开 cygwin,输入 export,查看环境变量是否设置成功。显示如下,黑色加粗的目录为之前添加的环境变量。






如未添加成功,可以使用如下命令添加:

export PATH=<arm-compiler-root>/bin:<MS-.NET-Root>:<C6000-Compiler-Root>/binPATH

6.2 编译工具包

cd OMAP-L138

如果只是编译命令行工具(如 sfh_OMAP-L138),而不需要重新编译 CCS 工程,则进入 GNU目录进行编译;如果只需要重新编译 CCS工程,则进入 CCS目录进行编译;如果两者都需要,则在 OMAP-L138这个目录进行编译。编译命令如下:

make clean
make

7. 使用serial flash utility常见问题及解决方法

7.1收不到“BOOTME”

在带电情况下,复位芯片,如果还是收不到正确的“BOOTME”,检查 BOOTMODE设置,串口终端波特率等参数设置,串口线连接方式。

7.2 停在 Waiting for SFT on the OMAP-L138…

如图 14 所示,这种情况的原因通常有两种:一是由于 DDR 参数配置不正确从而导致程序运行异常,不能返回正确的指令给主机;二是硬件原因,可能是焊接,或硬件连接上的错误造成的。可以通过仿真器连接目标板用 BSL库提供的测试程序验证一下 DDR,和相应的 flash。如果没有仿真器,可以通过间接的方法,比如用 AISgen 工具包里提供的 UART 启动工具 UartHost.exe 来加载运行测试程序,检测 DDR,flash 等,将测试结果通过串口回传显示,或者设置 GPIO的状态来反映。



图 15 sfh_OMAP-L138.exe命令运行异常

7.3 烧写中途停止

如图 15所示,烧写在中途停止,这种情况通常是因为 DDR工作不稳定,原因可能是 DDR布线问题导致信号完整性差,可以尝试降低 DDR时钟,并用示波器测量信号质量。

DDR不稳定也可能表现在能成功烧写,但运行不正常,通常表现为串口打印停在解压或启动内核阶段。



图 16 sfh_OMAP-L138.exe命令运行异常信息

7.4 启动后串口没打印

烧写成功,启动后串口没打印,检查U-boot里的调试串口配置,默认为UART2。

参考文献:
(1) http://sourceforge.net/projects/ ... es/OMAP-L138/v2.40/

(2) AISgen工具下载地址:http://www-s.ti.com/sc/techlit/sprab41.zip

(3) http://www.ti.com/lit/an/spraba5b/spraba5b.pdf

(4) http://processors.wiki.ti.com/in ... ility_for_OMAP-L138

(5) http://processors.wiki.ti.com/im ... ister_Calc_Rev4.zip

(6) http://processors.wiki.ti.com/in ... _Boot_Utils_Package
返回列表