I.MX6ULL 设备树及驱动开发-GPIO综合

355 阅读3分钟

1 I.MX6ULL芯片综述

image.png

  • 型号为 MCIMX6Y2CVM08AB,MCIMX6Y2CVM08AB 主频为800MHz(实际 792MHz)。该芯片采用 Coretx-A7 内核,自带 32KB 的 L1 指令 Cache、32KB 的L1 数据 Cache、128KB 的 L2Cache、集成 NEON 和 SIMDv2、支持硬件浮点(FPU)计算单元,浮点计算架构为 VFPv4-D32、1 个 RGB LCD 接口2 个 CAN 接口、2 个 10M/100M 网络接口、2 个 USB OTG 接口(USB2.0)、2 路ADC8个串口、3个SAI、4个定时器8路PWM4路I2C 接口4 路SPI 接口、一路CSI摄像头接口、2个USDHC接口,支持4位SD卡,最高可以支持 UHS-I SDR 104 模式,支持 1/4/8 位的 EMMC,最高可达 HS200 模式、一个外部存储接口、支持16位的LPDDR2-800、DDR3-800 和 DDR3L-800、支持 8 位的 MLC/SLC NAND Flash,支持 2KB、4KB 和 8KB 页大小,以及124个通用IO口等。
  • I.MX6U 的 GPIO 不止 GPIO1_IO00~GPIO1_IO09 这 10 个,其它的 IO 都可以复用为 GPIO 来使用。I.MX6U 的 GPIO 一共有 5 组:GPIO1、GPIO2、GPIO3、GPIO4 和 GPIO5,其中 GPIO1 有 32 个 IO,GPIO2 有 22 个 IO,GPIO3 有 29 个 IO、GPIO4 有 29 个 IO,GPIO5最少,只有 12 个 IO,这样一共有124 个 GPIO。如果只想看每个 IO 能复用什么外设的话可以直接查阅《IMX6ULL 参考手册》的第 4 章“Chapter 4 External Signals and Pin Multiplexing”

1.2 L1 Cache、L2 Cache、L3 Cache说明

image.png image.png image.png

2 I.MX6ULL GPIO综合

2.1 I.MX6U IO复用

  • 以“IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00”这个 IO 为例 image.png

2.2 I.MX6U IO 电气属性

  • 以“IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00”这个 IO 为例 image.png image.png image.png

2.3 GPIO控制寄存器

image.png

  • ICR image.png
  • IMR image.png
  • EDGE_SEL image.png
  • PSR image.png

3 硬件电路及寄存器设置

  • LED image.png
  • KEY image.png

3.1 汇编

  • 复用功能 image.png image.png
  • 电气属性 image.png image.png image.png image.png image.png

3.1 SDK

  • 如果需要使能 GPIO1_IO03 的软件输入功能的话此参数应该为 1,否则的话就为 0。 image.png image.png image.png

4 设备树

  • gpio-controller”表示 gpio1 节点是个 GPIO 控制器。“#gpio-cells”属性和“#address-cells”类似,#gpio-cells 应该为 2,表示一共有两个 cell,第一个 cell 为 GPIO 编号,比如“&gpio1 3”就表示 GPIO1_IO03。第二个 cell 表示GPIO 极 性 , 如 果 为 0(GPIO_ACTIVE_HIGH) 的 话 表 示 高 电 平 有 效 , 如 果 为1(GPIO_ACTIVE_LOW)的话表示低电平有效 image.png
  • intc 节点就是I.MX6ULL 的中断控制器节点,#interrupt-cells 和#address-cells、#size-cells 一样。表示此中断控制器下设备的 cells大小,对于设备而言,会使用 interrupts 属性描述中断信息,#interrupt-cells 描述了 interrupts 属性的 cells 大小,第一个 cells:中断类型,0 表示 SPI 中断,1 表示 PPI 中断。第二个 cells:中断号,对于 SPI 中断来说中断号的范围为 0-987,对于 PPI 中断来说中断号的范围为 0-15。第三个 cells:标志,bit[3:0]表示中断触发类型,为 1 的时候表示上升沿触发,为 2 的时候表示下降沿触发,为 4 的时候表示高电平触发,为 8 的时候表示低电平触发。bit[15:8]为 PPI 中断的 CPU 掩码。
  • interrupt-controller 节点为空,表示当前节点是中断控制器。 image.png
  • IOMUX image.png

4.1 寄存器->设备树表示方法

image.png

  • 驱动开发摘录 image.png image.png
  • 寄存器配置 image.png image.png

4.2 pinctrl和gpio子系统

  • gpio子系统 image.png
  • pinctrl子系统 image.png image.png

4.2.1 LED

image.png image.png image.png image.png

4.2.2 BEEP

image.png image.png

4.2.3 KEY中断

image.png

  • 中断服务函数 image.png
  • 按键IO初始化 image.png image.png
  • 驱动入口函数 image.png