【GEC6818开发板】Linux驱动中printk无法在终端输出显示

一、开始效果
示例代码

#include <linux/module.h>
#include <linux/printk.h>

static int __init gec6818led_init(void)
{
	printk("gec6818led_init\n");
	return 0;
}

static void __exit gec6818led_exit(void)
{
	printk("gec6818led_exit\n");
}

module_init(gec6818led_init);
module_exit(gec6818led_exit);

MODULE_AUTHOR("gec.xsc");
MODULE_DESCRIPTION("GEC6818 Led Driver");
MODULE_LICENSE("GPL");

将此代码make后,生成的.ko文件下载到开发板中,执行insmod命令后无法输出显示调试效果。
在这里插入图片描述

二、原因

为了保证开发板程序在运行时,能够正常打印输出的信息,那么,要保证程序中设置输入的等级在高于控制台输出信息的等级。

当前开发板控制台输出信息的等级如下:

[root@GEC6818 /proc/sys/kernel]#cat printk
7 7 1 7

内核源码中的等级如下:

1 #define KERN_EMERG "<0>" /* system is unusable */
2 #define KERN_ALERT "<1>" /* action must be taken immediately */
3 #define KERN_CRIT "<2>" /* critical conditions */
4 #define KERN_ERR "<3>" /* error conditions */
5 #define KERN_WARNING "<4>" /* warning conditions */
6 #define KERN_NOTICE "<5>" /* normal but significant condition */
7 #define KERN_INFO "<6>" /* informational */
8 #define KERN_DEBUG "<7>" /* debug‐level messages */

数字越大,等级越低
目前内核源码中的等级设置如下

int console_printk[4] = {
DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */ ‐‐‐>7
DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */‐‐> 7
MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */ ‐‐‐>1
DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */‐‐‐>7
};
#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
/* printk's without a loglevel use this.. */‐‐‐>如果printk函数没有设置日志等级,
则使用该等级
#define DEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL
CONFIG_DEFAULT_MESSAGE_LOGLEVEL‐‐‐‐>他们是内核进行配置时,可以进行重新配置

在这里插入图片描述
三、解决方法
方法一
在写程序时,给printk函数设置一个日志等级,具体使用如下:

printk(KERN_WARNING "%s: Open Error,retrying at different ringspeed\n", dev‐>name);

在这里插入图片描述

方法二:(不推荐)
重写进行内核配置默认的日志等级
CONFIG_DEFAULT_MESSAGE_LOGLEVEL的值,然后再编译内核,最后进行内核镜像烧写。
方法三
还可以直接在开发板上,重新设置printk等级,将它写入到配置文件(/etc/profile)中

echo 7 4 1 7 > /proc/sys/kernel/printk

最后重启开发板生效
四、最终效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邢饱饱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值