本文以中颖51单片机为例实现BootLoader功能,该单片机硬件资源RAM为 1KB,ROM为16KB。
1.Flash资源划分,前4KB为BootLoader区,地址为0x0000-0x0FFF。后12KB为APP区,地址为0x1000-0x3FFF。
2.BootLoader区。(一般不能采用中断编写程序)
a.创建keil C51项目,将项目的可用地址范围修改0x0000-0x0FFF。如下图所示
b.修改A51启动文件在里面添加相应的中断跳转地址
ORG 0003H
LJMP 1003H
ORG 000BH
LJMP 100BH
ORG 0013H
LJMP 1013H
ORG 001BH
LJMP 101BH
ORG 0023H
LJMP 1023H
ORG 002BH
LJMP 102BH
ORG 002BH
LJMP 102BH
ORG 0033H
LJMP 1033H
ORG 004BH
LJMP 104BH
ORG 0053H
LJMP 1053H
ORG 005BH
LJMP 105BH
ORG 0063H
LJMP 1063H
ORG 0073H
LJMP 1073H
具体以使用单片机的中断源数量为基准有多少修改多少,比如这里将0x0003 INT0向量的地址跳转到0x1000地址(APP区地址)。这里插个题外话,由于51单片机中断向量地址固定,所以采用跳转方式实现中断地址重映射。
c.取消勾选中断向量地址,即可编写BootLoader区域的代码。
3.APP区。
a.创建keil C51项目,将项目的可用地址范围修改0x1000-0x3FFF。如下图所示
b.修改A51启动文件,如下图所示将启动地址修改为0x1000。
c.将中断向量地址修改为0x1000。
4.实现以上2个项目的创建即可在51单片机上实现BootLoader功能,当然还要编写上位机来导入我们的hex文件,具体详细将在以后讲解说明。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42088372/article/details/140817816
|