最簡單的字符設備驅動程序

/**********待整理**************/數組

一、在註冊驅動程序的時候,根據主設備號分配的file_operations結構體放到內核的數組裏面。咱們在用戶空間open打開設備的方式是這樣的:根據名字找到設備節點,設備節點會對應主設備號,根據主設備號就找到了file_operations結構體。因此咱們還須要建立設備節點:mknod /dev/xxx c 111 0。由此咱們也能夠看出,用戶空間open的名字「xxx」,能夠跟內核空間的設備名字不一致。由於並非經過設備名找到file_operations結構體,只要保證open的名字"xxx"與設備節點的名字相一致,而設備節點的主設備號跟內核設備的主設備號相一致就能夠了。由於open函數根據設備名找到設備節點,根據設備節點的主設備號找到file_operations結構體,最終調用file_operations裏面註冊的open函數。函數

二、 write (int fd,const void * buf,size_t count);
write函數會將buf裏面的內核寫入到fd表明的文件裏面,寫入的字節數是count。開發

三、 register_chrdev分析
register_chrdev(111,"lcd",&lcd_operation);
__register_chrdev(major, 0, 256, name, fops);
__register_chrdev_region(major, baseminor, count, name);//註冊一個主設備號
cdev_alloc(); //分配一個struct cdev結構體,裏面有struct file_operations結構體
//設置struct cdev結構體
cdev->owner = fops->owner;
cdev->ops = fops;
//根據主設備號將struct cdev添加到一個數組裏面去
cdev_add(cdev, MKDEV(cd->major, baseminor), count);it

4.、register_chrdev(111,"lcd",&lcd_operation); 若是主設備號爲0,就會自動分配主設備號!分配到的主設備號會做爲返回值。裝載驅動後,能夠在開發板上cat /proc/devices查看主設備號,以便建立設備節點io

相關文章
相關標籤/搜索