请问麻雀d1s用tina-sdk2.0打开 printk time,内核启动log还是没时间戳显示,如何解决?
-
如题
-
R818 正常。
-
没遇到过这样情况,可以试试删了kernel重新编译
-
@tigger sdk1.0也可以,就是换成sdk2.0不会显示了。。。
-
@yuzukitsuru 在 请问麻雀d1s用tina-sdk2.0打开 printk time,内核启动log还是没时间戳显示,如何解决? 中说:
没遇到过这样情况,可以试试删了kernel重新编译
大佬,没遇到过这样情况:是指在麻雀d1s硬件+sdk2.0上吗
我试了删除lichee/linux-5.4里面的vmlinux重新编译,还是不行
实际选择别的内核驱动,都是可以正常编译进内核的,说明编译过程还是有效的吧。
-
@jmhh247 是,我这里都会显示
-
@yuzukitsuru 在 请问麻雀d1s用tina-sdk2.0打开 printk time,内核启动log还是没时间戳显示,如何解决? 中说:
@jmhh247 是,我这里都会显示
好奇怪,大佬方便给个内核的.config看看吗,和其它dts应该没关系吧
-
@jmhh247 我按默认的就可以用了
-
@yuzukitsuru 在 请问麻雀d1s用tina-sdk2.0打开 printk time,内核启动log还是没时间戳显示,如何解决? 中说:
@jmhh247 我按默认的就可以用了
扎心了。。。
-
-
YuzukiNezha D1s 的启动截图,Tina 2.0
修复方法:
打开lichee/linux-5.4/kernel/printk/printk.c
修改
static size_t print_prefix(const struct printk_log *msg, bool syslog, bool time, char *buf)
函数static size_t print_prefix(const struct printk_log *msg, bool syslog, bool time, char *buf) { size_t len = 0; if (syslog) len = print_syslog((msg->facility << 3) | msg->level, buf); if (time) len += print_time(msg->ts_nsec, buf + len); len += print_time(msg->ts_nsec, buf + len); len += print_caller(msg->caller_id, buf + len); if (IS_ENABLED(CONFIG_PRINTK_CALLER) || time) { buf[len++] = ' '; buf[len] = '\0'; } return len; }
-
@yuzukitsuru 感谢大佬,太秀了!
原来需要源码修复,我以为是配置环节出问题了。 -
大佬,你的方法确实可行。
这个问题我继续测试了下,发现一个诡异的现象,不知道是否bug...
首先,我对比了sdk1.0和sdk2.0 :lichee/linux-5.4/kernel/printk,里面的代码一样,说明还是有配置不同。
然后,我用code打开lichee/linux-5.4/.config,配置内核printk time,发现.config确实有效了,如下图
CONFIG_PRINTK_TIME=y
保存退出后,开始make ,然后 我去 ,观察这个.config居然变化了,如下图
# CONFIG_PRINTK_TIME is not set
是否诡异,是否bug,变化我懂,可是别改我配置啊。。。
我来到device/config/chips/d1s/configs/nezha/linux-5.4目录,及device/config/chips/d1s/configs/nezha/linux目录,把里面的config-5.4 都修改成CONFIG_PRINTK_TIME=y,问题依旧。
奇怪的是修改其它配置,比如添加gt911驱动,lichee/linux-5.4/.config是可以保留配置的,目前发现CONFIG_PRINTK_TIME 只要一编译,就会变成# CONFIG_PRINTK_TIME is not set
-
@jmhh247 可能的确是一个bug
-
根目录下执行make menuconfig
Global build settings --->
[*] Enable printk timestamps重新编译固件烧录
这里修改的是方案默认配置target/allwinner/d1s-nezha/defconfig,主要使能了CONFIG_KERNEL_PRINTK_TIME这个配置。
openWrt的特性:
defconfig中带有CONFIG_KERNEL_前缀的配置,最终都会影响内核配置。也就是defconfig没有选择CONFIG_KERNEL_PRINTK_TIME的话,那么也会强行取消选中内核配置中的CONFIG_PRINTK_TIME -
@caiyongheng 在 请问麻雀d1s用tina-sdk2.0打开 printk time,内核启动log还是没时间戳显示,如何解决? 中说:
根目录下执行make menuconfig
Global build settings --->
[*] Enable printk timestamps重新编译固件烧录
这里修改的是方案默认配置target/allwinner/d1s-nezha/defconfig,主要使能了CONFIG_KERNEL_PRINTK_TIME这个配置。
openWrt的特性:
defconfig中带有CONFIG_KERNEL_前缀的配置,最终都会影响内核配置。也就是defconfig没有选择CONFIG_KERNEL_PRINTK_TIME的话,那么也会强行取消选中内核配置中的CONFIG_PRINTK_TIME太给力了,涨知识,感谢大佬
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号