新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM裸板調(diào)試技術(shù)

ARM裸板調(diào)試技術(shù)

作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
我所說的ARM裸板調(diào)試是指ARM的PCB板制作完后,貼片回來的板子,不但沒有任何程序,上電都是第一次。之所以寫一篇blog,是因?yàn)樽罱{(diào)試了一塊ARM板,基于S3C6410的,但是我們把原來的M-DDR DRAM和Nandflash全部都換掉了,硬件做了不小的改動。以前也做過類似的裸板調(diào)試,從ARM7到ARM9,再到現(xiàn)在的ARM11。今天就來寫一篇ARM裸板調(diào)試的文章。

本文引用地址:http://m.butianyuan.cn/article/201611/317873.htm

如我前面所說,剛拿到ARM裸板的時(shí)候,首先就是要上電。不過上電之前,最好測一下電源和地是否短路。然后就可以上電了,我一般采用穩(wěn)壓電源,這樣可以看到電流的大小,如果電流太大,說明硬件可能有問題,用手摸摸板子上的芯片,看看是否燙手,查一下各個(gè)電源模塊的供電電壓是否正常。如果ARM板正常,就可以開始了。下面根據(jù)我個(gè)人經(jīng)驗(yàn),介紹調(diào)試步驟和可能遇到的問題:

1. 連接仿真器,讀寫寄存器

將硬件仿真器插到ARM板的JTAG口上,然后連接PC,現(xiàn)在的ARM仿真器好像都是通過USB和PC相連了。連接好后,就給板子上電,然后打開PC端的調(diào)試軟件,我在這里用的是ARM11的仿真器,調(diào)試軟件用AXD。如果AXD識別出ARM處理器表示連接成功,如果沒識別出來就是有問題了。

(1) 確認(rèn)ARM處理器的所有供電是否正確

(2) 確認(rèn)ARM處理器的RESET管腳

(3) 確認(rèn)ARM處理器的晶振是否震動

(4) 確認(rèn)JTAG接口是否正確

如果上面這4條都正常,仿真器就應(yīng)該可以找到ARM。

2. 通過腳本初始化ARM處理器及DRAM

由于是裸板,所以ARM上電以后沒有做過任何的初始化。一般會通過執(zhí)行一個(gè)腳本來對ARM做一個(gè)基本的初始化。腳本一般就是一個(gè)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”命令表示設(shè)置某個(gè)值到某個(gè)地址上,而“mem”命令表示從某個(gè)地址讀一個(gè)值并打印出來。通過這兩條命令,可以設(shè)置ARM內(nèi)部的寄存器,也可以讀出寄存器的值。腳本的作用主要是對ARM做初始化,一般包括關(guān)閉Interrupt和watchdog,配置clock,配置GPIO,配置DRAM控制器。

如何在AXD中運(yùn)行腳本呢?首先在AXD菜單中選擇”System Views”,然后選擇”Command Line Interface”,會彈出一個(gè)窗口,在窗口中輸入如下命令:

ob c:/init.txt

該命令的意思是運(yùn)行C盤根目錄下的init.txt中的腳本命令。如圖:

腳本運(yùn)行完成以后,板子上的ARM和DRAM就應(yīng)該已經(jīng)被初始化好了。這時(shí)候可以做讀寫Memory的測試,在菜單中選擇”Process Views”,然后選擇”Memory”,輸入DRAM的地址,然后修改一些地址上面的值,被改變后的值會變成紅色,如果可以修改,表示DRAM應(yīng)該工作正常了,這里給一張截圖:

3. 通過AXD下載程序到DRAM中運(yùn)行


接下來就是下載程序到DRAM中運(yùn)行了,主要目的是通過該程序來燒錄bootloader。現(xiàn)在的ARM處理器都很強(qiáng)大,支持多種啟動模式。根據(jù)不同的啟動模式,要將bootloader燒到不同的介質(zhì)當(dāng)中。在AXD菜單中選擇”File”,然后選擇”Load Memory from File…”,會彈出一個(gè)窗口,如下:


如圖要在”Address”輸入下載的地址,這個(gè)地址就是Loader_RAM.bin的運(yùn)行地址。下載成功以后,打開串口,然后在AXD的”Command Line Interface”中輸入命令”setpc 0x50000000”,將PC指針指到0x50000000地址上,然后輸入命令”go”開始運(yùn)行。

4. 燒錄bootloader,啟動ARM板

被下載的程序運(yùn)行以后,就可以通過該程序?qū)ootloader燒錄到Nandflash,NORflash或者SD卡中,具體取決于板子所支持的啟動模式。這個(gè)程序可以通過串口下載bootloader。還有一種方法就是在AXD中暫停程序運(yùn)行,然后通過仿真器下載bootloader到DRAM中,然后再在AXD中恢復(fù)程序運(yùn)行,通過最開始下載的程序?qū)⑾螺d的bootloader燒到flash或者SD卡當(dāng)中。

燒錄成功以后,關(guān)電,拔掉仿真器的JTAG,重新上電,這個(gè)時(shí)候ARM板中的bootloader就可以運(yùn)行了。

bootloader運(yùn)行后,工作就容易了?,F(xiàn)在的bootloader都很強(qiáng)大,Linux有uboot,WinCE有Eboot,都能支持燒錄,下載等功能。一般如果是買的開發(fā)板,都會提供燒錄工具。不過在更換了DRAM和Nandflash以后,燒錄工具可能也需要重新調(diào)試了。而且使用的bootloader也需要做改動。



關(guān)鍵詞: ARM裸板調(diào)試技

評論


技術(shù)專區(qū)

關(guān)閉