RealView MDK+Jlink+TQ2440 調(diào)試筆記
從上圖我們可以看到hex文件已經(jīng)生成了,還告訴我們,我們的代碼大小為920字節(jié),只讀數(shù)據(jù)為16字節(jié),可讀寫數(shù)據(jù)為0,ZI數(shù)據(jù)為1256字節(jié)。
好,下面我們就把它燒到我們的開發(fā)板中。我們還需要配置一下燒寫選項(xiàng)我們還是選擇工程屬性然后選Utilities選項(xiàng)然后在燒寫選項(xiàng)中選J-LINK/J-Trace,然后去掉Update Target before Debugging選項(xiàng),最后點(diǎn)Settings添加燒寫算法,這里沒有針對(duì)我們的norflash EN29LV160AB的算法,我們只選一個(gè)相近的如我選的是AM29F160DBFlash,但是這個(gè)算法只能燒寫不能擦除(有興趣的話可以自己寫一個(gè)燒寫算法)。
好了萬事具備只欠JLINK了,不過在燒寫之前請(qǐng)確認(rèn)你已經(jīng)安裝了JLINK的驅(qū)動(dòng),JLINK的驅(qū)動(dòng)可以到SEGGER官方下載Software and documentation pack V4.14b ,驅(qū)動(dòng)安裝好了以后我們接上開發(fā)板,然后在把開發(fā)板的啟動(dòng)方式改為從norflash啟動(dòng),然后啟動(dòng)開發(fā)板,最后點(diǎn)Download,如果沒有意外的話,你就可以看到led的開始閃了。
4.調(diào)試跑馬燈程序
光能下載可不行,我們最主要的是能調(diào)試,下面我們看看怎么在RealView MDK下調(diào)試程序,其實(shí)RealView MDK的高度功能要比ads1.2好用的多。我們打開工程屬性先Debug選項(xiàng)然后選擇Use J-LINK/J-Trace,然后點(diǎn)Settings,在其中選擇JTAG Speed為Auto Selection,先擇Reset Strategy為Hardware,halt with BP@0。最后選上Run to main(),這樣在調(diào)試的時(shí)候會(huì)自動(dòng)停到我們的main函數(shù)入口。此外我們不需要一個(gè)調(diào)試初始化文件,這個(gè)文件不用寫,我們可以在RealView MDK的例子中找到它,比如在我機(jī)子上是D:ToolElectronicRealViewMdkARMBoardsSamsungS3C2440RTX_Blinky下的Ext_ARM.ini,我們把它拷到我們的工程目錄下然后在Initialization File中選擇它就OK了。
還有一個(gè)地方我們得改就是程序的內(nèi)存地址,剛剛我們燒寫的時(shí)候用的是起始地址為0大小2M的設(shè)置,而這個(gè)地址0對(duì)應(yīng)的正好是我們的norflash的地址。而現(xiàn)在我們調(diào)試的時(shí)候是直接把代碼載入到內(nèi)存(也就是sdram)中,在s3c2440上它對(duì)就的地址是0×30000000所以我們要把ROM的起始地址改為0×3000000,相應(yīng)的RAM起始地址改為0×30200000,大小不變。
好了,調(diào)試選項(xiàng)都設(shè)置好了,我們開始調(diào)試,如果沒有意外的話會(huì)出現(xiàn)下面所示
我們可以看到它的調(diào)試環(huán)境很友好,很像vs之類的,左邊是各個(gè)寄存器的值右上是匯編代碼,下面是對(duì)應(yīng)源碼當(dāng)前指針停在main中,我們可以單步調(diào)試,還可以下斷點(diǎn)。還可以查看內(nèi)存之類的信息等。
如果我們沒有JLINK還可以用RealView MDK自帶的仿真器方法是在Debug選項(xiàng)中選擇Use Simulator選項(xiàng)就可以了。如果出現(xiàn)了*** error 65: access violation at 0×53000008 : no ‘write’ permission類似這樣的的錯(cuò)誤,可以試著去掉啟動(dòng)代碼中的看門狗和時(shí)鐘的設(shè)置。
附上跑馬燈的工程
評(píng)論