浅谈ARM裸板调试 收藏

转载自 http://blog.csdn.net/nanjianhui/archive/2009/05/15/4189270.aspx

原创作者: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 也需要做改动。

posted on 2010-06-07 22:44  xilentz  阅读(502)  评论(0编辑  收藏  举报