原创 ATmega328P Xplained Mini的mEDBG故障分析和修复

2015-1-5 00:54 1540 21 16 分类: MCU/ 嵌入式 文集: 开发板
ATmega328P Xplained Mini板载的mEdbg仿真器模块有些bug,容易因为内部的serial number错误造成连接不上仿真器。通常是刚才还是好的,下次插上USB就不正常了。感觉上是因为上电或者掉电过程中,因为干扰造成内部数据被修改,使Serial Number中的一位或者几位变为特殊字符,从而不能被AS6识别。

 

在开发板的官方文档Atmel-42297-ATmega328P-Xplained-Mini-User-Guide_UserGuide.pdf中,1.5.4小节中推荐的ATmega32U4熔丝位设置中BODLEVEL是禁止的,这样电压异常时MCU就不会被复位保护(禁止BODLEVEL的原因估计是为了适应不同的用户工作电压,因为ATmega328P可以通过外部供电)。在看看开发板的原理图,ATmega328P Xplained Mini上USB通过22欧的电阻连到ATmega32U4上,没有其他的保护了,而SAM4S、SAM R21等开发板上的EDBG模块的USB上都有保护二极管。因此可以预计主要的故障原因就是来自于USB上。

 

这个问题在Atmel官方网站也有说明
 
Serial number bug
 
There is a bug in the serial number on some of the ATmega328P-XMINI boards making them not recognizable by Atmel Studio programming/debugging.

详细见
http://spaces.atmel.com/gf/project/avr_xp_mini/
 

如果你也不幸遇到这个问题,​那么就需要修复序列号才行。atmel提供了一个软件(Change_Serialnumber)可以修改mEDBG的序列号,这个软件在这里可以下载:
​http://spaces.atmel.com/gf/project/avr_xp_mini/frs​

 

虽然atmel提供了这个补丁,但是不幸的是,修复了序列号后,在编程器的设备名称又出了一个小问题,它把ATmega328P变为了ATmeÿa328P,这样也无法找到设备。好在设备栏是可以手工编辑的,自己将它修改过来,就可以连上了。
 
1.jpg

文章评论2条评论)

登录后参与讨论

shaoziyang 2015-8-20 00:20

这个方法是有效的,另外还有EEPROM的文件,可以完全修复。

用户1850770 2015-8-18 22:22

atmel提供了的这个修复软件,下载好慢,希望有效果,

coyoo 2009-8-13 11:50

上午拿你的例子,即老版ug的第一个例子,直接quartus_stp -t *.tcl 是可行的。新版ug例子的tcl中仅仅使用了proc例如:proc push {value},好像就不行了。

coyoo 2009-8-13 10:13

喔,这里回复怎么不能编辑啊。 上面是一个tcl例子,在bat中加入 quartus_stp -t *.tcl quartus_stp -s 两句,发现该tcl似乎没有执行,还是需要source一下

coyoo 2009-8-13 10:11

set usbblaster [lindex [get_hardware_names] 0] set device_name [lindex [get_device_names -hardware_name $usbblaster] 0] #IR scan codes: 001 -> push # 010 -> pop # 011 -> flush # 100 -> reset # 111 -> normal proc push {value} { global device_name usbblaster open_device -device_name $device_name -hardware_name $usbblaster if {$value > 256} { return "value entered exceeds 8 bits" } set push_value [int2bits $value] set diff [expr {8 - [string length $push_value]%8}] if {$diff != 8} { set push_value [format %0${diff}d$push_value 0] } puts $push_value device_lock -timeout 10000 device_virtual_ir_shift -instance_index 0 -ir_value 1 -no_captured_ir_value device_virtual_dr_shift -instance_index 0 -dr_value $push_value -length 8 -no_captured_dr_value device_unlock close_device } proc pop {} { global device_name usbblaster variable x open_device -device_name $device_name -hardware_name $usbblaster device_lock -timeout 10000 device_virtual_ir_shift -instance_index 0 -ir_value 2 -no_captured_ir_value set x [device_virtual_dr_shift -instance_index 0 -length 8] device_unlock close_device puts $x } proc flushfifo {} { global device_name usbblaster open_device -device_name $device_name -hardware_name $usbblaster device_lock -timeout 10000 device_virtual_ir_shift -instance_index 0 -ir_value 3 -no_captured_ir_value device_virtual_ir_shift -instance_index 0 -ir_value 7 -no_captured_ir_value device_unlock close_device } proc end {} { close_device } proc int2bits {i} { set res "" while {$i>0} { set res [expr {$i%2}]$res set i [expr {$i/2}] } if {$res==""} {set res 0} return $res } proc bin2hex bin { ## No sanity checking is done array set t { 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 a 1011 b 1100 c 1101 d 1110 e 1111 f } set diff [expr {4-[string length $bin]%4}] if {$diff != 4} { set bin [format %0${diff}d$bin 0] } regsub -all .... $bin {$t(&)} hex return [subst $hex] }

coyoo 2009-8-13 09:51

加pause只是停顿一下,“按任意键继续”以后就推出shell了,:(。

ash_riple_768180695 2009-8-12 11:25

把这句话写到bat里:quartus_stp -t my_jtag.tcl 。最好再添加一个pause在后面,便于调试。

coyoo 2009-8-12 11:10

谢谢,另外还有一个问题,就是tcl文件的执行除了在QII的consol以及通过command shell下用source命令执行以外。能不能直接写bat文件实现?我试了一下,似乎找不到这样的选项。只能先quartus_stp -s进入tcl shell,然后source *.tcl来实现,这样必须需要两步。

ash_riple_768180695 2009-8-11 16:50

应该可以,可以查找并输出所有的*Blaster为列表,然后由用户自己选择一个。

coyoo 2009-8-11 16:35

有没有可能让tcl自适应下载电缆?
相关推荐阅读
shaoziyang 2017-12-15 11:06
《micropython 入门指南》正式出版了
第一本专门介绍MicroPython的中文图书《MicroPython入门指南》由电子工业出版社正式出版了(各大书店和网络书店都有)。MicroPython是近年开源社区中最热门的项目之一,它功能强大...
shaoziyang 2017-11-01 15:30
《MicoPython入门指南》一书即将发行
《MicoPython入门指南》一书即将发行,这是第一本专业介绍MicroPython的中文书籍,请大家多关注和支持。​​...
shaoziyang 2017-07-13 19:50
micro:bit 专用电池扩展板
最近Microbit这么火,就想着要做点什么,于是就有了这个Microbit的专用电池扩展板。它完美配合原版的microbit,可以为microbit增加电池、蜂鸣器功能,功能上超过 MI:power...
shaoziyang 2017-06-13 09:09
用pyboard的dac播放音乐
官方的PyBoard带有DAC功能,使用DAC,我们可以播放简单的音乐。 先准备好两根铜丝,一个有源音箱,一个音频线。 然后从官方网站下载两个文件: http://micropython.org/...
shaoziyang 2017-06-13 09:03
microbit巡线小车 BoBBoT
BoBBoT 是一个使用 BBC micro:bit 控制的巡线小车套件,它很容易组装。 它特别为儿童设计,让孩子可以通过实践学习计算机科学概念。使用 BoBBoT 可以学习: 算法设计 (流程图和...
shaoziyang 2017-06-12 08:29
micropython升级到了 1.9.1
micropython升级到了 1.9.1,主要改进有: v1.9.1 修复了 stm32 的 USB 存储, lwIP 绑定和 VFS 问题 This release provides an imp...
我要评论
2
21
关闭 站长推荐上一条 /2 下一条