我所说的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也需求做改动。