用户登陆 用户注册
您的位置:首页>
技术文章>内容正文
串口升级软件问题总结
[正文]:1。
.hex文件格式: .hex文件是由下列形式的行组成的 :0c02f400ff30860083168500860183120f 从左至右依次为“:”,“number of data bytes(0x0c)”,“address of first program memory word(0x02f4 ÷ 2 = 0x017a)”,“record type(0x00 a regular data record”,“first program memory word is 0x30ff”,...,“checksum is 0x0f”.详细参见《implementing a bootloader for the pic16f87x》 我用的是pic16f876a,它的配置字在2007地址字处,超出了8k范围,所以.hex文件中这一地址行可以忽略掉。
2。
上位机发送: 比如pc发送“:0c02f400ff30860083168500860183120f”这一行时,其格式将是这行中所有字符的ascii码,如:为0x3a,0为0x30,c为0x43,等。
注意在行末尾时pc会追加0x0d(回车)0x0a(换行)两个字符。
也就是说pc将这行传送给876时实际上将发送37个字节。
当然,如果你要在pc上将它译码后发送,那就给好了,否则你不得不在单片机上将它解码。
3。
存储器分配: 我是这样做的:0~3为bootlooder,其中是一跳转指令到bootlooder. 4~0x1a00, 保留给将要下载的程序区 0x1a00~0x1a03 将要下载程序的前四字节,也是一条跳转指令到下载程序。
(hitech picc生成的程序第一条指令是一条跳转指令)至于这个存储空间的实现,可以再写bootlooder时加入这几条指令:#asm psect intentry,class=code, delta=2 ljmp 0 org 0x1a00#endasm 写前四条指令时注意写入0x1a00~0x1a03,随后的指令(包括中断)全部写入相应的位置即可。
4。
如果你采用超级终端等来整个文件传送的话,代码可以写的很小,但是如果要协议打包,那么就像我这样给下载程序留的空间就小了0x1a00.具体防止覆盖,异常等可以参考上面文件。
网站首页
培训课程
维修指南
技术文章
家电专栏
供应信息
求购信息
培训资讯
展会信息
电脑专栏
教程下载
资料下载
常用软件
PLC教程
PLC资料
变频伺服
低压电器
维修资料
人机界面
自控仪表
工控机类
文章标题:
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
京ICP备11002135号
报时(2026-04-07 07:50:26)