• 理解io端口和io内存关于驱动开发的问题


    1、外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为“I/O端口”,而IO端口有两种编址方式:独立编址和统一编制。而具体采用哪一种 则取决于CPU的体系结构。 如,PowerPC、m68k等采用统一编址,而X86等则采用独立编址。但对于Linux内核而言,它可能用于不同的CPU,所以它必须都要考虑这两种 方式,于是它采用一种新的方法,将基于I/O映射方式的或内存映射方式的I/O端口通称为“I/O区域”(I/O region),不论你采用哪种方式,都要先申请IO区域:request_resource(),结束时释放 它:release_resource()。


    对于某一既定的系统,它要么是独立编址,也即“I/O端口”方式,外设寄存器位于“I/O空间”;要么是统一编制,也即“I/O内存”方式,外设寄存器位于“内存空间”(很多外设有自己的内存、缓冲区,外设的寄存器和内存统称“I/O空间”)。


    2、对外设的访问分为IO端口访问和IO内存访问。
    访问IO内存的流程是:request_mem_region() -> ioremap() -> ioread8()/iowrite8() -> iounmap() -> release_mem_region() 。

    访 问IO端口有2种途径,

    I/O映射方式(I/O-mapped)、内存映射方式(Memory-mapped)。

    前一种途径直接使用intb() /outb()之类的函数来读写IO端口,

    后一种是(为了达到接口的同一性)先把IO端口映射到IO内存(“内存空间”):ioport_map(),再 使用访问IO内存的函数来访问IO端口。

  • 相关阅读:
    vue 父子组件通信props/emit
    mvvm
    Ajax
    闭包
    【CSS3】---only-child选择器+only-of-type选择器
    【CSS3】---last-of-type选择器+nth-last-of-type(n)选择器
    【CSS3】---first-of-type选择器+nth-of-type(n)选择器
    【CSS3】---结构性伪类选择器—nth-child(n)+nth-last-child(n)
    【CSS3】---结构性伪类选择器-first-child+last-child
    vue路由切换和用location切换url的区别
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2805915.html
Copyright © 2020-2023  润新知