寄存器和ioremap的使用

一、寄存器

1.寄存器概述
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。

按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。

2.寄存器的大小:
8位的单片机,一个寄存器占8bit,一个字节。16位的单片机,1个寄存器,占16bit,2个字节。高级一点的,arm的芯片,一个寄存器占32bit,即是4个字节。

二、ioremap学习

原型:

void *ioremap(unsigned long phys_addr, unsigned long size)  
void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)  

 phys_addr:要映射的起始的IO地址;

 size: 要映射的空间的大小(多少个字节);

 ioremap 依靠 __ioremap实现,它只是在__ioremap中以第三个参数为0调用来实现.

 flags:要映射的IO空间的和权限有关的标志;

 phys_addr:是要映射的物理地址,

 size:是要映射的长度,

功能:将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问;函数专门用来为I/O内存区域分配虚拟地址。经过ioremap之后,设备驱动即可访问任意的I/O内存地址。有了ioremap (和iounmap),设备就可以访问任何I/O内存空间,不论它是否直接映射到虚拟地址空间。但是,这些地址永远不能直接使用(指物理地址),而要用readb这种函数。

ioremap是内核提供的用来映射外设寄存器到主存的函数,我们要映射的地址来源于CPU的用户开发手册。硬件的跳线或者是物理连接方式决定了硬件上的内存映射到的cpu物理地址。映射完了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值