我正在查看 STM32f4xx 项目模板,它由GNU ARM Eclipse插件生成,并启用了半主机。该main
函数使用argc
和argv
参数定义,这在独立的嵌入式程序中非常无用,但在半托管调试程序的情况下,可以使用某种机制传递它们。所以我的问题是如何访问这个机制?现在,没有对模板和项目设置进行任何更改,argv[0]
等于一个字符串"foobar"
,我不知道它来自哪里。而且我不知道如何将其他字符串传递给它。更多信息:
- IDE:Eclipse + GNU Arm Eclipse 插件
- 工具链:GCC ARM Embedded
- 调试:工具链中的 Eclipse + OpenOCD + GDB
- 硬件:STM32f401vC
更新:我开始怀疑该常量深埋在newlib
代码中。我可以看到 args 读取被触发的位置(它在 中_syscals.c
)call_host (SEMIHOSTING_SYS_GET_CMDLINE, &cmdBlock);
,但我无法弄清楚它是在哪里处理的。然后它被转换为a bkpt 0xAB
,从那里我迷路了。