混雜裝置也叫雜項裝置,是普通字元裝置驅動(struct cdev)的乙個封裝,可以簡化乙個普通字元裝置驅動的設計流程。
混雜裝置的特點:
1)主裝置號10,次裝置號不同。
2)簡化cdev的設計流程
3)使用上和cdev是沒有差異。
[root@gec6818 /]
#cat /proc/devices
character devices:
1 mem
5 /dev/tty
5 /dev/console
5 /dev/ptmx
5 ttyprintk
10 misc ----->混雜裝置
[root@gec6818 /]
#cat /proc/misc
42 network_throughput
43 memory_throughput
44 network_latency
45 cpu_dma_latency
46 xt_qtaguid
47 alarm
48 log_system
49 log_radio
50 log_events
51 log_main
52 ashmem
53 binder
54 uhid
55 hdmi-cec
56 nxp-scaler
223 uinput
57 keychord
1 psaux
58 usb_accessory
59 mtp_usb
60 android_adb
200 tun
61 tgt
237 loop-control
62 sw_sync
229 fuse
235 autofs
63 ion
1、普通字元裝置驅動的設計流程
-------定義並初始化乙個字元裝置---------
1)定義乙個字元裝置—>struct cdev
2)定義並初始化字元裝置的檔案操作集—>struct file_operations
3)給字元裝置申請乙個裝置號—>裝置號=主裝置號<<20 + 次裝置號
4)初始化字元裝置
5)將字元裝置加入核心
-------自動生成裝置檔案---------
6)建立class
7)建立device,其中device是屬於class的
-------得到實體地址對應的虛擬位址-------
8)申請物理記憶體區,申請sfr的位址區。sfr — special function register: gpioeout
9)記憶體的動態對映,得到實體地址對應的虛擬位址
10)訪問虛擬位址
2、混雜裝置驅動的設計流程
1)定義檔案操作集
2)定義乙個混雜裝置,並完成混雜裝置的初始化
3)註冊乙個混雜裝置
4)申請物理記憶體區,申請sfr的位址區。sfr — special function register: gpioeout
5)記憶體的動態對映,得到實體地址對應的虛擬位址
6)訪問虛擬位址
1、混雜裝置
struct miscdevice ---->來描述乙個混雜裝置
#include
struct miscdevice
;
成員說明:
int minor; —>次裝置號
const char *name; ---->混雜裝置的名字,也是裝置檔案的名字。
const struct file_operations *fops; —>檔案操作集
2、混雜裝置的註冊
int
misc_register
(struct miscdevice * misc)
;
3、混雜裝置的登出
int
misc_deregister
(struct miscdevice *misc)
;
**示例:led_drv.c linux 混雜裝置miscdevice
miscdevice混雜裝置 miscdevice混雜裝置是字元裝置的一種,它們共享乙個主裝置號 10 但次裝置號不同,所有混雜裝置形成乙個鍊錶,對裝置發給你問時核心根據次裝置號查詢到相應的miscdevice裝置。這樣做的好處,節約主裝置號,將某些裝置用鍊錶的形式鏈結在一起,最後通過查詢次裝置區分...
雜項裝置(misc device)
雜項裝置也是在嵌入式系統中用得比較多的一種裝置驅動。在 linux 核心的include linux目錄下有miscdevice.h檔案,要把自己定義的misc device從裝置定義在這裡。其實是因為這些字元裝置不符合預先確定的字元裝置範疇,所有這些裝置採用主編號10 一起歸於misc devic...
字元雜項裝置(miscdevice)
misc雜項裝置是主裝置號為10的驅動裝置 在linux核心原始碼miscdevice.h裡雜項裝置描述結構體定義 struct miscdevice extern int misc register struct miscdevice misc extern int misc deregister...