|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
[求助]看了幾天44b0初始化程序,看得那個(gè)暈啊 |
| 作者:lynn5302 欄目:ARM技術(shù) |
初學(xué)ARM,買了優(yōu)龍44b0的板子.看了幾天44binit.s(初始化代碼),看得我暈呼呼的.有幾個(gè)問題一直不明白. 1.宏定義 MACRO $HandlerLabel HANDLER $HandleLabel $HandlerLabel sub sp,sp,#4 ;decrement sp(to store jump address) stmfd sp!,{r0} ;PUSH the work register to stack(lr do not PUSH because it return to original address) ldr r0,=$HandleLabel ;load the address of HandleXXX to r0 ldr r0,[r0] ;load the contents(service routine start address) of HandleXXX str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack ldmfd sp!,{r0,pc} ;POP the work register and pc(jump to ISR) MEND 上面的程序是不是把[SP+4]<--[HandleLabel] ??SP到底是多少? "_ISR_STARTADDRESS"又是在哪里定義的?這是分配堆棧空間的程序嗎?每一個(gè)中斷都有不一樣的堆棧地址?? 2.關(guān)于RO bast,RW bast, IMPORT |Image$$RO$$Base| , BaseOfROM DCD |Image$$RO$$Base| , GetBaseOfROM ldr r0, BaseOfROM mov pc, lr 資料好像說這些是只讀內(nèi)存定位地址(即程序起始地址),實(shí)際上就是RAM中的某地址吧?不過還是不怎么明白上面的程序,這跟ADS1.2中l(wèi)inker 的RO,RW地址有什么區(qū)別嗎?? 3.我對(duì)DCD這個(gè)指令很是不解!!!! [ BUSWIDTH=16 ; DCD 0x11111111 ;Bank0=OM][1:0], Bank0~Bank7=16bit DCD 0x11111001 ;Bank0=OM[1:0] 16bit BootRomSST39VF160/SST39VF320) :0x0 ; |||||||- Bank1=8bit Nand FLASH ; |||||--- Bank2=8bit PDIUSBD12 ; ||||---- Bank3=16bit RTL8019 ; |||----- Bank4~5=16bit No Uesd ; -------- Bank6~7=16bit SDRAM | ;BUSWIDTH=32 DCD 0x22222220 ;Bank0=OM[1:0], Bank1~Bank7=32bit ] DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) ;GCS0 DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) ;GCS1 以上分配的地址應(yīng)該是0X01C8_0000開始的吧?但是我卻不明白為什么DCD就是分配SFR的BWSCON至BANKCON5????對(duì)了在這些程序的前面有這樣二句 LTORG ;聲明文字池??其實(shí)我還不明白什么文字池 SMRDATA DATA ;這句呢?SMRDATA是個(gè)什么東西,找了一下,44BINIT.S中只有一個(gè)這東西. 4.還有一些小問題,比如那個(gè)聲明文字池指令?在你程序上好像出現(xiàn)了二次,我也不明白,我手上的書說得很少,也許是我悟性差吧,還有,在你程序某些地方頂格出現(xiàn)的0,1,2是什么?如果說是標(biāo)號(hào),但是又有好幾個(gè)0和1,這些是什么作用的??把程序COPY到RAM中的那段程序還沒仔細(xì)看,因?yàn)橐谎劭慈?覺得很是有點(diǎn)不難度. 望各位高人指點(diǎn)一下,讓我早日明白ARM的真諦.我手有個(gè)東西應(yīng)該是用到44B0的A0-A7, nWE,nOE,和nGCS中的一個(gè),而這個(gè)東西的C語言API函數(shù)都有現(xiàn)在的.言而我依然不知道如何下手把它搭到ARM7的板上~~~ |
| 2樓: | >>參與討論 |
| 作者: edwinfwd 于 2005/3/16 12:35:00 發(fā)布:
樓主,你的板子是FS44B0XI V2.1嗎?950RMB,好象貴了點(diǎn) 樓主,問下優(yōu)龍的扳子質(zhì)量怎么樣?技術(shù)服務(wù)發(fā)面呢?我也想買個(gè)FS44B0XI V2.1 |
|
| 3樓: | >>參與討論 |
| 作者: sean_wang 于 2005/3/16 13:47:00 發(fā)布:
很簡(jiǎn)單 關(guān)于1:ADS的編譯器是用R0傳遞第一個(gè)參數(shù)的。所以這個(gè)宏可以動(dòng)態(tài)的將傳入的地址設(shè)置到堆棧中,再利用出棧指令跳轉(zhuǎn)到所要去的地方。這樣ISP的定位就相當(dāng)靈活。 關(guān)于2:他就是你在ADS編譯器里定義的RO地址 關(guān)于3:DCD 就是保留4字節(jié)空間,后面跟的參數(shù)就是在這個(gè)保留的空間里填寫的數(shù)據(jù)。你可以理解為C語言里的常量。 關(guān)于4:我也不明白,不好意思。 |
|
| 4樓: | >>參與討論 |
| 作者: qiuyang957 于 2005/4/4 19:46:00 發(fā)布:
第一個(gè)問題可以說的再具體再淺顯一點(diǎn)嗎 還是不太明白,先謝謝! |
|
| 5樓: | >>參與討論 |
| 作者: lynn5302 于 2005/4/5 9:57:00 發(fā)布:
謝謝大家 謝謝sean_wang,我現(xiàn)在基本上理解了,edwinfwd我買的是核心板,只有CPU和FLASH及RAM,520元,個(gè)人感覺太貴了,沒什么技術(shù)支持。 對(duì)了sean_wang,如果ADS編譯器里不指定RW,那是不是RW區(qū)緊接在RO區(qū)后面呢? 關(guān)于第四個(gè)問題那些0,1,2的確是標(biāo)號(hào),是局部標(biāo)號(hào)來的 例:b %F1 ;向前跳到1標(biāo)號(hào)處。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |