1 I.MX6ULL芯片综述
- 型号为 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 路ADC、8个串口、3个SAI、4个定时器、8路PWM、4路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说明
2 I.MX6ULL GPIO综合
2.1 I.MX6U IO复用
- 以“
IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00”这个 IO 为例
2.2 I.MX6U IO 电气属性
- 以“
IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00”这个 IO 为例
2.3 GPIO控制寄存器
- ICR
- IMR
- EDGE_SEL
- PSR
3 硬件电路及寄存器设置
- LED
- KEY
3.1 汇编
- 复用功能
- 电气属性
3.1 SDK
- 如果需要使能 GPIO1_IO03 的软件输入功能的话此参数应该为 1,否则的话就为 0。
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)的话表示低电平有效 - 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 节点为空,表示当前节点是中断控制器。
- IOMUX
4.1 寄存器->设备树表示方法
- 驱动开发摘录
- 寄存器配置
4.2 pinctrl和gpio子系统
gpio子系统pinctrl子系统
4.2.1 LED
4.2.2 BEEP
4.2.3 KEY中断
- 中断服务函数
- 按键IO初始化
- 驱动入口函数