半年前玩過linux驅動之後就再也沒有動了,現在看來用個東西記下來才是最好的辦法,既可以複習,也可以為以後快速入手做準備
首先介紹一些概念
1,linux驅動裝置有兩個號,乙個是主裝置號,乙個是次裝置號,
主裝置號用來區分不同的模組,次裝置號用來區分同一模組內部的不同實現,比如建立了乙個mem模組,用c語言開啟了三個mem裝置,
裝置號的前12位表示主裝置號,後20位表示次裝置號
裝置號的型別是dev_t,本質是乙個unsigned long型別的資料
主裝置號 = major(裝置號)
次裝置號 = manor(裝置號)
這樣就不用自己分解裝置號來獲取了
裝置號的申請有兩種,
1,靜態申請
int register_chadev_region(dev_t form,unsigned count,const char *name) 申請成功返回0
2,動態申請
int alloc_chrdev_region(dev_t *dev,unsigned count,const char *name)
區別就是乙個得制定裝置號,乙個不用指定,
乙個申請的快些,乙個申請的慢些
最好的辦法就是先靜態申請,失敗了再動態
Linux驅動程式設計(十) 驅動註冊
驅動註冊使用結構體platform driver,該結構體在 include linux platform device.h 中,使用命令開啟 vim include linux platform device.h驅動註冊函式platform driver register,驅動解除安裝函式plat...
linux驅動開發擴充套件 字元裝置註冊詳解
在2.4的核心我們使用 register chrdev來進行字元裝置裝置驅動 file operations 的註冊和主裝置號的分配以及兩者的繫結,這種方式每乙個主裝置號只能繫結乙個裝置驅動程式,也就是說核心最多支援 255 不一定是255個 個字元裝置驅動程式。但並不代表它只支援255個字元裝置,...
linux匯流排,裝置,驅動註冊
遵守udev裝置模型,首先註冊匯流排,然後是匯流排裝置,之後是具體裝置註冊,註冊完之後就可以在sys bus相應的目錄下面找到掛載這個匯流排上的裝置,最後是註冊驅動,驅動會查詢匯流排上的裝置進行繫結。比如 自定義乙個裝置是my vir device,使用匯流排是vir bus。1.註冊匯流排型別 s...