使用-objcopy-将-AXF-文件转换成-BIN-文件时文件过大
在 Linux 上配合 Keil 5 进行 STM32f103c8 单片机开发时, 先利用 Keil 5 中的 Build:
产生 AXF 文件:
之后用 arm-none-eabi-objcopy
命令将 AXF 文件转换为 BIN 文件, 然后利用 st-flash
将 BIN 文件烧录到 STM32f103c8 中:
1 |
|
遇到报错:
通过报错可以得知这个 BIN 文件过大, 查看如下:
经网上搜查 (问了下 GPT), 得知可能原因为 BottonNum
这个全局变量, 在经 Botton_GetNum()
函数返回值修改, 并在 while
循环中被使用, 由于编译器无法确定 Botton_GetNum()
函数在每次调用时是否会返回不同的结果, 它可能会保留该变量的所有可能值, 以便在循环中的条件判断中进行处理, 从而导致生成的二进制文件巨大. (这里我并没有探明是不是这个原因)
因此将 BottonNum
声明为局部变量:
此时确实可以正常运行, 且 BIN 文件很小.
使用-objcopy-将-AXF-文件转换成-BIN-文件时文件过大
http://example.com/2024/03/26/使用-objcopy-将-AXF-文件转换成-BIN-文件时文件过大/