linux系统下操作硬件寄存器

linux系统下操作硬件寄存器

ID:12674147

大小:26.50 KB

页数:3页

时间:2018-07-18

linux系统下操作硬件寄存器_第1页
linux系统下操作硬件寄存器_第2页
linux系统下操作硬件寄存器_第3页
资源描述:

《linux系统下操作硬件寄存器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、经过一两天的摸索,基本上对在linux控制硬件有了个初步的认识:在linux下控制硬件和在无操作系统下控制硬件的不同主要在于硬件的地址不一样,在linux下要使用va(虚拟地址),而在无操作系统下可以直接使用硬件的pa(物理地址)。在linux-2.6.8.1/include/asm-arm/arch-s3c2410/map.h中定义了大部分硬件的物理地址和他们的虚拟地址。现以gpioF为例说明,gpio的pa基址(ba)为0x56000000,GPFCONpa为0x56000050即:可见偏移量为0x50,而我们在看看GPFCONva,vaba:0

2、xf0e00000,va:0xf0e00050,偏移量为0x50。我们只要知道了vaba,和他的偏移量,我们就能计算出va,从而,就可以对其进行操作了。如何获取vaba:在linux-2.6.8.1/include/asm-arm/arch-s3c2410/map.h中有定义。计算机中,分级分层的思想随处可见,这也是计算机上的一个基本的思想和思路。在LINUX操作系统中分了三级,三级偏移,一级地址的ba为0xf0000000,偏移到第二级,0xf0e00000(以GPIO为例),再次偏移到第三级,0xf0e00050(以GPFCON为例)。现在,就可

3、以在linux下通过0xf0e00050来对GPFCON寄存器来进行操作了。源码中的实现过程如下:#defineS3C2410_ADDR(x)(0xF0000000+(x))//map.h//linux下所有硬件一级地址vaba:0xF0000000#defineS3C2410_VA_GPIOS3C2410(0X00E00000)//map.h//GPIO的偏移量0x00E00000,加上这个偏移量后,到了GPIO器件#defineS3C2410_GPIOREG(x)((x)+S3C2410_VA_GPIO)#defineS3C2410_GPFCON

4、S3C2410_GPIOREG(0x50)//regs-gpio.h//GPFCON寄存器的偏移量0x50,加上这个偏移量后,到了具体的寄存器,可以对硬件进行操作了#defineS3C2410_GPFDATS3C2410_GPIOREG(0x54)//regs-gpio.h#defineS3C2410_GPFUPS3C2410_GPIOREG(0x58)//regs-gpio.h

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。