Bootloader通常是在代码运行到应用层之前运行的一段程序,主要用途就是代码升级,复杂的上位机还可以结合诊断功能(汽车级主要都走CAN线)。代码升级后,最大的难点是中断向量表改变了,因为你可能增加活减少了中断数。与Freescale的单片机不同,Freescale有个绝对优势,它在代码更新后能够通过设置SFR来改变中断向量表的地址,不一定复位后的(0x000-0x580为中断地址V850/Fx3,你可以设置比如0x4000-0x4580为中断向量表)NEC对应的技术是BootSwap功能。如果你想应用程序和Bootloader同时更新,建议参考附件方案二,个人觉得方案二很好。
另外,Freescale还有一个小优势,它的编译器Codewarrior生成的hex是标准的motorola格式,因为烧写规则如下:FlashWrite(u32
*add, u8
datalen);add和datalen必须为8的倍数,所以PM+或者IAR生成的motorola格式的hex是不能够直接烧写的,它有很多“断码地址”需要上位机来做分页转换,如果需要上位机,也可以联系我。最近发现上位机用Labview实现很方便。
希望对大家有用,祝大家开心。