C2000系列DSP生成hex/bin文件并使用串口下载程序的方法
1.尝试脱离.out文件下载而转换成hex、bin文件来实现安全更新DSP程序。
C2000系列DSP生成hex/bin文件并使用串口下载程序的方法
概述
1.尝试脱离.out文件下载而转换成二进制文件来实现远程更新DSP程序。
2.使用映像工具载入程序。
一、生成.bin文件
1.核心命令:
注意保证以下代码处于同一行。
"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000.exe" "${CG_TOOL_ROOT}/bin/hex2000.exe" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe"
其核心原理大概能从命令中推论出,使用hex2000.exe
先把.out转换成hex格式,再从.hex使用mkhex4bin.exe
转换成.bin文件,这几个工具都是由TI提供的,位于以下文件夹中。
C:\ti\ccs1110\ccs\tools\compiler\ti-cgt-c2000_21.6.0.LTS\bin
C:\ti\ccs1110\ccs\utils\tiobj2bin
将以上代码粘贴进CCS的属性->Build->Steps->Post-build steps
栏中。
再编译就能在文件夹中生成一个bin文件了。
但是此时并没有生成hex文件,想要生成hex,还需要其余的办法。
二、生成.hex文件
这里可以使用CCS自带的hex utility工具,使能后会多出来几个选项(橙色)。
随后需要配置hex的设置,这里可以参考官网的说明:
1.修改hex的Memory width与ROM width,均为16
这里是TI官网对于该宽度的解释:
内存宽度是内存系统的物理宽度(以位为单位),通常与目标处理器宽度相同,(即)16 位处理器具有 16 位内存架构。然而,一些应用程序可能需要将目标字分解为多个、连续和更窄的记忆字。默认情况下,十六进制转换实用程序将内存宽度设置为目标>宽度,但这可以使用 --memwidth 选项进行更改。
ROM 宽度决定了 hex 实用程序如何将数据划分为输出文件。在较旧的十六进制编程器中,ROM 宽度用于指定每个 ROM 设备>的物理宽度(以位为单位)。在目标文件数据映射到内存字之后,内存字被分成一个或多个输出文件。大多数现代闪存编程器>不需要特定的 ROM 宽度,但最好检查编程器是否施加了任何限制。
为 memwidth 和 romwidth 指定的值决定了十六进制输出文件的数量:
如果内存宽度≥ROM宽度:文件数=内存宽度÷ROM宽度
如果内存宽度 < ROM 宽度:文件数 = 1
例如,对于 16 的内存宽度,您可以指定 ROM 宽度值为 16 并获得一个包含 16 位字的单个输出文件。或者您可以使用 ROM 宽度值 8 来获得两个文件,每个文件包含每个字的 8 位。
十六进制转换实用程序使用的默认 ROM 宽度(未明确指定时)取决于输出格式:
对于除 TI-Tagged 之外的所有十六进制格式,默认 ROM 宽度为 8 位。
对于 TI-Tagged,默认 ROM 宽度为 16 位。
例如,如果您使用的是 Cortex ARM 设备(默认内存宽度为 32),并且您选择 Intel hex 格式(默认 ROM 宽度设置为 8),则 hex 实用程序将生成 4 个输出 hex文件。要获取单个输出文件,您可以将 --romwidth 选项设置为 32。
2.选择输出的hex格式,这里使用Intel的格式
这样就可以了,再编译一下,可以看到输出了.hex以及.bin文件。
三、下载二进制文件的工具
既然是二进制文件,自然就不能用CCS自带的【调试】进行下载了,还需要另一个软件,即C2Prog。
C2Prog 是用于 TI C2000™ MCU 的工业级闪存编程工具。C2Prog 不仅仅依靠 JTAG 作为编程工具与 MCU 之间的通信接口,还支持 RS-232、RS-485、TCP/IP、USB 和 CAN(控制器局域网)。因此,该编程器非常适合部署在 JTAG 端口通常无法访问的领域
界面还是很直白的,只不过只能下载.out/.hex/.ehx文件,若是.bin则需要其他的镜像方式了,比如IAP中常用的利用bootloader写入flash。
四、结语
经过测试,若只需要生成.bin文件,并不需要打开hex utility。
参考资料:
[1] CCSV6 *.out file convert to *.bin
[2] Hex utility in CCS
[3] Codeskin C2Prog
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)