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文件的繁琐过程。
相关文章
相关标签/搜索