early_printk使用方法
来源:互联网 发布:美工军工基金指数 编辑:程序博客网 时间:2024/05/17 06:53
(一)知识背景:
我们知道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的串口寄存器物理和虚拟地址,从而进行真正的硬件底层操作。
0 0
- early_printk使用方法
- early_printk函数
- linux kernel early_printk实现
- Linux Kernel printk, early_printk, early_print, printascii
- 使用方法
- CSDNBlog使用方法
- 游标使用方法
- Sappy使用方法
- NetSH使用方法
- 一般使用方法
- sp_addlinkedserver使用方法
- shutdown使用方法
- 缓存使用方法
- want使用方法
- log4j使用方法
- log4j使用方法
- adostoreproc使用方法
- vi 使用方法
- Linux常用命令:nl命令
- 如何快速成为APP制作、H5制作高手?
- POJ-2388 Who's in the Middle
- weblogic 与jms事例配置
- ExtJs6 checkboxgroup组件根据数据库数据默认选中设置方法
- early_printk使用方法
- 写在前面
- 析构函数virtual与非virtual的区别
- [ZooKeeper]纠正官网的Queue示例
- IntelliJ IDEA15如何配置tomcat
- Linux常用命令:more命令
- 第十三周【项目3-形状类族的中的纯虚函数】
- Django笔记 使用编辑器django-ckeditor
- Android 滤镜推流