我们先说说什么是启动文件?一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程以创造嵌入式程序运行的环境,尤其是一些高级的嵌入式系统,由于核心芯片使用内存映射、内存保护等机制等。当然,低端的微处理器也是有的,只不过基本都固化到芯片内部了。说到这里,我们请出今天的第一位主角AVR系列的Atmega64微处理器。
Atmega64微处理的启动过程:首先当程序上电(或复位)后,PC指针将指向0x0000位置,然后再去执行C_Startup,Low_init(),这里多说一句,这一系列指令在IAR EWAVR开发环境是看不到的,如果你在选项卡里勾选了“run to main”选项,那么在仿真或者在线调试时,上面这些过程将完全被跳过。主要因为AVR系列这些中断变量全部固化完成,也只是在使用熔丝位更改启动顺序时,会更改中断向量的地址,但其偏移量也是固定且事先预定好的。当然,像堆地址与栈空间的大小也是通过IAR提供的GUI选项表来设置的,不需要用户理解复杂的命令参数等。