浅谈ARM裸板调试

转载自 http://blog.youkuaiyun.com/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 也需要做改动。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值