公司最近的一批产品中使用了AT91SAM7X256,在下程序的时候发现一部分片子下不进程序,现象是这样的,在HJTAG下能通过WIGLER检测到ARM核,如图
然后进入HFLASHER,但Check不到型号,显示Error:Can't
halt target and make it enter DEBUG state.如图
有些板子换了单片机后能用了,有的还是不行.感觉单片机是加在板子上才出的问题,于是怀疑是电路上的问题,但是各部分的电压都正常.在21IC的网友指点下,我通过ERASE脚加高电平50MS以上,擦除全部FLASH,并解除FLASH锁.再次上电后重新Check,OK,下载OK!!!!!.
困扰的问题解决了,我思考原因,注意到在写程序的时候外部看门狗给单片机复位了,有些单片机在写程序时复位了就再不能写了,问题和上面提到的一样!我查了Datasheet注意到了:
AT91SAM7X256有一个安全位。它是一个特殊的NVM位。当安全位使能时,对Flash的所
有访问,包括通过ICE接口或快速Flash编程接口,都被禁止。从而 保护了Flash的内容。
这个安全位只能通过EFC 用户接口的“ 设置安全位” 命令来使能。而禁止安全位只能通
过将ERASE引脚拉高,将整个flash 全部擦除。在安全位为禁止状态的情况下,对 flash
的所有操作都可以进行。很重要的一点是,拉高ERASE 引脚的时间必须大于50 ms。
由于ERASE集成了下拉电阻, 在正常工作模式下这个引脚可以悬空。不过将它直接连接到GND 也是安全的。很重要的一点是,拉高ERASE 引脚的时间必须大于50 ms。
我认为是在复位的时候 将Flash锁了. 其它的原因暂时还没想到! 欢迎大家提出自己的见解!