我刚刚开始深入研究 ARM Cortex-M 微控制器的世界,我决定不使用现有的开发板或易于使用的 IDE,而是直接进入这些东西的裸机,所以我已经将一个 STM32F103 焊接到原型板上,现在我正在尝试使用 Launchpad 中的 gcc-arm-embedded Toolchain 进行工作。在阅读了有关链接器脚本之类的手册之后,我现在编写了自己的链接器脚本和启动代码,它们基本上什么都不做,只是将 .data 部分从 ROM 复制到 RAM,将 .bss 清零,然后调用 SystemInit()从 ST 的标准外设库进行基本的 uC 初始化,最后调用 main()。
现在,从我找到的有关 Cortex M-3 开发的几个教程中,我看到他们使用 -nostartfiles 标志连接器,但现在我想知道:在这种情况下我是否必须自己初始化 newlib?还是我应该使用 GCC/newlib 中的默认启动文件并删除 -nostartfiles?但在这种情况下,我仍然需要进行一些初始化,例如将 .data 复制到 RAM 并设置向量表,这需要自定义链接器脚本。那么我在哪里做呢?
而且我什至不想开始考虑 C++!
那么,初始化这种基于 Cortex-M3 的微控制器及其 libc(不包括外围设备)的推荐方法是什么?
提前致谢!