4. 根據(jù)硬件改動(dòng)修改 serial flash utility
開(kāi)發(fā)者自己的硬件板與 TI的 EVM比較,會(huì)影響工具使用的不同部分可能存在于:
(1) DDR型號(hào)
?。?) FLASH型號(hào)
?。?) 時(shí)鐘頻率
?。?) UART配置
4.1 DDR參數(shù)修改
EVM板用的是 mDDR,大多數(shù)用戶(hù)用的是 DDR2,需要修改 OMAP-L138/Common/src/device.c文件中函數(shù)Uint32 DEVICE_ExternalMemInit( )的 5個(gè) DDR參數(shù)值。這個(gè)函數(shù)同樣被 UBL調(diào)用,如果不用 UBL,則要在AISgen界面里配置正確的 DDR參數(shù)。
可使用 TI提供的 DDR寄存器配置工具[5]。根據(jù) DDR手冊(cè)進(jìn)行 DDR參數(shù)的計(jì)算,
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,必要時(shí)需要修改如下兩個(gè)文件:
OMAP-L138\Common\drivers\include\Spi_mem.h
OMAP-L138\Common\drivers\src\Spi_mem.c
4.3 NAND flash
NAND flash的數(shù)據(jù)位寬配置在 OMAP-L138\Common\include\device_async_mem.h文件中定義:
#define DEVICE_ASYNC_MEM_NANDBOOT_BUSWIDTH (DEVICE_BUSWIDTH_8BIT)
如果 NAND flash更換的與 EVM上的不同,必要時(shí)需要修改如下兩個(gè)文件
OMAP-L138\Common\drivers\include\Device_nand.h
OMAP-L138\Common\drivers\src\Device_nand.c
4.4 NOR flash
NOR flash是標(biāo)準(zhǔn)設(shè)備,除了時(shí)序參數(shù)之外,一般不需要修改,NOR flash相關(guān)代碼文件如下:
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 時(shí)鐘及 PLL
如果外部輸入時(shí)鐘頻率不是 24MHz,則需要 OMAP-L138\Common\src\device.c文件中函數(shù)DEVICE_PLL0Init()和 DEVICE_PLL1Init()的參數(shù)值。
函數(shù)原型 Uint32 DEVICE_PLL0Init(Uint8 clk_src, Uint8 pllm, Uint8 prediv, Uint8 postdiv, Uint8 div1 ,Uint8 div3, Uint8 div7)中 pllm是 PLL的倍頻系數(shù),主頻計(jì)算公式為:
函數(shù) DEVICE_PLL1Init()參數(shù)含義與 PLL0的類(lèi)同,為 DDR提供時(shí)鐘。
4.6 UART配置
如果系統(tǒng)主頻發(fā)生變化,相應(yīng)的模塊時(shí)鐘也改變,調(diào)試串口的分頻值需要做相應(yīng)調(diào)整,否則串口輸出會(huì)因?yàn)椴ㄌ芈什徽_而出現(xiàn)亂碼。根據(jù)不同的主頻修改 OMAP-L138\Common\src\device_uart.c中 DEVICE_UART_config的 UART時(shí)鐘分頻系數(shù) divider的值,得到合適的 UART波特率。
如果不是用 UART2做為調(diào)試串口,修改 OMAP-L138\Common\include\ device_uart.h文件中的DEVICE_UART_PERIPHNUM定義。
5. OMAP-L138_FlashAndBootUtils編譯環(huán)境搭建
在根據(jù)硬件改動(dòng),修改了代碼后,需要對(duì)工具包重新編譯,生成 UBL和 sfh_OMAP-L138.exe。如果在 Linux下使用此工具,需要在 Linux下進(jìn)行編譯(具體編譯過(guò)程參考參考文獻(xiàn) 4)。下面介紹如何在Windows環(huán)境下搭建OMAP-L138_FlashAndBootUtils的編譯環(huán)境。
編譯環(huán)境需要的幾個(gè)工具如下[6]:
(1) cygwin
?。?) .NET framework
?。?) ARM Compiler tools(CodeSourcery G++ Lite)
?。?) C6x Compiler Tools
(5) CCSV5
5.1 Cygwin安裝
從 http:/ / www. cygwin. com/下載并運(yùn)行在線安裝工具setup.exe,注意安裝路徑中不能帶有空格。具體步驟如下:
1) 選擇從互聯(lián)網(wǎng)安裝;也可以選擇先下載,再?gòu)谋镜匕惭b。
圖 9 cygwin安裝界面 1
2) 選擇安裝路徑。
圖 10 cygwin安裝界面 2
3) 可選擇直接連接或使用代理。
圖 11 cygwin安裝界面 3
4) 選擇從哪個(gè)網(wǎng)址或者服務(wù)器上進(jìn)行下載。
圖 12 cygwin安裝界面 4
5) 選擇安裝包
圖 13 cygwin安裝界面 4
一般選擇以下三項(xiàng),其他默認(rèn)即可。
? Devel--》make: The GNU version of the ‘make’ utility
? Devel--》subversion: A version control subsystem
? Editor--》vim (or similar)
安裝后要先運(yùn)行一次 cygwin 后,才會(huì)在 cygwin/home/下出現(xiàn) Administrator 目錄,進(jìn)入該目錄,修改.bashrc。
同時(shí),需要驗(yàn)證變量TMP和 TEMP是否包含/tmp。使用如下命令:
echo $TMP
echo $TEMP
如果找不到“unset TMP” and “unset TEMP”,可在cygwin\home\[user]\.bashrc 文件中添加如下命令創(chuàng)建:
export TMP=/tmp
export TEMP=/tmp
設(shè)置完后,重新打開(kāi)cygwin即可。至此,cygwin安裝完成。
評(píng)論