17、C++ 嵌入式开发:启动流程、静态初始化与硬件驱动

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值