需要定義乙個字元裝置,裡面有字元裝置相關的方法
struct file_operations cdev_fops = ;
struct gyo_struct gyostruct;
申請裝置號
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,const char *name)
###dev_t *dev:dev_t 型別的引數 eg:dev_t devno 傳參->&devno;
###unsigned baseminor:第乙個次裝置號,一般填0
###unsigned count:裝置數量,按需要填,乙個就寫 1
###const char *name:裝置名字,好像隨便取,我也不知道去哪找~ eg:"char devno"
ret = alloc_chrdev_region(&gyostruct.devno,0,1,"gyro devno");
if(ret < 0)
字元裝置 建立物件,然後初始化該物件
void cdev_init(struct cdev *cdev, const struct file_operations *fops) /*初始化 屬性 方法*/
###struct cdev *cdev:需要乙個cdev型別的結構體,eg:struct cdev cdev_obj 傳參->&m_cdev;
### const struct file_operations *fops:需要乙個file_operations型別的結構體,裡面存有屬性和方法eg:struct file_operations cdev_fops 傳參->&cdev_fops
int cdev_add(struct cdev p, dev_t dev, unsigned coun
t) /*將字元裝置物件新增到核心*/
cdev_init(&gyostruct.cdev_obj,&cdev_fops); /*初始化*/
ret = cdev_add(&gyostruct.cdev_obj,gyostruct.devno,1); /*將我們之前獲得裝置號和裝置號長度填充到cdev結構中*/
if(ret <0)
字元裝置 第三步, 建立檔案節點 在/sys/class/ 能找到class_create函式name的資料夾
#define class_create(owner, name)這是個巨集,動態建立裝置的邏輯類,並完成部分欄位的初始化,然後將其新增到核心中
###owner:這是啥呀,我也不知道,一般都填的this_module
###name:建立字元裝置的檔案節點,可以在
/sys/class/
找到gyostruct.cdev_cls = class_create(this_module,"gyos char");
if(!gyostruct.cdev_cls)
裝置節點的建立
struct device *device_create(struct class *class, struct device *parent,
dev_t devt, void *drvdata, const char *fmt, ...)
###struct class *class:要乙個struct class型別的引數 eg:struct class *cls 傳參->cls
###struct device *parent:爸爸指標嗎,這個引數我也不知道耶,填個null
###dev_t devt:看下面我用的然後對照下結構體思考一下吧,我懶得想了
###void *drvdata:填null
###const char *fmt:自動建立,%d會自己順序填,後面可以跟乙個引數,表示起始號碼,我填的0,所以會建立乙個gyr0起始的裝置節點,可以在/dev/裡找到gyr0的檔案
###...:從多少開始,就是前面的%d
gyostruct.cdev_device =
device_create(gyostruct.cdev_cls,null,gyostruct.devno,null,"gyro%d",0);
if(!gyostruct.cdev_device)
return 0;
}
Linux裝置驅動之字元裝置 1 建立字元裝置
建立乙個字元裝置並在 dev目錄下建立節點的基本步驟 include include include include include include include include include include include include include include define hell...
裝置驅動例項 字元裝置驅動
在整個linux裝置驅動學習中,字元裝置驅動較為基礎。通過對它的學習,對裝置驅動進一步加深了解 cdev 結構體struct cdev 講下比較重要的成員變數 dev t dev 定義了32位的裝置號,其中12位是主裝置號,20位是從裝置號。獲取主裝置號 major dev t dev 獲取從裝置號...
字元裝置驅動
字元裝置驅動 概述 塊裝置 字元裝置以及網路裝置中塊裝置和網路裝置一般都會硬體配置完備,對於程式設計師而言,能夠更多操作的就是字元裝置。設定字元裝置的一般步驟 1.初始化硬體 2.定義fops file operations 3.申請cdev,掛載fops 3.加入cdev 函式cdev add 主...