设备端口的访问

    xiaoxiao2021-03-30  55

    1、I/O内存方式控制设备

    申请:
    struct resource *request_mem_region(start,len,*name)

    本函数申请一个从start开始,长度为len字节的内存区,成功返回 非NULL;否则返回NULL,所 有已经在使用的I/O内存在/proc/iomem中列出。

    void *ioremap(phys_addr,size)

    返回一个虚拟地址,这个虚拟地址对应一个size大小的物理地址空间 访问:

    从I/O内存读:
    unsigned ioread8(void *addr) unsigned ioread16(void *addr) unsigned ioread32(void *addr)
    从I/O内存写:
    unsigned iowrite8(void *addr) unsigned iowrite16(void *addr) unsigned iowrite32(void *addr)
    释放:
    void iounmap(void *addr)

    本函数接收ioremap函数申请的虚拟地址作为参数

    void release_mem_region(start,len)

    释放申请的内存资源

    2、I/O内存控制单一引脚

    int s3c_gpio_cfgpin(unsigned int pin,unsigned int to)

    pin代表引脚,to代表一个功能,例如下面程序:

    s3c_gpio_cfgpin(S5PV210_GPJ2(0) , S3C_GPIO_SFN(1) )

    表示将GPJ2_0配置成特殊功能0x01,此功能是Output;

    int s3c_gpio_setpull(pin , pull)

    设置管脚为上拉或下拉状态

    int gpio_request(gpio, *lable)

    申请一个管脚gpio,并使用label去描述它,成功返回0,失败返回-1;

    void gpio_free(gpio)

    释放一个已经申请的引脚gpio

    int gpio_direction_output(gpio, value)

    在管脚gpio中输出一个电平value

    int gpio_direction_input(gpio)

    在管脚gpio中读取一个电平0/1

    转载请注明原文地址: https://ju.6miu.com/read-665194.html

    最新回复(0)