启动代码的含义很简单.
最基本的两条: 1.设定中断向量表 2.设定各种模式下的堆栈指针,分配堆栈空间,使我们能够使用C语言. 3.有的处理器为了加快执行速度,使程序在内存中运行要进行地址重新映射.
如果是GNU还要拷贝已经初始化的全局变量到ram中.如果是keil,iar就由编译器自己做了.
这些东西如果初学,会有一定的难度, 如果用keil或者IAR先作个项目, 熟悉了arm,再回头看,就不算个什么.
另外IAR的例子特别丰富,很多可以稍加移植就能用. IAR的缺点是不同厂家的启动代码的具体实现以及中断函数的写法形式上很不一致, keil的不同厂家的启动代码的具体实现以及中断函数的写法形式上很一致. |