在设置c环境之前,我尝试使用Assembly在uboot流中编写控制台。我引用了芯片供应商的UART固件驱动程序,以将其转换为uboot流程开始时的程序集(处于重置状态)。
问题1:SOC mmio地址是否可以在uboot的请求下工作?例如:在SOC规范中#define UART_BASE 0x11000000,我可以使用该地址控制uart吗?
2.如果使用nand引导,那些汇编代码在哪里运行? NAND SPL UBOOT到内存是不是在乞讨......
(这些地址来自SOC供应商SPEC)
_UART_Init_and_write_a_char:
mov r11, #0x00
ldr r12, =0xf1012004
str r11, [r12]
mov r11, #0x80
ldr r12, =0xf101200c
str r11, [r12]
mov r11, #0x87
ldr r12, =0xf1012000
str r11, [r12]
mov r11, #0x0
ldr r12, =0xf1012004
str r11, [r12]
mov r11, #0x3
ldr r12, =0xf101200c
str r11, [r12]
mov r11, #0x7
ldr r12, =0xf1012008
str r11, [r12]
最佳答案
MMIO是(硬件)内存映射的I / O,因此它已经可以工作了。但是,在能够写字符之前,您可能需要正确配置用于UART的寄存器。这些通常包括UART设置,例如波特率,流量控制等。您可以参考芯片参考手册以了解值和地址。