使用CCS12.2为C2000(DSP28335)生成.bin文件和.hex文件

使用CCSv12为C2000生成.bin文件和.hex文件

前言

一般情况下使用CCS生成的.out文件搭配仿真器就可以升级C2000的程序,但如果想要使用串口或者CAN实现程序在线升级,则往往需要目标代码生成的.bin文件。本文将介绍如何使用CCSv12生成工程的.bin文件。

问题描述

笔者尝试了网络上流传了许多使用CCS生成.bin的方法,也使用过TI官方tiobj2bin.bat中的命令,但经过实操过后要么根本就不会生成.bin文件,要么会出现“‘C:’ 不是内部或外部命令,也不是可运行的程序或批处理文件”的报错。

解决方案

首先给出本文参考的解决方案:
优快云:CCS 10.3.1版本生成.bin文件
知乎:CCS如何生成hex和bin文件
各种方式都是围绕"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000" "${CG_TOOL_ROOT}/bin/hex2000" "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin" 这一命令展开,但不同的CCS版本在配置上有所不同,下面将以CCSv12.2和DSP28335为例,详细介绍如何生成.bin文件。

关于那一长串代码

这段代码看起来有点像使用Shell脚本或者Windows终端的语句,但笔者对此不太熟,将简单介绍一下大概是什么东西,以便针对不同的芯片架构去使用。
其实每一个分号里面都指向的是某个地址下的某个文件(可以不用管,但需要知道这个绝对地址在哪)。以${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin为例,这段代码实际上指向的是一个.bat文件,前面用花括号引用的内容是CCS的安装地址,具体看截图:

类似的,后面的"${BuildArtifactFileName}"应该是指当前工程的名字,可以不用管;"${BuildArtifactFileBaseName}.bin"应该是指要生成的.bin文件的名字,也可以不用管。后面三个分别是需要调用的几个工具,可以在CCS的安装目录下面找到,分别如下图所示:
ofd2000和hex2000
mkhex4bin

直接复制网上流传的代码为什么不行

笔者在实际操作过程中遇到过两个问题,第一个问题是只生成.bin而不生成.bin文件,这个问题笔者猜测可能是CCS版本不太一样;第二个问题就比较奇怪了,编译器报错:“‘C:’ 不是内部或外部命令,也不是可运行的程序或批处理文件”,这个报错的解决才有了这篇文章。

如何解决

第一步:先将生成hex文件的选项打开,CCS12里面按照下面的三个步骤进行:打开hex生成的选项、指定hex的格式、指定位宽和大小端,如下图:
Enable 'C2000' Hex Utility
指定hex的格式,用ASCII是最容易懂的
指定存储位宽和大小端
第二步:在下图位置复制这段代码:"C:\ti\ccs1220\ccs\utils\tiobj2bin\tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "C:\ti\ccs1220\ccs\tools\compiler\ti-cgt-c2000_22.6.0.LTS\bin\ofd2000" "C:\ti\ccs1220\ccs\tools\compiler\ti-cgt-c2000_22.6.0.LTS\bin\hex2000" "C:\ti\ccs1220\ccs\utils\tiobj2bin\mkhex4bin"。这个就是把那一长串里面几个文件的地址换成了绝对地址,这样做CCS就不会报无法识别"C:"的错误了。
生成.bin的选项

注意事项

  1. 最好在每次编译之前把生成的.hex和.bin都删除,不然编译器可能不会做任何事情(猜测可能是和makefile中的clean有关);
  2. 最好不要只生成bin文件,因为笔者只生成bin文件时编译器没有做任何事情,而且同时生成hex和bin有助于对照和后续烧写;
  3. 每个人CCS安装路径有所不同,在使用直接地址时不要直接复制文中的代码。
### 使用 Code Composer Studio (CCS) 生成 BIN 文件 为了使用 CCS 成功创建二进制(BIN文件,通常需要遵循一系列配置操作流程。以下是具体方法: #### 方法一:通过图形界面导出 在完成项目的编译之后,在项目浏览器中右键点击目标工程名,选择 `File` -> `Export...` 菜单项[^1]。 接着会弹出一个向导窗口,在这里可以选择要导出的内容类型。对于希望得到的最终输出为 `.bin` 格式的用户来说,则应该挑选 “Binary Files (*.bin)” 类型,并指定保存位置以及设置其他必要的参数,比如起始地址等。 #### 方法二:利用命令行工具链自定义链接脚本 如果倾向于更灵活的方式控制生成过程中的细节部分,那么可以通过修改或编写特定于应用需求的链接描述文件来实现这一点。当采用这种方式时,可以在构建过程中加入 `-Wl,-Tlinker_script.ld` 参数指向外部链接器脚本来指导 GCC 工具链工作[^3]。 需要注意的是,由于某些版本的 CCS 安装路径可能含有空格字符,这可能会引起 Makefile 解析错误。因此建议避免将程序安装到带有空格的名字下,或者适当调整环境变量以绕过此问题[^2]。 最后一步是确保已经正确设置了交叉编译器的相关选项,例如 CPU 架构、浮点单元支持等方面的信息,这些都直接影响着最终产出物的质量与兼容性。 一旦完成了上述准备工作,就可以按照常规方式进行编译连接操作了。成功完成后,将会获得所需的 .out 或者 .elf 形式的可执行映像;此时再借助额外提供的转换工具如 objcopy 将其转存为目标格式——即我们所需要的 .bin 文件[^4]。 ```bash arm-none-eabi-objcopy -O binary main.elf main.bin ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值