首页 > 解决方案 > 如何在设置C环境之前在uboot中使用汇编编写控制台(或就像printf()函数)?

问题描述

在设置 c 环境之前,我尝试使用程序集在 uboot 流程中编写控制台。我参考了芯片供应商的 UART 固件驱动程序,以在 uboot 流程开始时(重置时)转换为组装。问题一:SOC的mmio地址在uboot的乞求中是否起作用?ex:#define UART_BASE 0x11000000 in SOC spec,我可以用这个地址来控制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]

标签: cassemblyarmu-boot

解决方案


MMIO 是(硬件)内存映射 I/O,所以它已经可以工作了。但是,在能够写入字符之前,您可能需要正确配置 UART 的寄存器。这些通常包括 UART 设置,例如波特率、流量控制等。您可以参考芯片参考手册以了解值和地址。


推荐阅读