TMS320C6678开发笔记1-6---C6678单核烧写程序

第6节  单核烧写加载程序

6.1节  TI参考文档

参考文档:《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
  • C6657 EVM SPI boot example with DDR initialization
  • C6657 EVM NAND boot example
  • 里面简介了工具的使用

参考文章:

《C6678学习——SPI NOR FLASH多核引导资料汇总及个人分享》

https://blog.csdn.net/kunkliu/article/details/105772726

《TI DSP TMS320C66x学习笔记之SPI Nor Flash多核程序烧写》

https://blog.csdn.net/kunkliu/article/details/105773215

《C6678十六进制转换工具Hex6x介绍》

https://blog.csdn.net/kunkliu/article/details/105774996

《C6678镜像工具链介绍》

https://blog.csdn.net/kunkliu/article/details/105987798

《C6678多核程序烧写固化》

https://blog.csdn.net/kunkliu/article/details/105988210

 

6.2节  BOOTMOD与PIN的对应关系

TMS320C6678开发笔记1-6---C6678单核烧写程序_第1张图片

 

  • GPIO0对应大小端选择
  • GPIO1对应BOOTMODE0
  • GPIO2对应BOOTMODE1
  • 依次类推
  • GPIO13对应BOOTMODE12

6.3节  SPI NOR FLASH烧写

6.3.1 烧写思想

  • out文件经过一系列转换为特定格式,通过NOR Flash烧写工程将转换后的文件烧写到flash中。
  • 然后将开发板设置为SPI NOR Flash启动,开发板即可成功运行。
  • 具体过程如下:下图为多核烧写过程,单核烧写中没有mergebtbl过程

TMS320C6678开发笔记1-6---C6678单核烧写程序_第2张图片

  • 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文件:

TMS320C6678开发笔记1-6---C6678单核烧写程序_第3张图片

TMS320C6678开发笔记1-6---C6678单核烧写程序_第4张图片

bin文件:

TMS320C6678开发笔记1-6---C6678单核烧写程序_第5张图片

TMS320C6678开发笔记1-6---C6678单核烧写程序_第6张图片

6.3.3使用创龙开发板例程烧写 NO DDR

开发板上可以测试通过Demo\Factory Reset\Tools\SPI NorFlash Image

TMS320C6678开发笔记1-6---C6678单核烧写程序_第7张图片

  • 制作脚本如下:

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

TMS320C6678开发笔记1-6---C6678单核烧写程序_第8张图片

  • 制作脚本如下:

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
  • 使用步骤:

1、将setup.bat和spiboot.bat中的路径设置为本机真正的路径

2、先运行setup.bat

3、修改nysh.spi.map文件和创龙app_spirom.map.pp文件一样

4、运行romparse nysh.spi.map命令,然后修改i2crom.ccs文件将第9行0x01f40051改为0x01f40000,否则将不能运行

5、将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

TMS320C6678开发笔记1-6---C6678单核烧写程序_第9张图片

  • 制作脚本如下:
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文件不再进行字节翻转
  • 使用步骤:

1、将生成的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目录下。

2、运行spiboot_single_noddr.bat,生成spirom_le.bin

3、将spirom_le.bin拷贝到NOR Flash工程进行烧写,然后拨到SPI NOR启动,即可成功。

  • 注意事项:

1、钱丰使用的工具和TI官网提供的工具一样

2、钱丰增加了modify命令,实现了字节翻转功能

3、钱丰提供的脚本中没有实现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参数表结构体。从该结构体可以得到参数表变量的用途及占用字宽。

TMS320C6678开发笔记1-6---C6678单核烧写程序_第10张图片

TMS320C6678开发笔记1-6---C6678单核烧写程序_第11张图片

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文件的繁琐过程。

 

你可能感兴趣的:(TMS320C6678)