7.5 Linux:驱动开发——物理地址映射虚拟地址

LED硬件控制

一、查资料获取物理寄存器地址

①要设置某个引脚为GPIO(看原理图,找到要控制的引脚)

②function 候选功能寄存器:(看芯片开发手册)

③pull_en 输入输出使能寄存器:(看芯片开发手册)

④pull_sell 数据寄存器LOW/HIGH:(看芯片开发手册)

二、将得到的物理地址映射成虚拟地址

IO内存的申请

  • 申请IO内存区→动态映射→使用虚拟地址→解除动态映射→释放IO内存
    request_mem_region→ioremap→

7.6 通过GPIO操作函数实现GPIO口控制

led_open:gpio_request()→gpio_direction_output()

led_write:gpio_set_value()

总结:

我们通过PAD_GPIO_x+NUM,l来调用

gpio_direction_out_put(unsigned gpio, int value);

gpio_set_value(unsigned gpio, int value);

设置管脚为输出模式,先由PAD_GPIO_x+NUM得到管脚所属的分组号及属于分组下的第几个引脚

然后再由分组号找到所对应的虚拟地址。

该虚拟地址由GPIOx的物理地址通过静态映射得到的。

端口号(组号+组号下的引脚编号)→虚拟地址→物理地址→控制硬件