linux裝置和驅動註冊
一、設備註冊:
1、首先需要對核心檔案iTop4412_Kernel_3.0 中的arch/arm/mach-exynos/mach-itop4412.c 平臺檔案做修改,仿照leds的設備註冊來寫。該結構體定義在include/linux/platform_device.h 中,這裡還需要確認一下,是否有“HELLO_CTL”巨集定義,只有定義了這個巨集,在生成核心的時候才會將其編譯到核心。 在drivers/char/Kconfig 中可檢視是否定義
2、make menuconfig在Device Drivers --->”→“Character devices --->”→“Enable HELLO config
確認了巨集定義“HELLO_CTL”
3、開啟“arch/arm/mach-exynos/mach-itop4412.c”平臺檔案可查詢LEDS_CTL 仿照著已有的初始化程式碼寫即可
4、儲存退出,make zImage重新編譯核心,燒寫到開發板
5、開發板啟動之後,使用命令“ls /sys/devices/platform/”可以檢視到新註冊的裝置
二、驅動註冊:
1、核心原始碼中 vim include/linux/platform_device.h 可看到驅動註冊的相關函式,查詢一下“platform_driver_register” 可看到:
註冊驅動的函式:
extern int platform_driver_register(struct platform_driver *)
解除安裝驅動的函式:
extern void platform_driver_unregister(struct platform_driver *)
其中 platform_driver 型別的結構體 是非常重要的,該結構體在include/linux/platform_device.h 標頭檔案中,裡面的幾個操作函式和一個物件會在編寫的驅動C檔案中呼叫,相關函式可參照例程中仿寫。
2、在Makefile檔案中把第四行的 .o 檔案 修改為相應的驅動C檔案的名字 如驅動C檔案probe_linux_module.c,則改為probe_linux_module.o