資源描述:
《學(xué)習(xí)arm的入門筆記》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、學(xué)習(xí)arm的入門筆記11111111111簡單的介紹打今天起菜鳥的ARM筆記算是開張了,也算給我的這些筆記找個(gè)存的地方。為什么要發(fā)布出來?也許是大家感興趣的,其實(shí)這些筆記之所以叫筆記而不是文章,是因?yàn)樗鼈兺耆潜救藗€(gè)人學(xué)習(xí)經(jīng)驗(yàn)的總結(jié),而這些經(jīng)驗(yàn)都來自于其他前輩的無私奉獻(xiàn),在這里對這些樂于發(fā)表自己經(jīng)驗(yàn)的前輩致以由衷的感謝!現(xiàn)在我把這些前輩的文章經(jīng)過自己的理解寫出來一方面是對于他們的尊重,另一方面也希望覺得本人的筆記有參考意義的朋友把這種精神繼續(xù)傳下去。再次聲明,本人確實(shí)是個(gè)菜鳥,現(xiàn)在手頭的板子是自己畫的,以RT&ZQ的板子為底版
2、,對部分電路進(jìn)行了改動。比如加入了SD卡,IIC總線鍵盤,觸摸屏,GPS,GPRS等等。并對LCD接口進(jìn)行改造,使之完全適合手頭的SHARP液晶。把網(wǎng)絡(luò),串口,USB這些調(diào)試用接口都外擴(kuò)了,目的是使主板盡量小(目前第一版為了調(diào)試方便,主板特意畫的比較大)。但是存儲部分(RAMROM)沒有做任何變動,在這里對RT&ZQ致謝!這塊板子是本人第二個(gè)板子(第一塊是個(gè)接口板,30根線。)所以走線,設(shè)計(jì)都經(jīng)不起推敲,但是同樣非常希望大家能夠指點(diǎn)!板子基本元件清單說一下吧,方便其他人參考CPU:44B0RAM:HY57V641620ROM:
3、AM29LV160NET:8019USB:D12KEY:ZLG7290LCD:SHARPLM7M632目前為止本人做的工作1板子的硬件調(diào)試是跟著軟件來的2ADSAXD調(diào)試環(huán)境搭建3FLSH燒寫筆記4UBOOT移植筆記5UCLINUX編譯下載簡單筆記6字符設(shè)備驅(qū)動開發(fā)C工程模板使用說明本模板用于使44B0運(yùn)行C程序一般說來匯編用來初始化之后跳到C入口MAIN函數(shù)處一、關(guān)于工程文件1、本目錄下建工程文件(.MCP)2、工程文件至少包含3個(gè)文件44binit.s44blib_a.s*.c(自己的c文件)3、44binit.s中開頭部
4、分INCLUDE兩個(gè)文件MEMCFG.SOption.s用于基本設(shè)置注意這兩個(gè)文件的存放目錄,即讓INCLUDE找到它們4、以上文件除自己的c文件之外均為三星公版,不需修改二、關(guān)于CodeWarrior設(shè)置1、DebugRelSetting里一般設(shè)置幾項(xiàng)1)TargetSetting->Linker里選ARMLinker用于設(shè)置連接2)TargetSetting->Post-Linker選ARMfromELF用于生成FLASH燒錄代碼(只在RAM里運(yùn)行而不燒錄則不用)3)ARMLinker->ROBASE里添地址根據(jù)板子來,這
5、板子上RAM接的NSCS6,地址0XC000000-0XC7FFFFF;FLASH接的NSCS0,地址0X00000-0XFFFFF地址分配原理見44B0數(shù)據(jù)手冊內(nèi)存管理那章的內(nèi)存分配圖想在RAM里調(diào)試就添0XC000000(比如0XC008000)的地址但是注意的是地址不要添過界,比如想在RAM里調(diào)試卻添0X00000000程序可以進(jìn)入C代碼但沒法運(yùn)行再有想生成用于燒寫得FLASH代碼RO地址就需要設(shè)置為0X0000000開始的而且LAYOUT中也必須設(shè)置44BINIT.O為初始加載文件以上FLASH測試結(jié)論經(jīng)FLASHPG
6、M測試而且FLASHPGM不支持BIN文件只支持INTEL得HEX文件4)RW可以添可以不添一般RO解釋為數(shù)據(jù)段,RW解釋為數(shù)據(jù)段有時(shí)高興了就添上0XC100000(RAM調(diào)試時(shí))5)ARMLinker->OPTION->Imageentrypoint選擇0xc000000(RAM調(diào)試時(shí))6)ARMLinker->Layout->Object/Symbol里可以添工程起始程序44BINIT.O注意是.O不是.S和.0(零)也可以不添三、AXD設(shè)置1)按照BANYANGT或者ARM7正確設(shè)置調(diào)試代理BANYANGT、ARM7、H
7、-JTAG都是代理,裝哪個(gè)無所謂,一般認(rèn)為BANYANGT好,但無論哪個(gè)調(diào)試之前必須運(yùn)行代理2)在option->configureinterface里在sessionfile選擇44b0.ini這個(gè)文件是初始化44b0寄存器的,必須運(yùn)行3)Options->ConfigueTarget里本來有兩項(xiàng),上面上是硬件調(diào)試,下面是軟件仿真(在電腦上仿真)用ARM7就改第一項(xiàng)(按照ARM7說明改),用BANYANGT就按照BANYANGT說明在下面再加個(gè)BANYANGT的驅(qū)動4)在general標(biāo)簽頁選擇attach,然后確定,最后在
8、file->savesession,關(guān)閉AXD(在CodeWarrior里一DEBUG就自動打開)四、關(guān)于JTAG1)JTAG一般有幾種SDT和WIGGLER我的是WIGGLER的,兩者區(qū)別主要在并口25針定義不一樣(不算復(fù)位腳),與板子上JTAG相連的腳不是區(qū)分JTAG類型