• 浅谈ARM裸板调试


    浅谈ARM裸板调试15309101313

    2009-8-3 13:56:11    收藏  |  打印  | 投票(1)  |  评论(0)  |  阅读(15938)  ◇字体:[

    作者:ARM-WinCE

    我所说的ARM裸板调试是指ARM的PCB板制作完后,贴片回来的板子,不但没有任何程序,上电都是第一次。之所以写一篇blog,是因为最近调试了一块ARM板,基于S3C6410的,但是我们把原来的M-DDR DRAM和Nandflash全部都换掉了,硬件做了不小的改动。以前也做过类似的裸板调试,从ARM7到ARM9,再到现在的ARM11。今天就来写一篇ARM裸板调试的文章。

    如我前面所说,刚拿到ARM裸板的时候,首先就是要上电。不过上电之前,最好测一下电源和地是否短路。然后就可以上电了,我一般采用稳压电源,这样可以看到电流的大小,如果电流太大,说明硬件可能有问题,用手摸摸板子上的芯片,看看是否烫手,查一下各个电源模块的供电电压是否正常。如果ARM板正常,就可以开始了。下面根据我个人经验,介绍调试步骤和可能遇到的问题:

    1. 连接仿真器,读写寄存器

    将硬件仿真器插到ARM板的JTAG口上,然后连接PC,现在的ARM仿真器好像都是通过USB和PC相连了。连接好后,就给板子上电,然后打开PC端的调试软件,我在这里用的是ARM11的仿真器,调试软件用AXD。如果AXD识别出ARM处理器表示连接成功,如果没识别出来就是有问题了。

    (1) 确认ARM处理器的所有供电是否正确

    (2) 确认ARM处理器的RESET管脚

    (3) 确认ARM处理器的晶振是否震动

    (4) 确认JTAG接口是否正确

    如果上面这4条都正常,仿真器就应该可以找到ARM。

    2. 通过脚本初始化ARM处理器及DRAM

    由于是裸板,所以ARM上电以后没有做过任何的初始化。一般会通过执行一个脚本来对ARM做一个基本的初始化。脚本一般就是一个txt文件,例如:

    setmem 0x36001004 0x4      32

    setmem 0x36001010 0x40d    32

    setmem 0x36001014 0x6      32

    setmem 0x36001018 0x3      32

    setmem 0x3600101c 0xf      32

    setmem 0x36001020 0xf      32

    setmem 0x36001024 0xf      32

    mem 0x36001000 +1          32

    mem 0x36001004 +1          32

    mem 0x36001008 +1          32

    mem 0x3600100c +1          32

    ….

    上面的脚本命令是用于AXD软件的,其中“setmem”命令表示设置某个值到某个地址上,而“mem”命令表示从某个地址读一个值并打印出来。通过这两条命令,可以设置ARM内部的寄存器,也可以读出寄存器的值。脚本的作用主要是对ARM做初始化,一般包括关闭Interrupt和watchdog,配置clock,配置GPIO,配置DRAM控制器。

    如何在AXD中运行脚本呢?首先在AXD菜单中选择”System Views”,然后选择”Command Line Interface”,会弹出一个窗口,在窗口中输入如下命令:

    ob c:\init.txt

    该命令的意思是运行C盘根目录下的init.txt中的脚本命令。如图:

    脚本运行完成以后,板子上的ARM和DRAM就应该已经被初始化好了。这时候可以做读写Memory的测试,在菜单中选择”Process Views”,然后选择”Memory”,输入DRAM的地址,然后修改一些地址上面的值,被改变后的值会变成红色,如果可以修改,表示DRAM应该工作正常了,这里给一张截图:

    3. 通过AXD下载程序到DRAM中运行

    接下来就是下载程序到DRAM中运行了,主要目的是通过该程序来烧录bootloader。现在的ARM处理器都很强大,支持多种启动模式。根据不同的启动模式,要将bootloader烧到不同的介质当中。在AXD菜单中选择”File”,然后选择”Load Memory from File…”,会弹出一个窗口,如下:

    如图要在”Address”输入下载的地址,这个地址就是Loader_RAM.bin的运行地址。下载成功以后,打开串口,然后在AXD的”Command Line Interface”中输入命令”setpc 0x50000000”,将PC指针指到0x50000000地址上,然后输入命令”go”开始运行。

    4. 烧录bootloader,启动ARM板

    被下载的程序运行以后,就可以通过该程序将bootloader烧录到Nandflash,NORflash或者SD卡中,具体取决于板子所支持的启动模式。这个程序可以通过串口下载bootloader。还有一种方法就是在AXD中暂停程序运行,然后通过仿真器下载bootloader到DRAM中,然后再在AXD中恢复程序运行,通过最开始下载的程序将下载的bootloader烧到flash或者SD卡当中。

    烧录成功以后,关电,拔掉仿真器的JTAG,重新上电,这个时候ARM板中的bootloader就可以运行了。

    bootloader运行后,工作就容易了。现在的bootloader都很强大,Linux有uboot,WinCE有Eboot,都能支持烧录,下载等功能。一般如果是买的开发板,都会提供烧录工具。不过在更换了DRAM和Nandflash以后,烧录工具可能也需要重新调试了。而且使用的bootloader也需要做改动。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nanjianhui/archive/2009/05/15/4189270.aspx

  • 相关阅读:
    从寻找资源的习惯上谈如何获得好的代码及控件(使用Koders查找)
    数据仓库的一些基本知识2
    淘宝API开发系列商家的绑定
    淘宝API开发系列开篇概述
    读取实体类的属性的备注作为表头的应用
    设置Windows服务允许进行桌面交互,实现屏幕监控
    C#进行Visio二次开发之组合形状操作
    吉日嘎啦通用权限管理系统解读及重构升华高度封装的编辑窗体
    WinForm界面开发之模块化分合
    CLR中的内存管理
  • 原文地址:https://www.cnblogs.com/cute/p/1968947.html
Copyright © 2020-2023  润新知