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

智能制造网免费3

收藏

AT91SAM9263调试总结

时间:2009-08-10      阅读:1974

 

AT91SAM9263调试总结
 
深圳市英贝德科技有限公司
2009年2月
 
今天总算可以写一个总结了。
 
前天周五的时候,在百特雷工,和刘工的大力支持下,总算把SPI启动的问题解决了。
 
到底是什么问题呢:
 
       SPI DATA FLASH本身的质量有问题造成的。
 
反映的现象是:从SPI DATAFLASH的0地址读取数据是没有任何问题的,但是如果从中间任何一段读取数据,就有严重的地址偏移问题。
 
调试过程及步骤如下:
 
 
原来认为是CPU(AT91SAM9263有A版本和B版本)版本有问题,造成无法读取FLASH造成,反馈的现象是:
 
当DATA FLASH启动后,会将*段代码EBOOT.nb0,存放于DATA FLASH的0X5000偏移地址,加载后,会进行WINCE的引导。
 
但是实际结果是:
 
从现象上看,DATA FLASH已经找到了,也就说明SPI线路是正确的,但是为什么读的数据有问题呢?
 
怀疑问题有如下几个:
*:DATA FLASH的SPI本身硬件有问题,可能存在干扰。
第二:在从DATA FLASH拷贝数据到SDRAM中,出现错误,数据不正确,SDRAM初始化有问题。
第三:因我们的SPI线路和以前的版本不同,采用了MAX3002进行了隔开,怀疑MAX3002本身造成SPI线路的 不稳定。
第四:CPU版本有问题,AT91SAM9263从A到B版本,SPI已经改过了,就我知道的是AT91SASM9263 B版本的SPI,需要两次复位才可以工作。
 
一个一个怀疑的问题进行验证:
 
*:SAM BA 2.8可以对SDRAM进行初始化,都可以进行读写,说明SDRAM本身硬件上无问题。
 
第二:DATA FLASH ,SAMBA 2.8都可以进行读写,也无任何问题,同时启动代码可以正确执行。那么就应该可以证明SPI部分是能够工作的,但是问题在于AT91SAM9263 B版本内部的ROM BOOT和AT91SAM9263 A版本的ROM BOOT有不同,那么就证明说:在SPI这个部分的初始化部分做了修正。所以,找到AT91SAM9263 B版本的SPI部分的ERR DATA SHEET。找问题。改了半天代码,问题还是依旧。
 
第三:实在没有办法了,2008年11月18日,找到百特的雷工,初步认定是CPU版本的问题,我自己认为自己的代码水平比较落后,请求雷工帮忙,zui后验证结果如下:
       从DATA FLASH读出的数据,放到SDRAM后出现了问题,我们以前的老板子,是无问题的。可以正确将数据从DATA FLASH读出来,然后,显示在串口上。每次从DATA FLASH中读10个字节,发现读出来的数据每次都是一致的,但是就是不正确。
      
没有办法,雷工也是好久没有写代码了,只好约好第二天,到白特找他们的工程师刘工,刘工是我老乡,真的够朋友,那天晚上搞到半夜,zui后验证出来,现象是:从DATA FLASH偏移0X8000地址中读取的数据放到SDRA M中,某一个位置找到差不多的数据。zui后给出结果:可能是AT91SAM9263 B版本可能有问题,但是zui大的问题是:SDRAM工作后,影响了SPI的稳定性。
 
第四:太晚了,大家都各自回家了(这个时候我找百特定好了A版本的CPU,说是他们现在没货,第二天能送来),实在是没有任何头绪了,没有办法,赶快定了CPU,AT91SAM9263 A版本,恰好,百特没有货,他们老板从香港定来后,我们拿到,赶快去贴上,这个过程不过是1天的时间,下午了,下午3点就搞好,带上测试软件,跑到李工(我们焊接的师傅)那里,把工具全部架好,一测试,郁闷死了,竟然还是不行。天呀……
 
第五:看来A版本也不行,那只能怀疑是板的布线有问题了,因为没有别的办法可以想了,这个时候,我反倒放松了,因为我认为问题已经找到了。但是,到底是SPI的哪条线受到了干扰呢?我对百特刘工的话深信不已。实在没有办法,上午我赶快拿着A版本的板子跑到百特,找到刘工,(想把他验证的结果再重演一下,刘工改了半天,发现是从DATA FALSH的0地址,读出来数据放到SDRAM中是无问题的,一直也怀疑SDARM初始化有问题)根据这几天的测试结果,发现有一个疑点,我发现A版本的芯片,我写了一个小程序,从DATA FLASH中读取数据放到SRAM中也是不正确的。而且,和以前的测试结果*一样。一直怀疑和芯片有关系,现在看,可以*排除芯片AT91SAM9263的问题了。
 
第六:从DATA FLASH中读取数据放到SRAM中也是不正确的(我把SDRAM关闭了),我就推翻了刘工说的SDRAM对SPI DATA FLASH有干扰想法。
 
刘工发现是从DATA FALSH的0地址,读出来数据放到SDRAM中有大部分是相同的,这次把代码全部恢复过来,把DATA FLASH的0地址的数据放到0X23F00000(LINUX引导程序U-BOOT的地址)-0X8000的位置,这样,就可以保证在0X23F00000的位置上,有正确的U-BOOT程序。但是,等程序运行起来,还是没有得到正确的启动结果。有可能是有部分数据读出来后,还是有不正确的。
 
第七,实在是没有办法了,我们开始怀疑DATA FLASH有问题,恰好,我也问过我们的LISA(LISA是我们的采购,我原来一直认为这个DATA FLASH是从百特采购的,zui后发现这个东西是从市场上采购来的,我很晕了,但是当时问LISA的时候,我没有放在心上,LISA说这个芯片是原装的),恰好我带上了一个我们老版本的板子,将老版本的板的DATA FLASH换上去后,*OK了。
 
到现在为止:一个郁闷了我两个星期的问题终于解决了。
 
感谢百特雷工的帮忙和刘工的帮忙。说这个事情,已经是下午4点的事情了,买了百特的DATA FLASH,回到公司,赶快让他们全部换上新的DATA FLASH。问题解决了。
 
 
 
 
 
 
上一篇: EAC-C925开机画面实现手册 下一篇: AT91SAM9263应用,英贝德科技再显身手!
提示

请选择您要拨打的电话: