音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
請教把驅(qū)動編譯進(jìn)Linux內(nèi)核問題
參照<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
re
繼續(xù)求教呀.各位大俠指點(diǎn)一下吧.

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
ARM仿真器選擇
s3c4510讀16位的存儲器的時候是怎么樣的呢?地址怎么編排
[求助]定義寄存器的變量搞不懂
請問怎么查看c文件的匯編代碼
Wince 與PC的連接問題????
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號