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

时间:2016-09-20 18:10:20

标签: c embedded

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

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

它取决于体系结构,但通常将所有未初始化的全局变量设置为零并设置堆栈指针。