找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1257|回复: 1
打印 上一主题 下一主题
收起左侧

C8051f121、C8051F500串口升级成功

[复制链接]
跳转到指定楼层
楼主
ID:884739 发表于 2022-3-13 23:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C8051f121、C8051F500串口升级成功
了解单片机如何在flash中运行程序的
了解hex文件转换成二进制文件在flash中的情况。
了解flash擦除原理
了解单片机flash中的机器码的含义
——————————————————————————————
1、单片机如何在flash中运行程序
以C8051F系列为例,单片机的程序经过keil等IDLE软件编译成hex文件,然后通过仿真器烧写至单片机的flash里,hex首先得转换成二进制文件,然后写入flash,以500为例,flash为64KB,从0x0000H起始到0xFFFF结束。
                                                                                                       
如表所示,程序正常的机器码从地址0x0000H开始,最开头的一般都是02,02代表跳转,跳转到接下来的后两个字节xx xx,第四个字节往后会配置一些中断向量及其他一些操作。我们想要上电后执行boot的程序就需要把boot的程序放置在02 xx xx 的这个xx xx位置,然后boot程序里执行串口的接收程序,将串口接收的8位的数据(也就是机器码)依次烧写至flash的地址0x0003之后的位置,需要注意的是,boot程序执行完之后需要跳转的app的程序,而boot程序需要跳转的位置就是储存app跳转命令的地方,要烧写的程序分两个部分,前三个字节和后面的部分,前三个字节的储存位置解释boot程序需要跳转的位置。上电->boot->储存app跳转指令的位置->执行app跳转指令(这个指令本来应该是在flash前三个字节),这样就实现了boot。

未完待续。。。
————————————————
版权声明:本文为CSDN博主「blueszhous」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/blueszhous/article/details/120049356

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:31162 发表于 2023-3-25 10:56 | 只看该作者
期待后续代码,非常感兴趣
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表