原创 AT91SAM9263调试总结

2009-8-10 16:44 3222 2 2 分类: EDA/ IP/ 设计与制造

AT91SAM9263调试总结<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


深圳市英贝德科技有限公司


www.embedall.com


20092


 


今天总算可以写一个总结了。


 


前天周五的时候,在百特雷工,和刘工的大力支持下,总算把SPI启动的问题解决了。


 


到底是什么问题呢:


 


       SPI DATA FLASH本身的质量有问题造成的。


 


反映的现象是:从SPI DATAFLASH0地址读取数据是没有任何问题的,但是如果从中间任何一段读取数据,就有严重的地址偏移问题。


 


调试过程及步骤如下:


 


 


原来认为是CPUAT91SAM9263A版本和B版本)版本有问题,造成无法读取FLASH造成,反馈的现象是:


 


DATA FLASH启动后,会将第一段代码EBOOT.nb0,存放于DATA FLASH0X5000偏移地址,加载后,会进行WINCE的引导。


 


但是实际结果是:


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 


从现象上看,DATA FLASH已经找到了,也就说明SPI线路是正确的,但是为什么读的数据有问题呢?


 


怀疑问题有如下几个:


第一:DATA FLASHSPI本身硬件有问题,可能存在干扰。


第二:在从DATA FLASH拷贝数据到SDRAM中,出现错误,数据不正确,SDRAM初始化有问题。


第三:因我们的SPI线路和以前的版本不同,采用了MAX3002进行了隔开,怀疑MAX3002本身造成SPI线路的 不稳定。


第四:CPU版本有问题,AT91SAM9263AB版本,SPI已经改过了,就我知道的是AT91SASM9263 B版本的SPI,需要两次复位才可以工作。


 


一个一个怀疑的问题进行验证:


 


第一:SAM BA 2.8可以对SDRAM进行初始化,都可以进行读写,说明SDRAM本身硬件上无问题。


 


第二:DATA FLASH SAMBA 2.8都可以进行读写,也无任何问题,同时启动代码可以正确执行。那么就应该可以证明SPI部分是能够工作的,但是问题在于AT91SAM9263 B版本内部的ROM BOOTAT91SAM9263 A版本的ROM BOOT有不同,那么就证明说:在SPI这个部分的初始化部分做了修正。所以,找到AT91SAM9263 B版本的SPI部分的ERR DATA SHEET。找问题。改了半天代码,问题还是依旧。


 


第三:实在没有办法了,<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />20081118,找到百特的雷工,初步认定是CPU版本的问题,我自己认为自己的代码水平比较落后,请求雷工帮忙,最后验证结果如下:


       DATA FLASH读出的数据,放到SDRAM后出现了问题,我们以前的老板子,是无问题的。可以正确将数据从DATA FLASH读出来,然后,显示在串口上。每次从DATA FLASH中读10个字节,发现读出来的数据每次都是一致的,但是就是不正确。


      


没有办法,雷工也是好久没有写代码了,只好约好第二天,到白特找他们的工程师刘工,刘工是我老乡,真的够朋友,那天晚上搞到半夜,最后验证出来,现象是:从DATA FLASH偏移0X8000地址中读取的数据放到SDRA M中,某一个位置找到差不多的数据。最后给出结果:可能是AT91SAM9263 B版本可能有问题,但是最大的问题是:SDRAM工作后,影响了SPI的稳定性。


 


第四:太晚了,大家都各自回家了(这个时候我找百特定好了A版本的CPU,说是他们现在没货,第二天能送来),实在是没有任何头绪了,没有办法,赶快定了CPUAT91SAM9263 A版本,恰好,百特没有货,他们老板从香港定来后,我们拿到,赶快去贴上,这个过程不过是1天的时间,下午了,下午3点就搞好,带上测试软件,跑到李工(我们焊接的师傅)那里,把工具全部架好,一测试,郁闷死了,竟然还是不行。天呀……


 


第五:看来A版本也不行,那只能怀疑是板的布线有问题了,因为没有别的办法可以想了,这个时候,我反倒放松了,因为我认为问题已经找到了。但是,到底是SPI的哪条线受到了干扰呢?我对百特刘工的话深信不已。实在没有办法,上午我赶快拿着A版本的板子跑到百特,找到刘工,(想把他验证的结果再重演一下,刘工改了半天,发现是从DATA FALSH0地址,读出来数据放到SDRAM中是无问题的,一直也怀疑SDARM初始化有问题)根据这几天的测试结果,发现有一个疑点,我发现A版本的芯片,我写了一个小程序,从DATA FLASH中读取数据放到SRAM中也是不正确的。而且,和以前的测试结果完全一样。一直怀疑和芯片有关系,现在看,可以完全排除芯片AT91SAM9263的问题了。


 


第六:从DATA FLASH中读取数据放到SRAM中也是不正确的(我把SDRAM关闭了),我就推翻了刘工说的SDRAMSPI DATA FLASH有干扰想法。


 


刘工发现是从DATA FALSH0地址,读出来数据放到SDRAM中有大部分是相同的,这次把代码全部恢复过来,把DATA FLASH0地址的数据放到0X23F00000LINUX引导程序U-BOOT的地址)-0X8000的位置,这样,就可以保证在0X23F00000的位置上,有正确的U-BOOT程序。但是,等程序运行起来,还是没有得到正确的启动结果。有可能是有部分数据读出来后,还是有不正确的。


 


第七,实在是没有办法了,我们开始怀疑DATA FLASH有问题,恰好,我也问过我们的LISALISA是我们的采购,我原来一直认为这个DATA FLASH是从百特采购的,最后发现这个东西是从市场上采购来的,我很晕了,但是当时问LISA的时候,我没有放在心上,LISA说这个芯片是原装的),恰好我带上了一个我们老版本的板子,将老版本的板的DATA FLASH换上去后,完全OK了。


 


到现在为止:一个郁闷了我两个星期的问题终于解决了。


 


感谢百特雷工的帮忙和刘工的帮忙。说这个事情,已经是下午4点的事情了,买了百特的DATA FLASH,回到公司,赶快让他们全部换上新的DATA FLASH。问题解决了。


 


 


 


 


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条