|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教把驅(qū)動編譯進(jìn)Linux內(nèi)核問題 |
| 作者:highhand 欄目:ARM技術(shù) |
參照<Linux下添加驅(qū)動到內(nèi)核>文章,把一個簡單的LED驅(qū)動編譯進(jìn)去內(nèi)核,有些問題要請教,我把看過的2篇文章都貼出來,大家看看這樣做是否可以? 我想問問,在Linux下和uclinux下面是否相同的? Linux下的 1. 修改源文件。 如源文件為linux/driver/char/xxx.c。不能#define MODULE,修改int __init xxx_init(void)中的devfs_register_chrdev驅(qū)動注冊函數(shù)。一般不采用動態(tài)分配major號方式,給定一major號,例如200,修改相應(yīng)代碼。但如果需要動態(tài)分配major號的話,則在自動生成設(shè)備文件時稍微麻煩一點(diǎn),需要運(yùn)行一個腳本來創(chuàng)建 2. 修改makefile文件。修改 linux/driver/char/Makefile ,在適當(dāng)位置添加obj-$(CONFIG_XXX) += xxx.o 3. 修改make配置文件。 修改 linux/driver/char/ Config.in,在適當(dāng)位置添加 tristate \'XXX SUPPORT \' CONFIG_XXX 便于在 make menuconfig 時選擇。CONFIG_XXX必須要同makefile文件中對應(yīng)的配置變量 4. 進(jìn)行配置。 運(yùn)行make menuconfig(在menuconfig的字符設(shè)備選項(xiàng)里你可以看見我們剛剛添加的\' XXX SUPPORT 選項(xiàng),并且選中。 配置產(chǎn)生的結(jié)果會在include\\config\\下 5. 自動創(chuàng)建設(shè)備文件。對于動態(tài)分配major號的,需要運(yùn)行腳本來創(chuàng)建。 可以參見 《Linux設(shè)備驅(qū)動程序》中的示例,適合動態(tài)分配major號的情況。對于固定major號固定設(shè)備文件名,也可以自己直接創(chuàng)建,針對ramdisk或romdisk,在它的解包的/dev下用mknod建立相應(yīng)的設(shè)備文件,然后重新打包即可 uclinux下的 1.原文件放在 linux-2.4.x/driver/char/ ;本例中,名為xyz.c 2.設(shè)備驅(qū)動原文件必須包括這樣的一個函數(shù): void xyz_init(void){register(254, 'xyz', &xyz_fops)} 這個函數(shù)完成注冊.在linux-2.4.x/driver/mem.c 將會調(diào)用它. 這個函數(shù)也可以寫成: void __init xyz_init(void){register(254, 'xyz', &xyz_fops)} 這樣不必須在 linux-2.4.x/driver/mem.c 調(diào)用它 3.修改 linux-2.4.x/driver/char/Makefile 在適當(dāng)位置添加一行: obj_$(CONFIG_XYZ) += xyz.o 4.修改linux-2.4.x/driver/char/Config.in, 添加一行: bool 'xyz hahahaha' CONFIG_XYZ 便于在 make menuconfig 時選擇 5.修改linux-2.4.x/driver/char/mem.c 在適當(dāng)位置(你去找就會發(fā)現(xiàn),在文件頭部)添加: #ifdef CONFIG_XYZ extern void xyz_init(void); #endif 在chr_dev_init()函數(shù)添加: #ifdef CONFIG_XYZ xyz_init(); #endif 6. 修改vendor/Samsung/4510b/Makefile ,建立設(shè)備節(jié)點(diǎn); 在12---35行間,DEVICE 部分添加 如下內(nèi)容 xzy,c,254,0 7.make menuconfig 選中 xyz hahahaha, 編譯,下載;啟動后你會看到 /proc/devices 中字符設(shè)備多了一項(xiàng) xyz 254 |
| 2樓: | >>參與討論 |
| 作者: highhand 于 2005/11/30 11:39:00 發(fā)布:
re 繼續(xù)求教呀.各位大俠指點(diǎn)一下吧. |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |