linux驱动中的io内存

一、什么是IO内存
一般我们的外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器、数据寄存器三大类。外设的寄存器通常被连续编址,并且根据CPU的体系架构不同CPU对I0端口的编制方式有两种:
。IO映射方式(IO-mapped):比较典型的有X86处理器为外设专门实现了一个单独的地址空间,称为“I0端口空间”或者“IO地址空间”,此时CPU可以通过专门的指令(比如X86的IN和OUT) 来访问这个“IO端口空间”
。内存映射方式 (memory-mapped): RISC指令系统的CPU一般只实现一个物理地址空间,外设10端口成为内存的一部分。此时CPU可以访问外设的10端口,就像访问自己的内存一样方便,不必再设置专门的指今来访问。在驱动开发过程中一般使用内存映射方式。
外设的SFR(特殊功能寄存器) 编址与内存的编址是同一个地址空间,叫做I0内存。这个I0关键字,其实就是配置寄存器。

原因:
Linux 内核运行后,开启了 MMU(内存管理单元),所以不能直接访问 CPU 的物理地址,也就是说,不能直接使用物理地址访问系统的 IO 内存。必须将物理地址转换为虚拟地址,内核通过虚拟地址来访问系统的 IO 内存。
有MMU的芯片: x86、ARM9以上的CPU
无MMU的芯片:单片机、ARM Cortex-M系列

IO内存的使用方法
回顾裸机控灯:
分析硬件
控制灯的GPIO引脚(GPIOE13)
GPIO的寄存器
通过S5P6818芯片手册找到该寄存器的配置方法控制GPIO的状态
问题:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值