硬件原理图
与CPU管脚对应关系
UART2_RX-EIM_D27_ALT5(101)-GPIO3_IO27
0x020E00C0
UART2_TX-EIM_D26_ALT5(101)-GPIO3_IO26
0x020E00BC
UART3_CTS-EIM_D23_ALT5(101)-GPIO3_IO23
0x020E00AC
UART3_RTS-EIM_D31_ALT5(101)-GPIO3_IO31
0x020E00D0
UART3_RX-EIM_D25_ALT5(101)-GPIO3_IO25
0x020E00B8
UART3_TX-EIM_D24_ALT5(101)-GPIO3_IO24
0x020E00B4
CCM 寄存器
CCM,The Clock Control Module,时钟控制模块
电气属性设置
0x10B0 下拉,关闭开漏,速度 100MHz,40 Ω 驱动能力
1615:1413121110:87:65:32:10
00001000010110000关闭HYS,CMOS输入100KΩ下拉keeperpull/keeper使能CMOS推挽输出reserved100MHz40Ωreserved低压摆率
0xD0B0 上拉
1615:1413121110:87:65:32:10
01101000010110000关闭HYS,CMOS输入22KΩ上拉keeperpull/keeper使能CMOS推挽输出reserved100MHz40Ωreserved低压摆率
上/下拉电阻设置
速度设置
驱动能力
压摆率
IO的电气属性寄存器
UART2_RX-EIM_DATA27-0x020E03D4
UART2_TX-EIM_DATA26-0x020E03D0
UART3_CTS-EIM_DATA23-0x020E03C0
UART3_RTS-EIM_DATA31-0x020E03E4
UART3_RX-EIM_DATA25-0x020E03CC
UART3_TX-EIM_DATA24-0x020E03C8
GPIO 配置
GPIO_DR
GPIO_GDIR
汇编程序设计
.global _start
_start:
ldr r0,
=0x020C4068
ldr r1,
=0xFFFFFFFF
str r1,
[r0
]
ldr r0,
=0x020C406C
str r1,
[r0
]
ldr r0,
=0x020C4070
str r1,
[r0
]
ldr r0,
=0x020C4074
str r1,
[r0
]
ldr r0,
=0x020C4078
str r1,
[r0
]
ldr r0,
=0x020C407C
str r1,
[r0
]
ldr r0,
=0x020C4080
str r1,
[r0
]
/* 管脚复用配置 */
// UART2_RX-EIM_D27_ALT5
(101
)-GPIO3_IO27
ldr r0,
=0x020E00C0
ldr r1,
=0x5
str r1,
[r0
]
// UART2_TX-EIM_D26_ALT5
(101
)-GPIO3_IO26
ldr r0,
=0x020E00BC
str r1,
[r0
]
// UART3_CTS-EIM_D23_ALT5
(101
)-GPIO3_IO23
ldr r0,
=0x020E00AC
str r1,
[r0
]
// UART3_RTS-EIM_D31_ALT5
(101
)-GPIO3_IO31
ldr r0,
=0x020E00D0
str r1,
[r0
]
// UART3_RX-EIM_D25_ALT5
(101
)-GPIO3_IO25
ldr r0,
=0x020E00B8
str r1,
[r0
]
// UART3_TX-EIM_D24_ALT5
(101
)-GPIO3_IO24
ldr r0,
=0x020E00B4
str r1,
[r0
]
/* IO电气属性配置 */
// 0x10B0 bit
[15:14
] 默认下拉
// UART2_RX-EIM_DATA27-0x020E03D4
ldr r0,
=0x020E03D4
ldr r1,
=0x10B0
str r1,
[r0
]
// UART2_TX-EIM_DATA26-0x020E03D0
ldr r0,
=0x020E03D0
str r1,
[r0
]
// UART3_CTS-EIM_DATA23-0x020E03C0
ldr r0,
=0x020E03C0
str r1,
[r0
]
// UART3_RTS-EIM_DATA31-0x020E03E4
ldr r0,
=0x020E03E4
str r1,
[r0
]
// UART3_RX-EIM_DATA25-0x020E03CC
ldr r0,
=0x020E03CC
str r1,
[r0
]
// UART3_TX-EIM_DATA24-0x020E03C8
ldr r0,
=0x020E03C8
str r1,
[r0
]
/* UART2_RX-EIM_D27_ALT5
(101
)-GPIO3_IO27设置为输出 */
// UART2_TX-EIM_D26_ALT5
(101
)-GPIO3_IO26
// UART3_CTS-EIM_D23_ALT5
(101
)-GPIO3_IO23
// UART3_RTS-EIM_D31_ALT5
(101
)-GPIO3_IO31
// UART3_RX-EIM_D25_ALT5
(101
)-GPIO3_IO25
// UART3_TX-EIM_D24_ALT5
(101
)-GPIO3_IO24
// GPIO3_DR 0x020A4000
ldr r0,
=0x020A4000
ldr r1,
=0x0
str r1,
[r0
]
// GPIO3_GDIR 0x020A4004
ldr r0,
=0x020A4004
ldr r1,
=0x8F800000
str r1,
[r0
]
loop:
b loop
编译
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
arm-linux-gnueabihf-ld -Ttext 0x12000000 led.o -o led.elf
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
arm-linux-gnueabihf-objdump -D led.elf
> led.dis
i.MX6Q U-boot中运行测试
下载led.bin到内存0x30000000位置
tftp 0x30000000 led.bin
去0x30000000 位置运行
go 0x30000000