飞思卡尔系列单片机Bootloader的初步开发经验
BootLoader一般用于后期嵌入式产品的升级使用。由于产品中缺乏jtag硬件调试接口。BootLoader可以实现没有物理破坏性的软件升级。
开发重点:
1、芯片本身的Flash驱动。一般都由官方提供。比如mpc5744P芯片采用的文档是Standard software driver for C55 Flash。我们可以采用vle指令的,c-array形式的驱动。该驱动的表现形式是数组。其实里面应该就是一个完整的独立的,可以接受参数并可以返回的函数。注意,函数接口的参数可能需要理解和试错。
2、芯片本身的CAN通信。CAN通信要实现基本的报文的收发。CAN的初始化工作需要做好。报文的接收通过中断实现。
3、S19文件的格式。由于S19文件的格式比较灵活。而由于单片机的Flash的特殊性(具体参见Flash编程文档),对编程的步骤的各个部分都有严格的要求。不能随意操作。否则在对Flash的操作中,单片机很容易进入Exception。我们几乎没有对Exception这种底层问题的处理能力,这需要汇编级别的理解。所以,要防止这种情况出现。
4、上位机软件。上位机软件其实不是设计的重点。根据界面和业务逻辑分离的设计原则,可以尽量简化上位机的设计。上位机的一个根本任务就是读取S19文件中的每一行,然后将每一行通过报文(多帧)发送出去。关于上位机和下位机的交互。这个暂时没有太好的思路。这一部分比较灵活。一个基本的原则是单片机上电在等待一段时间T后,如果没有接受到任何表示要对其进行操作的信息的报文,那么就进入正常执行应用程序的流程。
5、链接文件。链接文件需要根据芯片手册中的memory map和硬件启动流程仔细斟酌设计。如果配合一个好的调试器使用,那么问题可能还是比较好发现和解决的。