Linux学习:I/O 映射(ioremap)和writel/readl
来源:互联网 发布:mac软件为什么无法删除 编辑:程序博客网 时间:2024/05/21 21:44
在裸奔代码中,如果要控制gpio,直接控制gpio寄存器地址即可;
在linux系统中,所有操作的地址都是虚拟地址,都是由linux内核去管理,所以需要将物理地址转换成内核可识别的虚拟地址。
1、ioremap 和 iounmap
// 功能:将物理地址映射为虚拟地址
// 参数1:需要映射的物理地址
// 参数2:需要映射的地址长度
// 返回值:映射后的虚拟地址(例:void*reg_base = ioremap(0x12345678, 4);)
void *ioremap(cookie, size);
// 功能:取消映射
// 参数:需要取消的虚拟地址
void iounmap(cookie);
2、虚拟地址操作
// 功能:将虚拟地址中的值读出来
// 参数:需要读取的虚拟地址
__raw_readl(addr); 等同于 readl(addr);
// 功能:将数据写入虚拟地址
// 参数1:数据
// 参数2:需要写入的虚拟地址
__raw_writel(data, addr); 等同于 writel(data, addr);
// 从虚拟地址读取4个字节数据
unsigned int readl(unsigned int addr);
// 往虚拟地址写入4个字节数据
void writel(unsigned int data, unsigned int addr);
// 从虚拟地址读取2个字节数据
unsigned short readw(unsigned int addr);
// 往虚拟地址写入2个字节数据
void writew(unsigned short data, unsigned int addr);
// 从虚拟地址读取1个字节数据
unsigned char readb(unsigned int addr);
// 往虚拟地址写入1个字节数据
void writeb(unsigned char data, unsigned int addr);
void led_on(void){void *reg_base;unsigned int temp; reg_base = ioremap(0x12345678, 4);temp = __raw_readl(reg_base); temp &= ~(0xff<<12);temp |= (0x11<<12);__raw_writel(temp, reg_base);}
- Linux学习:I/O 映射(ioremap)和writel/readl
- linux中readl()和writel()函数
- linux中readl()和writel()函数
- linux中readl()和writel()函数
- linux中readl()和writel()函数
- linux中readl()和writel()函数
- readl()和writel()
- Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)
- Linux内核访问I/O资源的方法:动态映射(ioremap)和静态映射(map_desc)
- Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)
- linux中readl()和writel()函数---用于读写寄存器
- Linux中readl和writel函数的使用方法
- writel()和readl()函数的作用
- Linux内核访问外设I/O资源的方式-动态映射(ioremap)与静态映射(map_desc)方式
- readl 与 writel
- readl(), writel() 函数使用举例
- linux I/O内存映射
- linux学习---文件I/O和标准I/O
- Java匿名对象
- 关于内部类 外部类面试题
- highcharts数据标签显示在柱状图里面解决办法
- TreeMap排序规则
- MFC基础教程
- Linux学习:I/O 映射(ioremap)和writel/readl
- Android ViewPager之tab万能适配器
- 文章标题 AngularJs购物车表格的制作
- 史无前例企业架构分享--SSM组合+springmvc+mybatis+shiro+restful+bootstrap
- Synchronize,Lock和volatile的区别
- 验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0
- 欢迎使用CSDN-markdown编辑器
- 深度学习-根据日志画loss-acc折线图
- JAVA虚拟机体系结构