在系统开始运行main()之前会发生什么?

dou*_*leE 2 c embedded

我作为初学者在嵌入式系统上工作,遇到过像main()函数开始之前运行的文件start.scstart文件.这些或类似文件的目的是什么?我们告诉系统的哪些信息?

MaK*_*aKo 8

在最接近的情况下,main()之前的启动代码设置"C环境":它初始化堆栈指针,将初始化变量值(.data)从非易失性存储器复制到RAM,并将所有未初始化的变量(.bss)设置为零.

根据架构,您可能需要做更多的事情.在进入main()继续系统启动之前,您可能需要初始化时钟和/或其他关键外设,中断向量,可能设置处理器上下文等.

  • ...这段代码通常也会设置`argc`和`argv`. (2认同)