HC9S12X 系列 CAN bootloader 设计总结
这段时间针对飞思卡尔的 MC9S12XEP100MEG 这款芯片开发了 CAN Bootloader 的上
位机和下位机软件,上位机用的是 VC 平台,C++语言, 下位机用的 CW5.1,下载工具
用的是 USBCAN2II。开发过程中克服了一些困难,也积累了一些知识,所以总结备忘一
下,以便于以后查阅。其中下位机最难的部分还是对这款芯片内存的理解。由于我的设
计思路是:每次上电启动是根据 EEPROM 的控制字判断是否进入 Bootloader 部分还是
Application 部分,而不像网上大多数例子说的那样是根据 PIN 脚一个开关量信号,或者
每次上电都进入 Bootloader 程序,然后是在 Bootloader 程序中根据 CAN 通讯延时判断
跳转进入 Application,所以必须对内存十分清晰了解,大致包括:EEPROM(这款芯片没有
EEPROM,是通过 buffer RAM 模拟 EEE 实现的),D-Flash,P-Flash,RAM, buffer RAM, EEE.内
存映射 Local Memory Map 和 Global Memory Map 之间的换算;内存分页,非分页分配;
三大分页寄存器 EPAGE,RPAGE,PPAGE;还有对 PRM 文件的熟悉,会内存划分,三个复
位向量,中断向量的定义;S19 格式文件的理解;上位机部分主要是现成的 dll 文件,
多线程的调用,基于对话框编程的界面设计。
下位机 Bootloader 部分是根据官网提供的 AN4258SW,AN4258.pdf 这两个文件修改
的(原文件是串口形式的 Bootloader),上位机是根据 USBCAN2II 提供的样例修改的。
基础的东西就不记录了(可以在 AN4258SW 文件里面找到),只记录一些关键的东西。
一,内存大小
如上图所示,这个芯片的内存资源有:
1.P-Flash 部分:64*16K=1024K。说明:P-Flash 一个页窗就是 16K,总共划分了 64 页,所 以
有 64*16K 内存空间大小,对应的全局地址就是 0x70-0000 -- 0x7F-FFFF;
2.RAM 部分:16*4K=64K。说明:RAM 一个页窗就是 4K,总共划分了 16 页,所以有 16*4K
内存空间大小,对应的全局地址就是 0x0F-0000 -- 0x0F-FFFF;
3.D-Flash 部分和 buffer RAM 部分:D-Flash 空间=32*1K=32K,buffer RAM=4*1K=4K.说明:D-Flash
一个页窗就是 1K,总共划分了 32 页,所 以有 32*1K 内存空间大小,对应的全局地址就是
0x10-0000 -- 0x10-7FFF;buffer RAM 一个页窗就是 1K,总共划分了 4 页,所 以有 4*1K 内存空
间大小,对应的全局地址就是 0x13-F000 -- 0x13-FFFF;这里 buffer RAM 和 D-Flash 总共 32 + 4K
评论0
最新资源