51单片机实现BootLoader功能

本文以中颖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文件,具体详细将在以后讲解说明。

  • 51
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值