在设置C环境之前,如何在uboot中使用程序集编写控制台(或类似printf()函数)?

How to use assembly to write a console(or just like printf() function) in uboot before set up C environment?

在搭建c环境之前,我尝试用汇编在uboot流程中写一个console。我参考了芯片供应商的 UART 固件驱动程序在 uboot 流程开始时(在重置时)转换为程序集。 问题一:在uboot的begging中,SOC mmio地址是否起作用?例如:SOC spec中的#define UART_BASE 0x11000000,我可以用这个地址来控制uart吗? 2. 如果使用nand 启动,那些汇编代码运行 在哪里? Nand SPL UBOOT to ram是不是在求...

(这些地址来自 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 设置,例如波特率,流控等。具体值和地址可以参考芯片参考手册。