ARM:Linux解压例程如何在UART上输出字符?
创始人
2024-09-14 01:00:41
0

Linux启动时,内核需要进行解压缩。在ARM平台上,它使用Zlib库进行解压缩。解压缩过程中,需要将调试信息输出到控制台。在ARM平台上,控制台一般是通过串行UART实现的。

要在UART上输出字符,可以使用UART驱动程序提供的函数进行操作。以下是一段示例代码,演示如何将字符输出到UART:

#include 
#include 

void putc(char ch) {
    unsigned int status;
    do {
        status = readl(UARTn_BASE + UART_LSR);
    } while (!(status & UART_LSR_THRE));
 
    writel(ch & 0xff, UARTn_BASE + UART_TX);
}

要使用上述代码,在初始化阶段从串口设备树上获取UART设备的基地址,然后调用putc函数输出字符即可。以下是一些示例代码:

#include 
#include 

#define UART0_BASE     (void *)0x01C28000
 
void putc(char ch) {
    unsigned int status;
    do {
        status = readl(UART0_BASE + UART_LSR);
    } while (!(status & UART_LSR_THRE));
 
    writel(ch & 0xff, UART0_BASE + UART_TX);
}
 
void early_print(char *s) {
    while(*s)
        putc(*s++);
}
 
void asmlinkage __init decompress_kernel(void) {
    char *s = "Hello, world!\n";
    early_print(s);
}

在上述代码中,首先定义了UART0的基地址。然后实现了putc函数,它会一直等待UART处于空闲状态并输出单个字符。最后,在解压缩内核时,调用了early_print函数,该函数使用putc函数输出字符串。

相关内容

热门资讯

一分钟了解!陕西挖坑辅助,新5... 一分钟了解!陕西挖坑辅助,新518互游脚本(有挂方法开挂辅助工具);打开点击测试直接进入微信(136...
推荐一款!边锋干瞪眼ios辅助... 推荐一款!边锋干瞪眼ios辅助微信,决战卡五星辅助源码(有挂分享辅助插件)您好:边锋干瞪眼ios辅助...
最新研发!九游破解版真的假的,... 您好:这款九游破解版真的假的游戏是可以开挂的,确实是有挂的,很多玩家在这款九游破解版真的假的游戏中打...
教程攻略!兄弟13水修改器,家... 大家好,今天小编来为大家解答兄弟13水修改器这个问题咨询软件客服可以免费测试直接加微信(136704...
科普分享!广西友乐软件辅助,人... 【亲,广西友乐软件辅助 这款游戏可以开挂的,确实是有挂的,很多玩家在这款广西友乐软件辅助中打牌都会发...
最新技巧!网上微乐家乡微信版辅... 您好:网上微乐家乡微信版辅助器这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多...
重大通报!蜀渝牌乐汇修改器,创... 您好:创思维激k辅助工具这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...
详细说明!四川游戏家园破解,天... 详细说明!四川游戏家园破解,天天开心王国怎么辅助(有挂秘笈辅助开挂脚本)1、下载安装好四川游戏家园破...
必知教程!奇迹手机辅助脚本怎么... 大家好,今天小编来为大家解答奇迹手机辅助脚本怎么下载这个问题咨询软件客服可以免费测试直接加微信(13...
六分钟了解!广东雀神智能插件安... 【亲,广东雀神智能插件安装软件 这款游戏可以开挂的,确实是有挂的,很多玩家在这款广东雀神智能插件安装...