linux驅動模組之間通訊

2021-09-26 22:57:18 字數 844 閱讀 7957

一、export_symbol核心模組函式匯出機制

1. 案例:筆者要實現乙個功能,驅動模組(adc.ko)與驅動模組(gpio.ko)之間通訊。

2. 修改adc.ko驅動,在函式內部增加讀取adc狀態的介面函式

static unsigned char g_hardware_version = 0x7e;

unsigned char get_hardware_version_by_adc(void)

export_symbol(get_hardware_version_by_adc);

3. 修改gpio.ko驅動,增加獲取adc狀態的介面函式

extern unsigned char get_hardware_version_by_adc(void);

static void nuc972_gpio_request(void)

4. 依次insmod載入adc.ko、gpio.ko驅動,執行除錯資訊如下

nuc972_gpio_request(): get_hardware_version_by_adc=0x7e
5. 檢視核心模組匯出的函式列表

[root@szclou ~]#cat /proc/kallsyms | grep "get_hardware_version_by_adc"

bf01c028 t get_hardware_version_by_adc [nuc972_adc]

二、notify通知鏈機制

詳見:

Linux驅動 模組通訊

編寫模組通訊例項 模組add sub提供add integer 加法與sub integer 減法函式,模組test呼叫函式完成操作。分別對兩模組建立兩個資料夾,編寫對應的.c與makefile檔案,add sub.h在add sub模組資料夾內,分別make編譯成功。遇到的問題 1.insmod ...

linux核心 驅動和硬體之間的關係和通訊

linux驅動是直接和硬體打交道的軟體程式。層次結構上 它處於作業系統和硬體之間。驅動與linux核心的關係 驅動程式提供的一組裝置驅動介面函式device driver inte ce給作業系統在linux中,這一組裝置驅動介面函式一般包括open,close,read,write,ioctl等。...

Linux驅動模組基礎

1 模組載入函式 linux核心模組載入函式一般以 init標識宣告,典型的模組載入函式的形式如下 static int init initialization function void module init initialization function 模組載入函式必須以 module in...