5817|5

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于C8051F单片机的bootloader程序的疑问 [复制链接]

诚请高手指点下:
要实现C8051F020单片机的FLASH在线更新程序,看了好多,有两种方案。
1、很多认为bootloader程序放到高地址0E000H~0FDFDH,然后前面放一上位机握手程序,但是我有疑问,如果上位机发出请求编程跳至引导程序,引导程序将前面0-0DFFFH全部擦除,那握手程序不是没有了?难道要更新的程序中每次都嵌入握手程序一起烧写?
2、很少人认为引导程序放在01000H之前,这样单片机启动就从引导程序启动,与上位机握手程序也放在这里,判断再直接跳入应用程序运行。这种貌似我觉得有点问题,不是中断向量等都是在前面地址么,应用程序放到后面能实现么?
上位机我准备用VB写,貌似很简单的,就是这块bootloader比较不懂,小弟是菜鸟,请求各位高手的援助,非常感谢!

最新回复

我现在也在试着搞这个,下位机的有点明白,可是上位机的程序我就不知道了,还希望指点。我是吧bootloader放在高地址的,确实有一个不好的地方,如果没有烧成功就完了,现在只是试着学,希望能得到一些帮助  详情 回复 发表于 2010-3-4 19:48
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
51也用bootloader?怀疑中。。。
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
对你的情况不是十分了解

1、一定要擦除0-0DFFFH?

2、“不是中断向量等都是在前面地址么”,貌似ARM才是这种用法吧,以前用的AVR单片机,Silicon的片子也只是接触了一下,不确定。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
因为之前做过一个类似的bootloader,所以忍不住想告诉你,就怕我描述的不够明白。

首先,你需要一个bootloader程序,这个程序在编译连接的时候连接到高地址,比如0xf000;
其次,你要有个通过bootloader下载到单片机中的程序,这个程序编译连接的时候可以连接到0x0地址处;
通过bootloader从上位机下载的程序依次写入0x0地址处,但是要空出第2、3字节不能修改,因为这两个字节代表了bootloader程序的入口地址,如果修改了,单片机上电后就不能运行bootloader程序了
通过bootloader下载完毕后,要跳转到下载程序的入口地址处,执行。
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

5
 
我也忍不住想告诉你,就怕我描述的不够明白。
一般的BootLoder程序都是先把修改自身的代码下载到单片机的RAM中,校验正确以后才运行烧写程序从RAM烧进Flash。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
我现在也在试着搞这个,下位机的有点明白,可是上位机的程序我就不知道了,还希望指点。我是吧bootloader放在高地址的,确实有一个不好的地方,如果没有烧成功就完了,现在只是试着学,希望能得到一些帮助
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表