复位和初始化
1)
在大多数嵌入式系统中,在执行主任务之前,会执行初始化序列以设置系统。ARM默认初始化序列如下:
__main
负责设置内存,__main
执行 ZI 数据的代码和数据复制、解压缩和零初始化。然后跳转到 __rt_entry。
__rt_entry
负责设置运行时环境,__rt_entry
设置堆栈和堆,初始化库函数和静态数据,并调用任何顶级C++构造函数。然后__rt_entry
跳转到 main(),
即用户程序入口。
当main()完成执行后,返回 __rt_entry
关闭库,然后将控制权交还给调试器。
main()函数具有特殊的意义。main()
函数的存在会强制链接器在 __main
和 __rt_entry
中链接初始化代码。如果没有标记为 main()
的函数,则初始化序列不会链接,因此,不支持某些标准 C 库功能。