如何使用CAN引导加载程序在MAXQ7665A中加载用户应用代码

描述

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引导加载程序。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分