<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > OMAP-L138_FlashAndBootUtils使用及編譯指導(dǎo)

          OMAP-L138_FlashAndBootUtils使用及編譯指導(dǎo)

          作者: 時間:2013-06-06 來源:網(wǎng)絡(luò) 收藏

          QQ截圖20130606134843.jpg

          圖 4 sfh_.exe –flash_noubl命令運(yùn)行界面

          重新上電,從圖 5啟動信息可見沒有的運(yùn)行信息,是直接從 UBoot運(yùn)行的。

          QQ截圖20130606135150.jpg

          3.3燒寫和 UBoot

          sfh_OMAP-L138.exe –targetType OMAP-L138 –flashType SPI_MEM -flash ubl-spi-ais.bin u-boot.bin命令執(zhí)行結(jié)果顯示如圖 5所示。該命令將 ubl-spi-ais.bin寫到 flash的起始地址,u-boot.bin寫到 flash的0x10000的偏移地址。

          QQ截圖20130606135251.jpg

          UBL和 UBoot燒寫完后,關(guān)閉 EVM板電源,按圖 6所示,將 EVM板的 S7開關(guān)設(shè)為 SPI flash啟動。

          QQ截圖20130606135349.jpg

          打開串口終端如 Hyper terminal,打開 EVM板電源,串口終端輸出信息如圖 7所示,表示和 UBoot成功燒寫,并成功從 SPI flash啟動

          QQ截圖20130606135443.jpg

          圖 8 終端調(diào)試信息輸出

          使用 sfh_OMAP-L138.exe燒寫 UBL和 UBoot時,建議使用工具包自帶的 UBL。因為 UBoot的燒寫地址,要與 UBL的讀取地址一致,這樣 UBL運(yùn)行時,才能正確的讀取 UBoot。工具包自帶的 UBL與燒寫工具保證了這一點(diǎn)。其它版本的 UBL需要用戶自行確認(rèn)。

          4. 根據(jù)硬件改動修改 serial flash utility

          開發(fā)者自己的硬件板與 TI的 EVM比較,會影響工具使用的不同部分可能存在于:

          (1) DDR型號

          (2) FLASH型號

          (3) 時鐘頻率

          (4) UART配置

          4.1 DDR參數(shù)修改

          EVM板用的是 mDDR,大多數(shù)用戶用的是 DDR2,需要修改 OMAP-L138/Common/src/device.c文件中函數(shù)Uint32 DEVICE_ExternalMemInit( )的 5個 DDR參數(shù)值。這個函數(shù)同樣被 UBL調(diào)用,如果不用 UBL,則要在AISgen界面里配置正確的 DDR參數(shù)。

          可使用 TI提供的 DDR寄存器配置工具[5]。根據(jù) DDR手冊進(jìn)行 DDR參數(shù)的計算,

          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的數(shù)據(jù)位寬配置在 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是標(biāo)準(zhǔn)設(shè)備,除了時序參數(shù)之外,一般不需要修改,NOR flash相關(guān)代碼文件如下:

          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文件中函數(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ù),主頻計算公式為:

          QQ截圖20130606135611.jpg

          函數(shù) DEVICE_PLL1Init()參數(shù)含義與 PLL0的類同,為 DDR提供時鐘。

          4.6 UART配置

          如果系統(tǒng)主頻發(fā)生變化,相應(yīng)的模塊時鐘也改變,調(diào)試串口的分頻值需要做相應(yīng)調(diào)整,否則串口輸出會因為波特率不正確而出現(xiàn)亂碼。根據(jù)不同的主頻修改 OMAP-L138Commonsrcdevice_uart.c中 DEVICE_UART_config的 UART時鐘分頻系數(shù) divider的值,得到合適的 UART波特率。

          如果不是用 UART2做為調(diào)試串口,修改 OMAP-L138Commoninclude device_uart.h文件中的DEVICE_UART_PERIPHNUM定義。

          5. OMAP-L138_FlashAndBootUtils編譯環(huán)境搭建

          在根據(jù)硬件改動,修改了代碼后,需要對工具包重新編譯,生成 UBL和 sfh_OMAP-L138.exe。如果在 Linux下使用此工具,需要在 Linux下進(jìn)行編譯(具體編譯過程參考參考文獻(xiàn) 4)。下面介紹如何在Windows環(huán)境下搭建OMAP-L138_FlashAndBootUtils的編譯環(huán)境。



          關(guān)鍵詞: OMAPL138 串口燒寫 UBL

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();