不是有专门硬件的原因
其实这个跟arduino允许用usb烧写程序是一个道理,就是单片机内部的flash有一块专门的区域用于存放启动代码,只要修改启动代码使其允许从串口获取二进制代码即可实现。获取的二进制代码存放于flash内,bootloader有一个跳转指令可以跳转到该段代码的起始位置
首先51的程序下载需要专门的软件;
猜想他肯定在这数据中加了帧头之类的数据;
也许是他软件先通过串口给51发了指令,告诉接下来是程序之类的。
51内部的某个地址应该固定了一个引导程序。
这里有一样的问题 不是有答案了吗
http://www.51hei.com/bbs/dpj-40864-1.html
其实这个跟arduino允许用usb下载程序是一个道理,就是单片机内部的flash有一块专门的区域用于存放启动代码,只要修改启动代码使其允许从串口获取二进制代码即可实现。获取的二进制代码存放于flash内,bootloader有一个跳转指令可以跳转到该段代码的起始位置
1. Bootloader有寫好的程序會引導串口燒錄器下來的資料
2. Bootloader會將資料存放在Flash中
3. Bootloader燒錄完畢後,會將Flash的資料搬運到RAM
4. Bootloader會跳轉到RAM起始位置開始運行剛剛燒錄的程序
固化引导程序
引脚输入的信号转换成数据并存到片内,烧写就是这样实现的