初識Linux核心-和CMOS打電話

dalerkd發表於2016-09-29

用到的命令

命令 作用
insmod install module
rmmod remove module
dmesg debug print message
lsmod list module
od dump files in octal,預設十進位制讀目標,-x 16進位制

用上節編寫的LKM-劉姥姥進行試驗

載入編譯LKM:
sudo insmod llaolao.ko
該命令需要superuser許可權。

執行dmesg列印核心日誌,如下圖:

32bit系統大於e000000;屬於核心地址。

lsmod一下我們的劉姥姥已經臨時駐紮在系統核心了:

sudo rmmod llaolao

虛擬檔案系統:

/sys/module/llaolao/section/

裝置驅動模型

LKM方式

bus and core layers

Linux Device Model(LDM)

即插即用

核心態
使用者態支援即插即用:udevd

規則匹配:使用者態和核心態之間位於:

/etc/udev/rules.d

註冊裝置屬性

顯示某裝置的詳細資訊:

bash>udevinfo -a -p /sys/block/sr0

Kobjects-核心物件
在 include/linux/kobject.h

虛擬檔案系統:

/dev檔案系統

bash>ls -l/dev

延遲任務執行

windows上叫dpc,Linux叫Tasklets
可以讓中斷快速結束。

常用標頭檔案:慢慢熟悉吧
常用函式:慢慢熟悉吧

傳輸型別分為:

  • 字元裝置(鍵盤……)
  • -塊裝置(硬碟……)

例如字元裝置需要:

  • init()註冊
  • open,read,ioctl,llseek.
  • 中斷處理函式

需要處理的資料結構:

  • cdev
  • file_operations:很多回撥函式
  • 檔案

舉例:

System CMOS
通過埠(dig)
70索引
71讀寫

分類 組成
經典PC結構 南橋和北橋
典型SOC架構(手機上) 序列匯流排

cd ~到達工作目錄

核心模組相關函式:

  • copy_to_user()
  • copy_from_user()

訪問使用者態記憶體,防崩潰。

相關文章