基于飞思卡尔DZ60芯片CANBootloader的一种简单折中实现思路及使用20190926
跳过说明:这仅是一个尝试,有这方面需求的请直接联系自己的芯片厂家索取官网实现包。谢谢!
0、工具及系统:
- 任一含CAN的DZ60开发板1套。
- FreeTech USBDM芯片烧写工具1套。
- ZLG USBCAN-I-mini通讯工具1套。
- CodeWarrior for Microcontrollers V6.3开发环境。
- Win7 64位操作系统。
- 各种网络参考例程。
1、Bootloader端
是在网上下载的一个DZ60的CANBootloader的主机程序上改的,程序原名是Host。
保护了0xF400~0xFFFF的3K地址空间:
内部含一个简单的指示灯闪烁客户程序:
由于需要跳过向量重定义时S1问题,所以最后一个768字节不直接擦写(而是在后期的Bootloader的S19文件中手动修改、固化)。
因此,该区域也不能进行编程动作:
2、客户程序端
客户程序使用PE模式,仅修改中断向量表地址和重置地址:
有警告,但是不影响整体使用。
3、CAN通讯PC端
自己编写的一个小界面。
4、使用步骤
a、boot.s19与user.s19合并为all.s19。
- 将boot.s19拷贝一份命名为all.s19。
- 将all.s19中的0x1900~0xF400地址的内容替换为user.s19中的内容。
- 将all.s19中的0xF3C0~0xF400地址的S1内容换算后替换为S3内容。
- 烧录all.s19。
b、通过USBDM将all.s19烧录进开发板。
c、后期CAN更新user1.s19。![](https://i-blog.csdnimg.cn/blog_migrate/e388d5eb794ff280d1fd7d72811b193d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1e101f75ed12bf0c69be940f905e243d.png)
- 点击“...”按钮选择客户新文件的文件路径。
- 点击“OpenFile”按钮打开文件内容。
- 点击“CheckData”按钮检测文件内容。
- 用USBCAN-I-mini将电脑和开发板连接起来。
- 重置开发板电源。
- 重置5秒内点击“UploadData”按钮上传文件进行更新。
- 进度条进度完毕则表示更新成功。
- 重置开发板电源。(目前不会自动跳转)
简单效果:本来boot.s19是中间的两个灯闪,用user2.s19更新后是下面的两个灯闪。
5、问题及总结
知之为知之,不知为不知。鉴于对自己定义为半道出家的泥腿子,所以潜意识认为自己单片机方面是弱项,导致整体水平迟迟没有大的飞跃(进展)。
芯片一直是由厂家在后台隐式固化的,就好像操作系统的电路接口一样,好多东西厂家并不直面公开、或者是一般非VIP的根本接触不到。整体感觉仍然是在荆棘阵地上匍匐勇进,在黑色汪洋底部艰难泅渡。继续加油!
a、Bootloader中的32个中断向量重定向时,S1不正常。
但是改为S3就可以,仍然不知道为什么,目前只是将这个问题绕过去了。
b、Bootloader程序的S19文件在前期就需要固化客户程序可能用到的所有中断向量表
因为Bootloader的S19文件中的客户中断向量表是手工更改的,所以这就导致在前期合并烧写时必须将客户可能用到的所有中断向量都预留出来,否则后期不能增删变动任一中断、不能重定义任一中断及管脚。
这真是一个不小的欠缺和遗憾。
c、BurstProgram的0x20区块编程功能不正常。
目前只能全部使用ByteProgram功能代替,因此编程速度上相对会慢许多。
d、其他问题(备份恢复、自适应波特率、一体化)。
这算是初始原型,继续调试中。有这方面需求的请直接联系自己的DZ60芯片厂家索取官网实现包。谢谢!