early_printk使用方法
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
(一)知识背景:
我们知道line 5-12行代码部分, 是 printk打印出来的。而如果你想要在打印linux的版本之前的 函数 line1-4行中也加打印信息,那么printk这个时候其实 串口 ,console什么的还没注册呢,所以肯定没有信息的。比如说,我想打印setup函数中的部分 调试 信息: 就可以使用early printk的功能啦,那么 如何 打开这个功能呢,下面我做个介绍:
(二)支持early printk对内核需要做的配置
(1)Kernel hacking ---> Kernel low-level debugging functions --> Early printk
(2)boot option中你需要添加 earlyprintk项。类似于:
root=/dev/ram0 console=ttySAC0,115200n8 rdinit=/sbin/init earlyprintk
(三)在需要加打印信息的地方使用early_printk函数代替printk函数。
(四)对early printk的驱动实现的分析
arch/arm/kernel/early_printk.c文件,上代码:
其实这段code最终的实现都是靠:extern void printch(int);这个函数。这个函数实现是在:
arch/arm/kernel/debug.S中:
printch会调用到 addruart_current函数,而addruart_current函数用调用到:addruart函数,该函数实现是在:
arch\arm\mach-s3c64xx\ include \mach中的debug-macro.S汇编文件中:
我们从上面的代码可以看到S3C_PA_UART, S3C_PA_UART都是实际的6410的串口 寄存器 物理和虚拟地址,从而进行真正的 硬件 底层操作。
我们知道line 5-12行代码部分, 是 printk打印出来的。而如果你想要在打印linux的版本之前的 函数 line1-4行中也加打印信息,那么printk这个时候其实 串口 ,console什么的还没注册呢,所以肯定没有信息的。比如说,我想打印setup函数中的部分 调试 信息: 就可以使用early printk的功能啦,那么 如何 打开这个功能呢,下面我做个介绍:
(二)支持early printk对内核需要做的配置
(1)Kernel hacking ---> Kernel low-level debugging functions --> Early printk
(2)boot option中你需要添加 earlyprintk项。类似于:
root=/dev/ram0 console=ttySAC0,115200n8 rdinit=/sbin/init earlyprintk
(三)在需要加打印信息的地方使用early_printk函数代替printk函数。
(四)对early printk的驱动实现的分析
arch/arm/kernel/early_printk.c文件,上代码:
其实这段code最终的实现都是靠:extern void printch(int);这个函数。这个函数实现是在:
arch/arm/kernel/debug.S中:
printch会调用到 addruart_current函数,而addruart_current函数用调用到:addruart函数,该函数实现是在:
arch\arm\mach-s3c64xx\ include \mach中的debug-macro.S汇编文件中:
我们从上面的代码可以看到S3C_PA_UART, S3C_PA_UART都是实际的6410的串口 寄存器 物理和虚拟地址,从而进行真正的 硬件 底层操作。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献5条内容
所有评论(0)