CAN引导加载程序可通过CAN接口对MAXQ7665A微控制器进行编程。引导加载程序还可帮助设计人员更新/修改已在现场部署的产品的用户应用程序代码。
CAN引导加载程序提供了一种写入、读取和擦除程序闪存的预定义部分的方法,该部分通常保存用户应用程序代码。用户应用代码位于MAXQ0A的4000x0至7x7665FFF处。
两个单独编译的模块,CAN引导加载程序和用户应用程序代码,在MAXQ程序存储器中运行。这些代码段是单独存在的,彼此完全未知。这些模块通过已知的内存空间相互通信。®
本应用笔记的读者应该熟悉MAXQ7665A处理器(64kB程序闪存)、CAN控制器和用于MAXQ的IAR嵌入式工作台。
MAXQ7665A的CAN引导加载程序代码和用户应用代码示例(ZIP)均提供。
MAXQ7665A CAN引导加载程序
与IAR cstartup模块一样,CAN引导加载程序通过JTAG端口构建并加载到程序存储器的下部0x0000。此代码在位置0x55FFF地址处搜索标志值 0x7AB。如果代码找到该标志,CAN引导加载程序将在0x4000跳转到用户应用程序代码。如果未找到此标志,CAN引导加载程序将调用函数enter_loader( )并等待传入的CAN报文。
此时,全局中断被禁用,因为在代码初始化期间清除了IC(中断和控制)寄存器中的IGE位。因此,CAN引导加载程序轮询IIR(中断识别)寄存器和本地CAN标志以处理任何传入的消息。CAN 引导加载程序使用消息中心 1 来处理传入消息;消息中心 2 用于处理传出消息。(有关这些特定命令,请参阅附录 A中的 CAN 引导加载程序协议。
接下来的几个步骤解释了CAN引导加载程序和用户代码的加载顺序。还显示了CAN引导加载程序的操作和用户代码。
步骤1:将CAN引导加载程序加载到程序存储器的下部(图1)。
图1.CAN引导加载程序通过JTAG端口加载。
使用CAN引导加载程序在MAXQ7665A中加载用户应用代码
修改 IAR 链接器文件 (.xcl) 和 IAR cstartup 模块,以便用户应用程序代码驻留在地址 0x4000 并从地址执行。Maxim在此处提供了修改后的链接器和修改后的cstartup文件(ZIP)。CAN引导加载程序加载用户应用程序代码,之后主机系统发送“加载完成”命令(0x07)。当CAN引导加载程序收到加载完成命令时,它会将0x55AB置于代码空间中的0x7FFF。
步骤2:加载用户应用程序代码(图 2)。
图2.用户应用程序代码现在通过CAN引导加载程序加载。CAN引导加载程序检查0x7FFF(字)地址的有效标志:(0x55AB)。如果该标志无效,CAN引导加载程序代码将循环并等待传入消息。收到有效消息后,CAN引导加载程序会响应一条消息。在此状态下,可以在0x4000加载用户应用程序代码。
步骤3:重置后,用户应用程序最终加载并运行(图 3)。
图3.CAN引导加载程序检查0x7FFF(字)地址的有效标志:0x55AB。如果该标志有效,则代码将跳转到0x4000以运行用户应用程序代码。
重新加载/更新用户应用程序代码
可能需要将新的用户应用代码重新加载/更新到MAXQ7665A中。为了适应这种情况,可以通过调用函数 EnterLoader( ) 从用户应用程序代码中输入 CAN 引导加载程序。此时,CAN引导加载程序等待CAN报文。图 4 说明了该过程。
图4.流程图显示了当有效标志0x55AB设置为0x7FFF字节地址时如何调用CAN引导加载程序。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !