linux下ARM處理器對(duì)16位FPGA的訪問問題_第1頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux下arm處理器對(duì)16位fpga的訪問問題 有一個(gè)伴侶在調(diào)試arm和接口的時(shí)候遇到了一個(gè)驚奇的問題,向我尋求協(xié)助。 問題描述:arm用法s3c2440,fpga和arm的接口為16位,用法地址線,片選線為ncs3,操作系統(tǒng)用法linux-2.4測(cè)試程序?yàn)椋簍est.cdefine fpga_address 0x18000000int main( )unsigned char *sp;unsigned short mem;int memfd;memfd=open ("/dev/mem",o_rdwr);sp=(unsigned char *)mmap(0,10000,

2、prot_read|prot_write,map_shared,memfd,fpga_address);*(unsigned short*)(sp+0x20c)=0x5678;*(unsigned short*)(sp+0x20e)=0x1234;munmap(sp,10000);close(memfd);程序解釋:由于linux下對(duì)不能對(duì)物理肯定地址舉行拜訪,需要用法mmap函數(shù)舉行內(nèi)存映射;編譯辦法:arm-linux-gcc -o test test.c該程序在運(yùn)行的時(shí)候不能正確的向fpga的地址內(nèi)部寫入16位的shor類型,經(jīng)過規(guī)律分析儀觀看,發(fā)覺在向16位的地址空間寫入0x5678的

3、時(shí)候,事實(shí)上是向fpga內(nèi)部寫了兩次,一次是:0x5656,另外一次是0x7878;同理,當(dāng)寫0x1234的時(shí)候,也是分為兩次寫入的:一次是0x1212,另外一次是0x3434。假如將上述程序修改一下,在ads下挺直編譯運(yùn)行,程序能夠勝利。這解釋程序是沒有問題的,fpga對(duì)arm的接口時(shí)序也應(yīng)當(dāng)是沒有問題的。這讓我困窘不已。明明是一個(gè)16位的short類型,arm和fpga的接口也是16位的,為什么要分為兩次送入,看來是編譯器的問題,預(yù)備用法反匯編的工具看看源代碼。在ads下,可以挺直看到反匯編后的代碼,在linux下,發(fā)覺arm-linux-objdump工具也可以對(duì)目標(biāo)代碼舉行反匯編:使用

4、為arm-linux-objdump -d -t test >aa用法>aa重定向?qū)⑤敵鲂畔⒋蛴〉轿募校?41c: e50b0010 str r0, fp, -168420: e3a03f83 mov r3, 524 ; 0x20c8424: e51b2010 ldr r2, fp, -168428: e0833002 add r3, r3, r2842c: e3a02078 mov r2, 120 ; 0x788430: e3a01056 mov r1, 86 ; 0x568434: e5c32000 strb r2, r38438: e5c31001 strb r1, r3,

5、 1843c: e3a03f83 mov r3, 524 ; 0x20c8440: e2833002 add r3, r3, 2 ; 0x28444: e51b2010 ldr r2, fp, -168448: e0833002 add r3, r3, r2844c: e3a02034 mov r2, 52 ; 0x348450: e3a01012 mov r1, 18 ; 0x128454: e5c32000 strb r2, r38458: e5c31001 strb r1, r3, 1通過反匯編,果真看到了用法了兩條strb的命令將一個(gè)16位的數(shù)據(jù)分為兩個(gè)8bit的數(shù)據(jù)送出;strb命令

6、:從源寄存器將一個(gè)8bit的數(shù)據(jù)送到存儲(chǔ)器,該字節(jié)為源寄存器的低8位。問題找到了,如何將一個(gè)16位的數(shù)據(jù)一次性的輸出呢,在網(wǎng)絡(luò)搜尋了一下,發(fā)覺有一篇文章也談到了這個(gè)問題只要在編譯的時(shí)候指明-march=armv4選項(xiàng)即可:用法下面的指令重新編譯:arm-linux-gcc -march=armv4 -o test test.c反匯編后得到的命令為:8494: e3a02c56 mov r2, 22016 ; 0x56008498: e2822078 add r2, r2, 120 ; 0x78849c: e1a01002 mov r1, r284a0: e1c310b0 strh r1, r384a4: e3a03f83 mov r3, 524 ; 0x20c84a8: e2833002 add r3, r3, 2 ; 0x284ac: e51b2010 ldr r2, fp, -1684b0: e0833002 add r3, r3, r284b4: e3a02c12 mov r2, 4608 ; 0x120084b8: e2822034 add r2, r2, 52 ; 0x34

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論