LINUX下讀寫寄存器

LINUX下讀寫寄存器

ID:40749641

大小:68.50 KB

頁數(shù):21頁

時(shí)間:2019-08-07

LINUX下讀寫寄存器_第1頁
LINUX下讀寫寄存器_第2頁
LINUX下讀寫寄存器_第3頁
LINUX下讀寫寄存器_第4頁
LINUX下讀寫寄存器_第5頁
資源描述:

《LINUX下讀寫寄存器》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、arm裸機(jī)下讀寫寄存器很容易,各個(gè)寄存器和內(nèi)存的地址是單一地址空間,他們是用相同的指令進(jìn)行讀寫操作的.而在linux下就要復(fù)雜很多,因?yàn)閘inux支持多個(gè)體系架構(gòu)的CPU。比如arm和x86就不一樣,具體的差別我暫時(shí)也說不上來,這個(gè)涉及到CPU體系的設(shè)計(jì)。目前我只關(guān)心:linux為了支持多個(gè)硬件體系,在IO訪問上做了自己的接口??梢酝ㄟ^IO內(nèi)存和IO端口這兩種方式進(jìn)行IO訪問。在LED的例子上給出這兩種方式的具體實(shí)現(xiàn):1.利用IOPort的方式:[cpp]viewplaincopy#include

2、ux/module.h>#include#include#include/*printk()*/#include/*kmalloc()*/#include/*everything...*/#include/*errorcodes*/#include/*size_t*/#include

3、/proc_fs.h>#include/*O_ACCMODE*/#include#include#include#include#include/*cli(),*_flags*/#include/*copy_*_user*/#include#defineLED_NUM4

4、structled_dev{structcdevdev;unsignedport;unsignedlongoffset;};structled_devled[4];dev_tdev=0;staticstructresource*led_resource;intled_open(structinode*inode,structfile*filp){structled_dev*led;/*deviceinformation*/led=container_of(inode->i_cdev,structled_d

5、ev,dev);filp->private_data=led;/*forothermethods*/return0;/*success*/}intled_release(structinode*inode,structfile*filp){return0;}ssize_tled_read(structfile*filp,char__user*buf,size_tcount,loff_t*f_pos){return0;}ssize_tled_write(structfile*filp,constchar__

6、user*buf,size_tcount,loff_t*f_pos){chardata;structled_dev*led;u32value;printk(KERN_INFO"debugbybaikal:leddevwrite");led=(structled_dev*)filp->private_data;copy_from_user(&data,buf,count);if(data=='0'){printk(KERN_INFO"debugbybaikal:ledoff");value=inl(

7、(unsigned)(S3C2410_GPBDAT));outl(value

8、1<offset,(unsigned)(S3C2410_GPBDAT));//value=ioread32(led->base);//iowrite32(value

9、1<offset,led->base);}else{printk(KERN_INFO"debugbybaikal:ledon");value=inl((unsigned)(S3C2410_GPBDAT));outl(value&~(1<<

10、led->offset),(unsigned)(S3C2410_GPBDAT));//value=ioread32(led->base);//iowrite32(value&~(1<offset),led->base);}}structfile_operationsled_fops={.owner=THIS_MODULE,.read=led_read,.write=led_write,//.ioctl=led_io

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。