关于JTAG 无法识别nor flash的有关问题。Flash id does not match. Please make sure that the rig

关于JTAG 无法识别nor flash的问题。Flash id does not match. Please make sure that the right关于错误的

关于JTAG 无法识别nor flash的问题。Flash id does not match. Please make sure that the right
关于错误的将用户或者测试程序烧写到Nor Flash中导致JTAG无法识别flash 不能对芯片进行烧写,擦除等操作。本人终于找到了一种方法解决,所以特别写一篇日志记录一下,首先声明我个人虽然认真的思考过,试图解决问题,但是最终问题的解决还是靠一篇百度帖子让我脱离泥潭。帖子地址如下http://hi.baidu.com/wolfwhite/item/761259f2dbf345cf521c260e (认真的去尊重原创版权,以下的内容只是个人解决问题的过程,和对具体问题解决方法的补充。)
当然了尤其是对于硬件能够出现的问题各种各样,不能一一列举,也不能一概而论,所以这种方法也不可能解决所有的问题。
问题起因:个人还算熟悉winCE和linux系统的烧写,于是感觉这东西应该和单片机一样吧,于是找了个测试程序随意烧写到了Nor flash和nand flash中,结果使test程序代替了u-boot。每次开机的时候都执行test程序。使用jtag和j-link 对nor flash进行烧写的时候出现如下的错误。
关于JTAG 无法识别nor flash的有关问题。Flash id does not match. Please make sure that the right
 
。后来我才意识到ARM确实不像单片机一样,没那么简单,接下来的时间就是在试图各种方法烧写u-boot程序。虽然经过各种尝试不得不说错误的方法对于问题的解决于事无补。最值得一提的是网上大多数的方法----修改H-JTAG\FDevice\SST文件夹下的对应flash文件。大体做法如下。。http://blog.csdn.net/dearwind153/article/details/7183107  这篇日志写的挺详细的,或许应该能解决这类问题,但是我的问题不是用这种方法解决的。。

解决方法如下:
当然了具体的JTAG设置初始化脚本什么的如同您自己的系统板设置,这个不可雷同。关键点就在于。对H-JTAG Flasher 界面内的脚本进行更改。点击3号选项得到上图然后点击右侧的箭头,顺便留意一下箭头功能,然后选择哪个提示:添加的按钮。软件自动增加一行 然后点击Cmd列为该行添加命令。命令有delay  setmem  等选项然后选择softreset(软件复位)。 其他的选项点不动,所以就这样,然后将新添加的这一行移动到第一行---使他的Idx=1然后再去programing选项卡那边去check 去下载就行了。。。。
关于JTAG 无法识别nor flash的有关问题。Flash id does not match. Please make sure that the right
讲的还算详细吧,具体的问题需要具体的对待。对于硬件一种方法不能应对所有的情况。事情就这样解决了。

反思:对于ARM芯片相对于单片机 多了很多功能,MMU,BOOTBLOCK等器件我们使用随意的程序区代替u-boot。就使 这些部件不能正常的初始化,boot程序的作用其中有一部分就是对芯片初始化,配置,让硬件正常工作,我错误的使用任意程序去代替boot程序,这些初始化操作无法被顺利执行。导致系统板一上电就执行test程序,由于没有对mmu 等部件合理设置,导致使用JTAG烧写的时候面对的是有逻辑错误的flash,于是在初始化脚本中 加入一条软件复位语句,然后进行烧写就避开了这个问题。接下来再去烧写其他的winCe 或者linux系统 由 超级终端 dnw 配合boot程序 对写入操作进行正确的引导。。我个人感觉是这样的。
呵呵好像有好多的话要说,昨天下午错误的操作,导致了太多的纠结,但是当问题被解决的那一刹那感觉真的很爽。真心的要想学好一件东西,首先要试着把它弄坏,然后再试着将他修好。虽然很纠结。但是从中确实能得到很多的体会。按部就班的做下去,会让我们错失很多体验经历新东西的机会。问题并不会因为我们没有遇到而表明它不存在了。2013-7-12 17:45:05
Flash JTAG nor?flash
[解决办法]
帖子先收藏了,一下子也没看懂,以后到烧写自己的boot程序时再来仔细看看。
先谢谢楼主,以后遇到这类问题就不担心了,呵呵。