音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(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

請(qǐng)教最簡(jiǎn)單的在用戶空間對(duì)物理地址進(jìn)行讀寫的方法

作者:忘情天書 欄目:ARM技術(shù)
請(qǐng)教最簡(jiǎn)單的在用戶空間對(duì)物理地址進(jìn)行讀寫的方法
我的硬件平臺(tái)是AT91RM9200,跑著linux-2.4.27.我把AT91RM9200的ncs2 ,a2...a9,d0..d15都引到一個(gè)fpga的i/o上.現(xiàn)在需要和fga通信,就是需要對(duì)ncs2片選控制的物理地址進(jìn)行讀寫.
我想能不能寫個(gè)簡(jiǎn)單的程序,里面對(duì)上述要求初始化后,然后調(diào)用系統(tǒng)調(diào)用mmap,對(duì)地址進(jìn)行重影射后,就可以在用戶空間直接對(duì)地址為0x30000000的內(nèi)存進(jìn)行操作.
高手請(qǐng)說說這能不能實(shí)現(xiàn),如果能,能否指點(diǎn)一下流程和要點(diǎn),或者有更簡(jiǎn)單的辦法.
如果不能,應(yīng)該怎么辦?

2樓: >>參與討論
centimetre
可以
 
3樓: >>參與討論
wangkj
就是你說的這種方法,完全沒問題。
 
4樓: >>參與討論
忘情天書
謝謝兩位,但是實(shí)際上
謝謝兩位。不好意思,我現(xiàn)在遇到實(shí)際問題,我不想用驅(qū)動(dòng)的方式去實(shí)現(xiàn),只想在應(yīng)用程序中映射。但是,我沒有在/kernel/sys.c上找到sys_mmap()系統(tǒng)調(diào)用,可在/include/asm-arm/unistd.h確實(shí)有sys_mmap()的定義。我是linux菜鳥,連sys_mmap()源碼都找不到,那根本不會(huì)調(diào)用它。而且我在網(wǎng)上又查到說要用ioremap()系統(tǒng)調(diào)用來實(shí)現(xiàn),都暈了!
不過在/arch/parisc/kernel/sys_parisc.c里找到了asmlinkage  unsigned LONG sys_mmap(
   unsigned LONG addr, unsigned LONG len,unsigned LONG prot,
   unsigned LONG flags,unsigned LONG fd,unsigned LONG  offset)
                                             {}
頭大啊,這些參數(shù)我的設(shè)想一點(diǎn)不粘邊。倒是/kernel/mm/memory.c里定義remap_page_range(
       unsigned LONG virt_add, unsigned LONG phys_add,
       unsigned LONG size, pgprot_t  prot)
                                              {}
這個(gè)函數(shù)和我的要求還相近。virt_add重映射起始的用戶虛禮地址,phys_add虛擬地址所映射的物理地址,size被重映射的區(qū)域大小,prot新VMA的保證標(biāo)志。我是不是可以這樣填充參數(shù):virt_add=0x00000000;
phys_add=0x30000000 ,size=0x20000 ,但是prot是什么意思啊?但是/arch/parisc/kernel/sys_parisc.c里的asmlinkage  unsigned LONG sys_mmap不調(diào)用這個(gè)函數(shù)?

急!。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。!

5樓: >>參與討論
wangkj
給你幾個(gè)關(guān)鍵語句
example 1:
void    *map_base;      //phy 0xffff f000 virtual address
  map_base      = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, AT91_SYS);//AT91_SYS = 0xffff f000

        ch1=*(unsigned int*)(map_base + ((PIOB_OFFSET + AT91_PIO_PDSR )));//PA0...PA5
        ch2=*(unsigned int*)(map_base + ((PIOC_OFFSET + AT91_PIO_PDSR )));//PC14,PC15
example 2:
volatile unsigned int *map_base_KEYLE; //(0x60000000 virtual address
(*map_base_KEYLE)=(~(0x1<<i))&(~(0x1<<i+16));
(*map_base_KEYLE)=0x0;

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
緊急求助
告訴大家一個(gè)資料區(qū)
想找一款12位的高速DA轉(zhuǎn)換器
有關(guān)ISp下載
Isp下載時(shí)不能與目標(biāo)板通信
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)