关于8051的bootloader实现方式
一, 基本硬件需求 要实现IAP功能,需要51单片机可以在程序里修改代码空间的Flash,或者至少可以修改用户程序区的Flash,新出的51大部分都能满足这个要求 二, 空间划分 一般bootloader位于单片机代码空间的起始地址,用户程序在后面。这个需要根据实际的需求来决定,bootloader功能简单,就少占用一些,bootloader功能复杂的就多占用一些。除此之外,一般还要根据Flash的页为界线划分。附带的工程模板里,bootloader使用0x0000-0x0fff区间,用户程序使用0x1000以后的空间。 三, 中断的处理 51单片机的中断入口一般位于0地址开始的区间,无法修改,但是根据上面的空间划分方式,这个区间位于bootloader的范围,是不能随意更改的。所以代码里用了一个软件的方式对中断入口做了重映射处理,后面将结合具体的代码介绍实现方式。 四, Bootloader的处理 1, 建立工程的时候,选择把Startup.a51添加到工程 2, 在Startup.a51里添加如下代码: ORG 0003H LJMP 2003H ORG 000BH LJMP 200BH ORG 0013H LJMP 2013H ORG 001BH LJMP 201BH ORG 0023H LJMP 2023H …………………………. 根据具体型号的中断数量和地址