? ? 一、ADS生成bin的方法
Edit》DebufRel settings》Target Settings》Post-Linker》ARM fromELF
然后在ARM FromELF》Plain binary
下面的路徑 似乎不用設(shè)置,空著就ok,我設(shè)了反倒出不來bin。奇怪。還有就是在代碼框,也要設(shè)置DebufRel settings一遍,好像分開的。ok。
二、ARM在ADS1.2調(diào)試的設(shè)置(RAM調(diào)試)
對于ARM來說調(diào)試程序有兩種方式,1.將程序下載到RAM里仿真.2.下載到FLASH里仿真。下面我們首先說一下在RAM里放著的編譯器設(shè)置及調(diào)試代理軟件的使用方法。
首先,安裝ADS12(555,沒錢啊有錢就搞ULINK了在MDK在仿真了),然后去網(wǎng)上隨便down一個,LEDTEST的44B0(我用的是44b0的開發(fā)板)例程來。
然在從網(wǎng)上下載個,H-JTAG或是BANYAN,ARM7都行這些軟件叫做調(diào)試代理軟件,有他們我們就可以用廉價的WIGGLER或是JTAG(244的)簡單仿真器,來實(shí)現(xiàn)一些調(diào)試的絕大部分功能了。
1.打開LEDTEST工程文件。然后在Target-》linker項(xiàng)目選擇 ARM linker。
Target-》postlinker項(xiàng)目選擇 ARM formELF
2.在linker-》ARM linker-》simple image選項(xiàng)中的 RO base 中填寫 0xc008000 RW base 不填。
?。ㄗ⒁猓哼@項(xiàng)要根據(jù)你的開發(fā)板實(shí)際填寫,我的44B0 SDRAM掛在了bank6上,而bank6的起始地址是0x0c000000,所以我可以添0xc000000以后的地址,但不要太靠后了保證的的程序能放的下,注意不要超出她的范圍,44b0 bank6地址最大為0xe000000)
linker-》ARM linker-》option選項(xiàng)的 image entry point里面 填寫鏡像進(jìn)入地址,這里也添0xc008000.
linker-》ARM linker-》layout選項(xiàng)的place at beginning of image 中填寫鏡像加載前須處理的文件(該文件一般最后都會有這條語句“bl Main”跳到主程序處),這里一般填寫初始化文件,如INIT的,我的44bo為44binit.S則填寫44binit.o文件后面的區(qū)域名添init因?yàn)樵撐募镆话悴恢挂黄饏^(qū)域我的就還有個ramdata的Area這里的Area是ARM偽指令,關(guān)于偽指令部分可查閱我的另一篇文章。
linker-》ARM fromELG-》output format 是文件輸出格式,是燒寫FLASH用的二進(jìn)制文件或是HEX因?yàn)槲覀兪窃赗AM里仿真所有可不填.output file name 也是同樣。
3.運(yùn)行仿真代理軟件,運(yùn)行檢測CPU,檢測目標(biāo)板,(【注意】一般要將并口設(shè)置成EEP模式,如果是筆記本的并口可能不支持該模式,則也可以選擇ECP模式(我在我的IBMT43上是可以的),然后還要在設(shè)備管理器的并口設(shè)置里面,設(shè)置成允許使用分配該并口的任何中斷,如果你設(shè)置禁止使用中斷,調(diào)試代理是檢測不到你的片子的)能檢測出型號的就表示連接正確。
然后運(yùn)行AXD開始設(shè)置AXD,AXD設(shè)置比較簡單,在configure interface-》general-》target connection選項(xiàng)中選ATTACH在configure target 里面選擇驅(qū)動類型,前面運(yùn)行的調(diào)試代理就是在這里選擇的,一般如果用ARM7的調(diào)試代理就設(shè)置第一項(xiàng),第二項(xiàng)是軟件仿真,如果用其他代理則點(diǎn)ADD,選擇調(diào)試代理的DLL文件,一般在安裝后的文件目錄里都能找到,完成后點(diǎn)configure 看看有沒有跳出代理的窗口,好完成。
現(xiàn)在你就可以加載image文件來仿真程序了。
順便說下,在RAM仿真時,我的機(jī)器是筆記本,有個并口,不過不支持EEP只支持ECP我選的ECP然后用banyan和h-jtag都好用,但是ARM我沒連成功,估計(jì)可能是接口的問題。
三、ADS路徑問題
以前寫代碼的時候都是形如:
#include “。.inc44b.h”
#include “。.inc44blib.h”
后來發(fā)現(xiàn),在ads里面工程屬性-》target-》access path里面勾選上Always Search User Paths就可以這樣了~~~哎,發(fā)現(xiàn)的好晚啊~~~
#include “44b.h”
#include “44blib.h”
四、關(guān)于ADS的軟件仿真
在ADS中點(diǎn)“debug”,打開AXD,選option——》Configure taget——》選擇ARMUL,然后,在“ARMTDMI”上點(diǎn)右鍵,“Load Image”,去打開編好的axf文件。
五、ADS中查找函數(shù)的方法
在ADS中,環(huán)境下編寫程序時,右鍵單擊一個函數(shù)名選擇“go to definition”以后,可到其函數(shù)原型處。查看search的下拉菜單,有“go back”或快捷鍵(cttl+shift+b) 可回到原位置。
六、Error : A1163E: Unknown opcode SOURCE.S line 46
Answer:
查看是否用了中文的標(biāo)點(diǎn)符號(,;等),
若是標(biāo)識符(定義的變量,常量等)要頂格寫,其后面不能跟:
若是指令不能頂格寫
七、Error : A1150E: Bad symbol SOURCE.S line 49
49 00000070 LDR R1,=INTMAK ; 設(shè)置中斷屏蔽寄存器,只允許定時器0中斷
A: LDR R1,=INTMAK 指令中INTMAK未定義。而是定義了INTMASK(INTMASK EQU 0x3FF4008)
八、C_CALL_ASM
問題:在ads1.2中按下F7調(diào)試好后,按下F5或者(Ctl+F5)進(jìn)入AXD,跳出來的不是C源程序或匯編程序文件,而是disassembly的窗口。之后也不知道處理如何進(jìn)入源代碼的窗口。
原因:ADS ARM Linker下沒有設(shè)置Place at begining of image,這里要設(shè)置映象文件的入口段,就是ResetEntry所在的那個代碼段
解決方案:Edit/DebugRel Setting/ARM Linker/Layout/Place at beginnig of image
的Object/Symbol框中填入在Options中設(shè)置的入口地址(Image entr point)
九、進(jìn)入AXD后 fileLoad image 菜單是不可用的灰色狀態(tài)
解決方案:
OptionsConfigure target
選擇其中一個調(diào)試器,默認(rèn)的已選ARMUL,直接按OK即可
十、Error:(Fatal)L6015:Could not any input file to link
文件沒有添加到工程文件中
解決:切換到工程文件界面,右鍵單擊Add file
十一、Error:L6207E:Invalid argument for -keep/-first/-last command:‘0x8000’
解決:Edit/DebugRel Setting/ARM Linker/Layout/Place at beginnig of image
的Object/Symbol框中填入在Options中的入口地址值沒設(shè)置正確,改為entry后符號地址即可
十二、#include file wouldn‘t open
將#include 改為#include “ucos_ii.h”
《》編譯器從標(biāo)準(zhǔn)庫路徑開始搜索
“”編譯器從用戶的工作路徑開始搜索filename.h ,如果沒有找到再從標(biāo)準(zhǔn)庫路徑開始搜索 filename.h
十三、Warning: L6304W: Duplicate input file E:armAppMyUartMyUart_DatadebugRelObjectCode****.o ignored
解決:DebugRelObjectCode里的****.o文件重復(fù)輸入,原來是我把.s文件和.c文件取了相同的名字,它們都會生成.o文件,名字相同的話,就重復(fù)了。改成不同名字就OK,可能還有其他辦法,比如讓.C文件不生產(chǎn).O文件,不過沒試過,等下次熟悉ADS后再玩。
十四、ADS中,make編譯,產(chǎn)生數(shù)據(jù)容量表:
方法:ADS》》debugrel setting》》linker》》ARM linker》》listings》》Total,打鉤。
十五、H-JTAG仿真時的設(shè)置問題。
打開H-JTAG軟件,檢測到cpu后(選dectection),在AXD中》options》configure target》add。。?!愤x擇H-JTAG安裝目錄下的H-JTAG.DLL文件,最后,載入映像文件,ok。
評論
查看更多