第6節 單核燒寫加載程序
6.1節 TI參考文檔
參考文檔:《KeystoneI Bootloader Resources and FAQ》講的很是好,建議必定要看php
裏面有三個工程:工具
- C6678 EVM SPI boot example
- C6657 EVM SPI boot example with DDR initialization
- C6657 EVM NAND boot example
- 裏面簡介了工具的使用
參考文章:學習
《C6678學習——SPI NOR FLASH多核引導資料彙總及我的分享》測試
https://blog.csdn.net/kunkliu/article/details/105772726ui
《TI DSP TMS320C66x學習筆記之SPI Nor Flash多核程序燒寫》spa
https://blog.csdn.net/kunkliu/article/details/105773215.net
《C6678十六進制轉換工具Hex6x介紹》code
https://blog.csdn.net/kunkliu/article/details/105774996blog
《C6678鏡像工具鏈介紹》
https://blog.csdn.net/kunkliu/article/details/105987798
《C6678多核程序燒寫固化》
https://blog.csdn.net/kunkliu/article/details/105988210
6.2節 BOOTMOD與PIN的對應關係
- GPIO0對應大小端選擇
- GPIO1對應BOOTMODE0
- GPIO2對應BOOTMODE1
- 依次類推
- GPIO13對應BOOTMODE12
6.3節 SPI NOR FLASH燒寫
6.3.1 燒寫思想
- 將out文件通過一系列轉換爲特定格式,經過NOR Flash燒寫工程將轉換後的文件燒寫到flash中。
- 而後將開發板設置爲SPI NOR Flash啓動,開發板便可成功運行。
- 具體過程以下:下圖爲多核燒寫過程,單核燒寫中沒有mergebtbl過程
- hex6x 配合.rmd文件(有幾個.out文件就須要幾個.rmd文件,描述輸出控制、引導選項、存儲器選項等內容)生成片上引導加載器加載程序所需的引導表,輸出文件爲*.btbl
- mergebtbl將*.btbl按照必定的順序連接起來(單核燒寫沒有此步驟)
- b2i2c 將*.btbl轉換成i2c/spi格式,把boot表劃分紅0x80字節塊並附加長度(length)和校驗碼(checksum)
- b2ccs將*.btbl.i2c轉換成.i2c.ccs,CCSV5 IDE接收的.dat格式,加載到DDR3中去。並手動將i2crom.ccs中的第9行51改成00。
- romparse 合併boot表和boot參數表,參數配置表文件*.map做爲輸入。
- byteswapccs將.dat轉換成ROM Bootloader代碼可以識別的大端模式(.dat文件能夠直接燒寫)
- ccs2bin將.dat文件轉換成.bin文件(.bin文件能夠直接燒寫)
- 具體工具使用細節可參考第10節的燒寫工具介紹
6.3.2 bin & dat兩種文件能夠燒寫
- TI官網和創龍開發板燒寫的是bin文件
- 錢豐提供的例程燒寫的是dat文件
- 經過ccs2bin.exe工具能夠將dat文件轉換爲bin問件
- 燒寫是注意nor_writer_input.txt文件中的燒寫名稱的修改
兩種文件加載DDR中選擇項不一樣:
dat文件:
bin文件:
6.3.3使用創龍開發板例程燒寫 NO DDR
開發板上能夠測試經過Demo\Factory Reset\Tools\SPI NorFlash Image
- 製做腳本以下:
Buid.bat
@echo off Bin\hex6x -order L Config\app.rmd app.out Bin\b2i2c app.b app.spi.b Bin\b2ccs app.spi.b app.spi.ccs Bin\romparse Config\app_spirom.map.pp Bin\ccs2bin -swap i2crom.ccs nor.bin del *.ccs del *.b echo Finish!
- 使用步驟:
將編譯出的xxx.out文件更名爲app.out放到SPI NorFlash Image目錄下運行Build.bat,生成nor.bin,而後經過NOR FLASH方法燒寫到NOR Flash中,設置成SPI啓動,上電便可看到程序運行。
6.3.4使用TI官方例程燒寫NO DDR
例程下載地址:
參考文檔:《KeystoneI Bootloader Resources and FAQ》講的很是好,建議必定要看
裏面有幾個工程:
- C6678 EVM SPI boot example
使用TI官方例程C6678_directROM_boot_examples.zip
- 製做腳本以下:
Buid.bat
@echo off set C6000_FOLDER=C:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.2.2 set PDK_PACKAGES=C:/ti/pdk_C6678_1_1_2_6/packages set PATH=%C6000_FOLDER%\bin;%PATH%
spiboot.bat
set IBL_UTIL=C:\ti\pdk_c667x_2_0_15\packages\ti\boot\ibl\src\util @REM FOR PROCESSOR SDK RTOS change the path to SDK_INSTALL_PATH\pdk\pdk_c66xx_2_0_0\packages\ti\boot\ibl\src\util hex6x led_play.rmd //與創龍生成文件同樣 %IBL_UTIL%\btoccs\b2i2c led_play.btbl led_play.btbl.i2c //與創龍生成文件同樣 %IBL_UTIL%\btoccs\b2ccs led_play.btbl.i2c led_play.i2c.ccs //與創龍生成文件同樣 %IBL_UTIL%\romparse\romparse nysh.spi.map //與創龍生成文件不同 pause //此處暫停,修改i2crom.ccs文件將第9行0x01f40051改成0x01f40000,不然將不能運行 copy i2crom.ccs spirom_le.dat byteswapccs i2crom.ccs spirom_le_swap.dat copy spirom_le_swap.dat app.dat %IBL_UTIL%\btoccs\ccs2bin i2crom.ccs spirom_le.bin %IBL_UTIL%\btoccs\ccs2bin -swap i2crom.ccs spirom_le.swap.bin
- 使用步驟:
一、將setup.bat和spiboot.bat中的路徑設置爲本機真正的路徑
二、先運行setup.bat
三、修改nysh.spi.map文件和創龍app_spirom.map.pp文件同樣
四、運行romparse nysh.spi.map命令,而後修改i2crom.ccs文件將第9行0x01f40051改成0x01f40000,不然將不能運行
五、將spirom_le.swap.bin拷貝到NOR Flash工程進行燒寫,而後撥到SPI NOR啓動,便可成功。
- 注意事項:
- 創龍的romparse和TI官網的romparse命令不同,創龍版本的romparse通過了特定修改。
- romparse 的做用是合併boot表和boot參數表,參數配置表文件*.map做爲輸入。
- 不一樣的啓動方式boot para table不同
6.3.5使用錢豐例程燒寫NO DDR
例程下載地址:https://blog.csdn.net/kunkliu/article/details/105773215
燒寫工具連接: https://pan.baidu.com/s/1em4jWjbskpMmNd1uzscjjA 提取碼: 82qg
- 製做腳本以下:
hex6x simple.rmd b2i2c simple.btbl simple.btbl.i2c b2ccs simple.btbl.i2c simple.i2c.ccs romparse nysh.spi.map //錢豐增長了modify命令,實現了字節翻轉,和將i2crom.ccs文件將第9行0x01f40051改成0x01f40000功能 modify i2crom.ccs spirom_le.dat ccs2bin spirom_le.dat spirom_le.bin // 此處轉bin文件再也不進行字節翻轉
- 使用步驟:
一、將生成的led_play.out文件更名爲simple.out,放到E:\ft6678\doc\DSP_C6657\spi_boot_suit_v2.3.1_release\spi_boot_suit_v2.3\1_utilities\1.6678\singlecore_boot_not_support_large_binary目錄下。
二、運行spiboot_single_noddr.bat,生成spirom_le.bin
三、將spirom_le.bin拷貝到NOR Flash工程進行燒寫,而後撥到SPI NOR啓動,便可成功。
- 注意事項:
一、錢豐使用的工具和TI官網提供的工具同樣
二、錢豐增長了modify命令,實現了字節翻轉功能
三、錢豐提供的腳本中沒有實現ccs轉bin的步驟,必須先將TI官網的ccs2bin工具放到錢豐的腳本目錄下,腳本最後加上如下語句便可
ccs2bin spirom_le.dat spirom_le.bin
6.3.6使用錢豐例程燒寫With DDR
例程下載地址:https://blog.csdn.net/kunkliu/article/details/105773215
燒寫工具連接: https://pan.baidu.com/s/1em4jWjbskpMmNd1uzscjjA 提取碼: 82qg
- 經測試發現上述3中燒寫方法(6.1.3.2 6.1.3.3 6.3.1.4),沒有提供帶有DDR初始化的製做腳本,因此編寫的代碼必須在DSP內部存儲空間內才能夠運行。
- 錢豐提供了DDR初始化腳本。
- 在6.1.3.4的基礎上點擊spiboot_single.bat腳本便可生成帶有DDR初始化的燒寫文件
- 製做腳本以下:
hex6x simple.rmd AddDdrTable6678 simple.btbl // 增長DDR初始化數據 b2i2c simple.btbl simple.btbl.i2c b2ccs simple.btbl.i2c simple.i2c.ccs romparse nysh.spi.map modify i2crom.ccs spirom_le.dat ccs2bin spirom_le.dat spirom_le.bin
- 注意事項:與使用錢豐例程燒寫NO DDR相同
6.3.7使用TI官方例程燒寫With DDR
例程下載地址:
參考文檔:《KeystoneI Bootloader Resources and FAQ》講的很是好,建議必定要看
裏面有幾個工程:
C6657 EVM SPI boot example with DDR initialization
- TI提供的官網例程中只是實現了程序能夠在DDR中運行,但沒有提供DDR初始化配置表
6.3.8 BOOT ParameterTable的定義
- 參考文章:《sprugy5b——KeyStone Architecture Bootloader.pdf》
裏面有BOOT Parameter的定義描述。
- 燒寫數據須要包含配置bootloader的Boot參數表信息,romparse工具將Boot參數表添加到.ccs文件的對應位置。
- 不一樣的bootloader方式對應的Boot參數表內容不一樣。
附帶文件tiboot.h定義了對應不一樣Boot方式的boot參數表結構體。從該結構體能夠獲得參數表變量的用途及佔用字寬。
6.3.9 DDR Configuration Table的定義
暫未記錄
6.4節 I2C IBL二次啓動單核燒寫
6.4.1 燒寫思想
- 先將IBL鏡像燒寫到EEPROM中,而後將out文件直接燒到NOR/NAND Flash中。
- 將開發板設置爲I2C EEPROM方式啓動。
- 啓動後開發本先運行IBL,再由IBL加載Flash中的代碼運行,實現I2C—NOR / I2C—NAND的二次引導啓動。(創龍開發板使用此種方式啓動)
- 因爲IBL能夠直接解釋out文件,全部能夠直接將out文件燒寫到Flash中,省去了out文件轉換爲bin文件的繁瑣過程。