如何生成vcan_Kinetis.bin文件

本文介绍了一种简单的方法来自动生成vcan_Kinetis.bin文件,这对于测试自己编写的代码至关重要。只需在IAR项目的选项中将输出格式更改为二进制,然后编译程序,bin文件便会自动生成在指定的文件夹下。

前面一片文章提到了如何使用UD下载测试程序,文章中需要使用vcan_Kinetis.bin文件,之前测试用到的是官方提前编译好的文件,现在来看一下如何自己生成vcan_Kinetis.bin文件以便于测试自己写的代码。

方法很简答,Project>>Options>>Output Converter

将Output format改为binary即可,到这里配置部分就结束了。

接下来只要点击编译程序,bin文件就会生成到相应的文件夹中去。

如上图所示,文件将生成到代码文件下的\Prj\IAR\MK66FX18_Debug\Exe文件夹下。

### 查找符号引用或定义的方法 在对象文件中查找符号的引用或定义,通常需要使用专门的工具来解析目标文件格式。以下是一些可能的步骤和工具,用于定位符号 `Carema_Blind_Flag` 在文件 `CtAp_CanAppIf_VCAN_TX.obj` 和 `CtAp_AppIf_Diag.obj` 中的定义或引用。 #### 1. 使用 `nm` 工具 `nm` 是一个常用的命令行工具,用于列出目标文件中的符号表。通过该工具可以查看符号是否被定义或引用。 ```bash nm CtAp_CanAppIf_VCAN_TX.obj | grep Carema_Blind_Flag nm CtAp_AppIf_Diag.obj | grep Carema_Blind_Flag ``` 如果符号被定义,则会显示为 `T`(表示文本段中的定义)或 `B`(表示 BSS 段中的定义)。如果是外部引用,则会显示为 `U`[^2]。 #### 2. 使用 `readelf` 或 `objdump` 对于更详细的分析,可以使用 `readelf` 或 `objdump` 来解析目标文件的内容。 - **`readelf`**: ```bash readelf --syms CtAp_CanAppIf_VCAN_TX.obj | grep Carema_Blind_Flag readelf --syms CtAp_AppIf_Diag.obj | grep Carema_Blind_Flag ``` - **`objdump`**: ```bash objdump -t CtAp_CanAppIf_VCAN_TX.obj | grep Carema_Blind_Flag objdump -t CtAp_AppIf_Diag.obj | grep Carema_Blind_Flag ``` 这些工具可以帮助确认符号的类型、绑定以及所在部分(例如 `.text` 或 `.data` 段)[^3]。 #### 3. 检查源代码 如果上述工具未能找到符号的定义或引用,可能是因为符号仅存在于编译后的二进制代码中,而未明确列出在符号表中。此时,建议检查生成这些目标文件的源代码文件,以确定符号的来源。 #### 4. 使用调试器 如果需要进一步分析,可以使用调试器(如 GDB)加载目标文件并搜索符号。 ```bash gdb CtAp_CanAppIf_VCAN_TX.obj (gdb) info symbol Carema_Blind_Flag ``` 这将提供符号的具体地址及其所在部分的信息[^4]。 ### 注意事项 - 如果符号未出现在符号表中,可能是由于编译时启用了优化选项,导致符号被内联或移除。 - 确保目标文件未被剥离符号信息(stripped),否则符号表可能为空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值