[硬件设计] 本地烧写程序如何写?

[复制链接]
 楼主| MeterLeader 发表于 2015-1-25 16:11 | 显示全部楼层 |阅读模式
请问,本地烧写程序如何编写?
我现在做一个远程升级的功能,当收到远程传过来的hex文件,我需要将它写入本地CPU片内ROM
的指定地址中,由于片内ROM是由许许多多扇区构成,大小也不一。hex文件大小需占用多个扇
区,那么在编写片内ROM读、写程序时,肯定要根据各个扇区的实际大小数hex文件字节数,做
循环写入,是这样吗?  这hex文件内容又如何读取呢,是做什么链接吗?
从小木丁丁 发表于 2015-1-26 10:28 | 显示全部楼层
有点麻烦啊,帮顶
 楼主| MeterLeader 发表于 2015-1-28 09:25 | 显示全部楼层
补充问:
(1) Hex文件的格式应该是固定的,记录长度+地址(基地址或偏移)+数据+校验,将相应记录数据写入该地址即可?
(2) 能否在设备上电运行老程序后,调用擦除和写入程序擦/写片内ROM,将所有Hex文件的记录写入相应地址,作为新的升级程序覆盖老程序?如果在设备上电运行老程序后,擦除片内ROM上老程序,相当于自己把自己擦除了,程序会否死在当下,无法再写入新的程序?这本地程序升级到底是个什么原理?
星辰yyt 发表于 2015-2-3 09:43 | 显示全部楼层
一般情况下,这种会分成两段程序,一段是boot段,一般是app段,boot用着升级程序,用这段程序去修改除去boot段Flash的其他扇区Flash,单片机上一般情况下boot是是不能被升级的,但是WinCE boot是可以自己升级的。

评分

参与人数 1威望 +3 收起 理由
MeterLeader + 3

查看全部评分

xbd_119 发表于 2015-2-3 19:33 来自手机 | 显示全部楼层
也是可以自己升级自己的,这要牵扯到pic编程,最简单的方法是把升级程序用汇编写,在升级的时候copy这段代码到ram中运行升级

评分

参与人数 1威望 +2 收起 理由
MeterLeader + 2

查看全部评分

xbd_119 发表于 2015-2-3 19:34 来自手机 | 显示全部楼层
注意汇编里不能引用程序的绝对地址

评分

参与人数 1威望 +1 收起 理由
MeterLeader + 1

查看全部评分

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

本版积分规则

34

主题

94

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部