Cortex-A 汇编语言作用:
- 需要用汇编初始化一些SOC的外设。
- 使用汇编初始化DDR,I.MX6U不需要,其内部96K的ROM中存放了NXP自己编写的启动代码,这些启动代码可以读取DDR的配置信息,并完成DDR的初始化。
- 设置SP指针,一般指向DDR,设置好C语言运行环境。
I.MX6U IO端口初始化
IO介绍: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。
- 使能时钟 CCGR0 到 CCGR6 这7个寄存器控制着6ULL所有外设时钟的使能。可以一开始为了简单,直接都使能,就是都写为0xFFFFFFFF。
- IO复用,将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 的bit 3-0设置为0101 = 5 ,这样GPIO1_IO03就复用为GPIO。(设置IO复用的寄存器和电气属性寄存器的区别是寄存器名称的第三个字段,MUX是设置复用,PAD是设置电气属性)
- 电气属性设置寄存器IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03
下面简单说明了此寄存器的位含义,加粗的表示IO一般需要配置的。
SRE:压摆率,作为高速通信的话IO要配置高压摆率,上升和下降沿越陡。自己理解的与Speed的区别是,压摆率是控制上升和下降时间,Speed控制IO响应翻转的速度。
DSE:当IO用作输出的时候用来设置IO的驱动能力,000驱动关闭
SPEED:设置IO速度
ODE:控制开启和关闭开漏输出
PKE:上拉保持
PUS:设置上拉和下拉
- 配置GPIO功能,设置输入输出。设置GPIO1_GDIR寄存器bit3 为1,设置GPIO1_IO03为输出。设置GPIO1_DR寄存器的bit3为1表示输出为高电平。
GPIO1_DR:电平控制寄存器,可以读引脚电平和写引脚电平。GPIO1- GPIO5