搜索
bottom↓
回复: 21

AVR自编程编程后如何校验

[复制链接]

出0入0汤圆

发表于 2013-6-28 10:24:35 | 显示全部楼层 |阅读模式
最近看了AVR的BootLoader,感觉挺不错的。然后自己做了个用U盘给单片机升级。也成功了。因为数据量大。如何确保在自编程中没有数据错误了?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2013-6-28 10:44:11 | 显示全部楼层
想到了一个方法。先把程序下载进去在读取出来校验。但是bootloader它能从flash中读取数据吗?

出0入442汤圆

发表于 2013-6-28 10:58:24 | 显示全部楼层
改啊。改代码。

出0入0汤圆

 楼主| 发表于 2013-6-28 11:07:12 | 显示全部楼层
wye11083 发表于 2013-6-28 10:58
改啊。改代码。

没思路了,不知道怎么改。

出0入442汤圆

发表于 2013-6-28 13:45:06 | 显示全部楼层
haolei432370 发表于 2013-6-28 11:07
没思路了,不知道怎么改。

改bootloader啊。让它烧完之后读一遍校验。或者你通过bootloader读出来也行。

出0入0汤圆

 楼主| 发表于 2013-6-28 14:06:13 | 显示全部楼层
wye11083 发表于 2013-6-28 13:45
改bootloader啊。让它烧完之后读一遍校验。或者你通过bootloader读出来也行。

就是不知道怎么读

出0入0汤圆

 楼主| 发表于 2013-6-28 14:07:08 | 显示全部楼层
wye11083 发表于 2013-6-28 13:45
改bootloader啊。让它烧完之后读一遍校验。或者你通过bootloader读出来也行。

pgm_byte_read 和 pgm_byte_read_far
用这函数吗?但是他们可以在bootloader中读取吗

出0入0汤圆

发表于 2013-6-28 14:21:41 来自手机 | 显示全部楼层
在Bootload中,编程之后与源数据对比,有错就重新烧,多次出错放弃,然后提示。

出0入0汤圆

 楼主| 发表于 2013-6-28 14:33:06 | 显示全部楼层
cock 发表于 2013-6-28 14:21
在Bootload中,编程之后与源数据对比,有错就重新烧,多次出错放弃,然后提示。 ...

在编程之后要读取数据在与原数据对比。我卡在读取数据这了。帮我解决我送50莫元

出0入0汤圆

 楼主| 发表于 2013-6-28 15:08:02 | 显示全部楼层
#include <avr/pgmspace.h>   该模块的函数提供的接口,使用户程序可以访问存储于器件的程序存储器空间(Flash
存储器)中的数据。要使用这些函数,目标器件必须支持LPM 或ELPM 指令。
该模块中的pgm_byte_read 和 pgm_byte_read_far可以读取flash中的代码
看Atmega128数据手册知道bootloader支持LPM指令


所以可以在bootloader中读取flash中的代码来验证下载进去的数据是否正确

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-6-28 15:09:31 | 显示全部楼层
擦 白白浪费了60莫元   

出0入0汤圆

 楼主| 发表于 2013-6-29 21:45:05 | 显示全部楼层
pgm_byte_read   除了0x0000处的数据可以读取0x0c正确。其它的读取全是0xff。看了下数据手册说是没有更新完页。但是我检测RWWSB为0又说明不是正在更新程序。

出0入0汤圆

发表于 2013-6-30 01:07:13 | 显示全部楼层
LPM指令就可查看FLASH内容。

出0入0汤圆

发表于 2013-6-30 04:02:09 | 显示全部楼层
会不会边写边校验比较好点,如果不对还可以进行重写。。是不是程序会更稳定呀!!!

出0入0汤圆

 楼主| 发表于 2013-6-30 10:17:30 | 显示全部楼层
cock 发表于 2013-6-30 01:07
LPM指令就可查看FLASH内容。

bootloader是支持LPM指令。但是我用pgm_byte_read读取数据。除了0x0000处正常为0x0c。其它地址的数据全为0xff。检查RWWSB,发现它也是为零

出0入0汤圆

 楼主| 发表于 2013-6-30 10:18:37 | 显示全部楼层
_bobo 发表于 2013-6-30 04:02
会不会边写边校验比较好点,如果不对还可以进行重写。。是不是程序会更稳定呀!!!
...

是的。边写边校验是好点。我先把校验搞出来在去做那个边写边校验

出0入0汤圆

发表于 2013-6-30 12:35:55 | 显示全部楼层
其实没必要那样verify,读出来做crc或者md5就可以了。

出0入0汤圆

 楼主| 发表于 2013-6-30 16:23:39 | 显示全部楼层
richyhuang 发表于 2013-6-30 12:35
其实没必要那样verify,读出来做crc或者md5就可以了。

是从U盘里面读取数据的。U盘里面只有程序没有附带什么校验的(U盘程序里加上校验比较麻烦,而且CRC校验有一定概率性的错误)

出0入0汤圆

 楼主| 发表于 2013-6-30 22:01:44 | 显示全部楼层
哪位能给个思路啊。只要能实现我就送50莫元

出0入0汤圆

发表于 2013-6-30 22:34:15 | 显示全部楼层
haolei432370 发表于 2013-6-30 16:23
是从U盘里面读取数据的。U盘里面只有程序没有附带什么校验的(U盘程序里加上校验比较麻烦,而且CRC校验有 ...

crc重复的几率很小的,特别是数据量大的时候,我们在项目中已经用的很多的,从来没有发现出问题。
至于你说在u盘中如何产生,那u盘的数据应该是从pc写进去的,你随便写个程序就可以搞定。

出0入0汤圆

 楼主| 发表于 2013-6-30 22:43:21 | 显示全部楼层
本帖最后由 haolei432370 于 2013-6-30 22:44 编辑
richyhuang 发表于 2013-6-30 22:34
crc重复的几率很小的,特别是数据量大的时候,我们在项目中已经用的很多的,从来没有发现出问题。
至于你说 ...


是啊。CRC的出错概率是很小。但是我的上司要我用这种方法(读取u盘中的数据来跟单片机中的程序对比,比较有没有错误)




在线等

出0入0汤圆

 楼主| 发表于 2013-7-1 11:49:04 | 显示全部楼层
顶个。求大神给思路
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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