C++ 嵌入式开发:启动流程、静态初始化与硬件驱动
1. 链接器与启动代码的关联
在跳转到 main() 函数之前,会进行三项初始化操作,包括清零 bss 段、初始化 bss 段中的静态变量以及调用 ctors 段中的所有静态构造函数。像 _bss_begin 、 _bss_end 以及 _ctors_begin 、 _ctors_end 这类方便使用的符号,是通过链接器定义文件(也称为链接脚本)创建的。链接器定义文件会明确所有程序组件的存储地址。
1.1 链接器定义文件示例
ENTRY(start)
MEMORY
{
ROM(rx) : ORIGIN = 0x08000000, LENGTH = 128K
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 8K
}
SECTIONS
{
/* Program code, read-only data and static ctors */
.text :
{
. = ALIGN(4);
KEEP(*(.isr_vector))
*( .text)
*( .text.*)
*( .rodata)
*( .rodata*)
_ctors_begi
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



