lisscc 2024-10-28 15:59 采纳率: 80%
浏览 32
已结题

我在使用GNU工具链开发STM32时遇到了问题

我的疑问可能有点多,因为我以前从未涉及过GNU工具链接的使用
可能是我经常使用KEIL编译器的自动化功能,让我懒得去学习汇编文件的编译过程!

我的目标芯片是STM32F103C8T6
它的内核是Cortex-M3
我的GNU工具链安装在Ubnutu虚拟机中的x86_64架构的Linux系统中

我的疑问:
在我使用以下命令对某个文件进行编译后,并用openocd工具进行烧录后报错了

涉及到GNU工具链的命令:
arm-none-eabi-as -mcpu=cortex-m3 -mthumb -o text.o text.s
arm-none-eabi-ld -T linker_script.ld -o text.elf text.o
arm-none-eabi-objcopy -O ihex text.elf text.hex

openocd工具烧录命令:
program text.hex 0x08000000

错误信息:
no flash bank found for address 10000000

到此为止,以上是整个报错过程

是否是我的编译器命令使用不当?
或者是我的烧录工具使用不当?
或者是我的烧录工具命令使用不当?

请问如何使用GNU工具链与其他工具配合生成正确的二进制文件
就是像KEIL编译器一样的那种,能直接烧录到目标芯片中

  • 写回答

1条回答 默认 最新

  • 阿锥 2024-10-29 17:37
    关注

    前面几步都是编译,如果生成了hex文件应该是没有问题的
    arm-none-eabi-objcopy -O ihex text.elf text.hex 这一步改成 arm-none-eabi-objcopy -O binary text.elf text.bin
    这样就是bin文件了
    烧录程序需要 cfg文件的
    烧录hex文件 openocd.exe -f "cfg文件路径" -c init -c halt -c "flash write_image erase hex文件路径"
    烧录bin文件 openocd.exe -f "cfg文件路径" -c init -c halt -c "flash write_image erase bin文件路径 起始地址"

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 创建了问题 10月28日