Android深度探索--HAL与驱动开发----第十章读书笔记
一、打印內核調試信息:printk
Printk函數用法與printf函數類似,只不過printk函數運行在內核空間,printf函數運行在用戶空間,printk函數在printk.c文件中實現。
Printk函數的原型如下:asmlinkage int printk(const char *fmt,...)
第1個參數表示格式字符串,后面是可變參數。第一個參數值前面加尖括號包含的數字表示輸出的日志級別,共有8個級別,在linux/kernel.h頭文件中定義。
嵌入式Linux的調用技術
調試方法:設置斷點、逐步跟蹤代碼、輸出調試信息。
打印訥河調試信息:printk。Printk函數運行在內核空間,printk函數運行在用戶空間。Linux驅動這樣的Linux內核程序只能使用printk函數輸出調試信息。
Asmlinkage int printk(const char *fmt, …)第一個參數表示格式字符串,后面是可變參數。
雖然使用printk函數可以很方便的將纖細寫入日志文件或控制臺,但是大量使用printk函數頻繁操作日志文件或控制臺設備文件會嚴重影響Linux驅動的性能。防止printk函數降低Linux驅動的性能
通過虛擬文件系統進行數據交互。在Linux文件系統中,/proc經常被用來作為內核空間與用戶空間進行數據交互的工具。/proc并不是真正的文件系統,而是映射內存。所有讀寫/proc的操作都是對內存的讀寫,所以讀寫/proc文件系統的速度要遠比讀寫/dev文件系統的速度快。因此,/proc文件系統也可以作為Linux驅動與用戶空間程序交互的工具。有很多系統信息就是通過/proc文件系統由內核空間的程序向外界提供的。/proc文件系統和/dev文件系統一樣,也需要設置訪問文件的動作處理函數。
Proc_mkdir:
name:虛擬目錄名稱
parent:虛擬目錄父目錄的proc_dir_entry結構體指針
create_proc_entry
?????? name:虛擬文件名稱
?????? mode:虛擬文件的訪問權限,等同于Linux問價的訪問權限
?????? parent:虛擬文件父目錄的proc_dir_entry結構體指針。
Create_proc_read_entry
?????? name:虛擬文件名稱
?????? mode:虛擬文件的訪問權限,等同于Linux問價訪問權限。
?????? base:虛擬文件父目錄的proc_dir_entry結構體指針。?????
?????? read_proc:處理讀動作的函數指針。
data:用于虛擬文件系統的數據。該值就是proc_dir_entry.read_proc函數的最后一個參數值
remove_proc_entry
?????? name:要刪除的虛擬文件的名稱
?????? parent:虛擬文件父目錄的proc_dir_entry結構體指針。
調試工具:
?????? 1用gdb調試用戶空間程序
?????? 2gdbserver遠程調試用戶空間程序
?????? 3kgdb遠程調試內核程序
http://www.cnblogs.com/lhczln/
轉載于:https://www.cnblogs.com/lhczln/p/5652660.html
總結
以上是生活随笔為你收集整理的Android深度探索--HAL与驱动开发----第十章读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt之动画框架
- 下一篇: Android studio中不同颜色代