TMS320C6678開發筆記1-6---C6678單核燒寫程序

6節  單核燒寫加載程序

6.1節  TI參考文檔

參考文檔:《KeystoneI Bootloader Resources and FAQ》講的很是好,建議必定要看php

https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29app

裏面有三個工程:工具

  • 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》講的很是好,建議必定要看

https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29

裏面有幾個工程:

  • 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啓動,便可成功。

  • 注意事項:
  1. 創龍的romparse和TI官網的romparse命令不同,創龍版本的romparse通過了特定修改。
  2. romparse 的做用是合併boot表和boot參數表,參數配置表文件*.map做爲輸入。
  3. 不一樣的啓動方式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》講的很是好,建議必定要看

https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29

裏面有幾個工程:

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 燒寫思想

  1. 先將IBL鏡像燒寫到EEPROM中,而後將out文件直接燒到NOR/NAND Flash中。
  2. 將開發板設置爲I2C EEPROM方式啓動。
  3. 啓動後開發本先運行IBL,再由IBL加載Flash中的代碼運行,實現I2C—NOR / I2C—NAND的二次引導啓動。(創龍開發板使用此種方式啓動)
  4. 因爲IBL能夠直接解釋out文件,全部能夠直接將out文件燒寫到Flash中,省去了out文件轉換爲bin文件的繁瑣過程。
相關文章
相關標籤/搜索