博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

兵兵的妞妞 每天进步一点点 持之以恒

for life for achievement
niuniu711.cublog.cn


LiARM电路板问题: 不能检测到NAND FLASH与vivi不能正常启动


问题1:LiARM电路板问题: 不能检测到NAND FLASH与vivi不能正常启动

花了半个月才解决问题 10月初至10月15日

1. 问题描述,从硬件与软件角度
   A) 利用烧写工具:sjf2410-s.exe,并不能检测到NAND FLASH型号
   B) 如果通过实验箱烧写好了vivi,插到自己电路板VIVI不能正常启动,
       停在:Succeed memory mapping.
   C) 偶尔的情况,可以识别NAND Flash,并且烧写vivi启动代码 ?

2. 硬件角度分析与解决方法
   JTAG接口是否正常工作
      与其他硬件设计方案比较,推断硬件设计是否有问题
      NAND FLASH不能启动,由于其相关逻辑控制信号 硬件设计的问题
      从NAND FLASH控制器PDF开始,分析控制信号、数据信号、地址信号
      从硬件角度,分析各个信号,看JTAG与ARM核心板之间出了什么问题
      首先判断JTAG口是否是好的。可以通过ADS下载程序来进行试验

   sjf2410是否正确通过JTAG读取NAND Flash型号,sjf2410是否有问题
      弄清楚JTAG调试(JTAG对外围器件的访问,尤其对NAND Flash的访问)
      sjf2410如何通过JTAG口,扫描得到NAND Flash的型号
      通过跟踪sjf2410,看那一步读写JTAG来识别NAND Flash出问题
      找不到sjf2410的VC++源码,因为需要源码,在中间加入print来看它的运行
         尝试在linux(非虚拟机下)利用sjf2410通过并口烧写vivi,跟踪sjf2410
      由于有sjf2410的Linux下的源码
      因为在虚拟机Linux下,并口总是不能正常使用

   分析其他对于核心板的输入信号。是否会影响JTAG对NAND Flash的访问
     其他信号(包括控制信号)对JTAG的影响
     用另一块电路板,只焊接电源、JTAG、核心板 用sjf2410进行烧写

3.  vivi角度分析与解决方法
    mtd_dev_init()用来扫描所使用的NAND Flash的型号,构造MTD设备
    就算JTAG烧写没有问题,那么这个地方检测NAND Flash型号也有问题。
    这个问题是否与JTAG不能检测到NAND Flash有关系
    这样调试的麻烦在于:
        虽然有了vivi源代码,但需要在JTAG口能正确烧写的情况下,
        否则得每次通过实验箱插拔,然后插到自己的板子上运行来调试
    分析方法:
        1. 了解bootloader vivi启动代码的原理
        2. 了解mtd_dev_init()的作用,仔细分析问题在于哪个地方
        3. 可以通过重新烧写vivi,利用print判断问题出在那个地方

4. 已经检查过的问题
   1. JTAG的相关信号
        ICE_nTRST    TAP复位信号(ARM芯片nTRST为输入)
        TDI  
        TMS          布线不合适,出现直角
        TCK  
        TDO  
        ICE_nSRST    从外部JTAG接口(板)引出的使系统reset的信号

   2. NAND Flash的相关信号
        FRB  
        FCLE 
        FALE 
        nFEW 
        nFRE 
        nFCE 
        nFWP 
        I/O 0-7 
        均与ARM相连,属于核心板内部。与扩展板没有关联

   3. 其他控制信号(对于核心板为输入的信号)
     NetWork :
        LnWE
        LnOE
        LnWBE1
        CAN :
        GPH0
        SPICLK0
        MOSI0
        MOSO0

5. 目前可以do的工作 just do, don’t stop
   掌握硬件原理、掌握ARM9的体系结构,外围接口,寻址等。对硬件进行调试
   利用ADS,通过JTAG对ARM9进行程序烧写调试,对寄存器、内存、flash进行操作
   分析sjf2410代码、掌握JTAG的根本原理、包括硬件与软件JTAG烧写的过程原理
   分析VIVI启动代码,掌握VIVI的原理

6. 发现的问题
   TMS布线不合适,出现了直角。是否有影响

7. 问题解决
   在linux下,通过Zflash的源码,通过对源码的print跟踪,
   发现程序最后在死循环里。条件涉及nWAIT与NCON信号。
   S3C2410的控制信号nWAIT信号,不用时,需要接上拉电阻
   nWAIT input信号
      等待延迟信号,用来请求延长当前总线周期。低电平时当前总线周期尚未完成。
      设计系统时不使用该信号,需接上拉电阻。

发表于: 2007-10-17 ,修改于: 2008-09-18 21:56,已浏览435次,有评论3条 推荐 投诉


网友评论
内容:
恭喜哦~
描述的好象和电影里特种兵的手势一样专业...
Chiney评论于:2007-11-06 20:16:29 (219.239.227.★)
内容:
我也遇到了和作者一样的问题,正在苦恼中,按照作者的描述,我检查了学习板的原理图,nWAIT脚已经接了上拉电阻. 请问还有没有别的原因?
本站网友评论于:2007-11-27 19:27:09 (211.137.37.★)
内容:
最直接的方法,就是用代码跟踪去调试了。
光想要花很多时间,一个问题可能摆在你眼前,
可能意识不到。
用代码跟踪去调试
niuniu711 评论于:2007-12-03 21:35:17 (219.239.227.★)

发表评论