1. gzyueqian
      13352868059

      嵌入式學習路線筆記:教你怎么創建設備文件詳解

      更新時間: 2018-10-19 10:10:18來源: 西安嵌入式培訓瀏覽量:3232

          這次小編就來給大家分享一下嵌入式應用技術里面該怎么創建設備文件,大家若是讀完本篇文章后還有不清楚的地方可以咨詢我們。



          1、自動創建設備文件創建設備文件類

          #define class_create(owner, name)
          設備可以有多個子設備,class_create這個宏相當于創建一
          個子設備的一個父類,通過它來創建多個子設備 owner :模塊本身 THIS_MODULE name : name
          返回值 : struct class 類型指針, 出錯:NULL,成功:有效的struct class指針
          創建設備文件
          struct device *device_create(struct class *class, struct device *parent,
          dev_t devt, void *drvdata, const char
          *fmt, ...)
          class :通過 class_create 創建的設備文件類指針 parent :父設備,一般NULL
          devt :設備號,包含主設備號和次設備號 drvdata :私有數據
          fmt :設備文件名
          返回值:Returns &struct device pointer on success, or ERR_PTR() on error.
          失敗時需要用 ERR_PTR 函數判斷
          銷毀設備文件
          void device_destroy(struct class *class, dev_t devt)
          class :設備文件類指針
          devt :設備號,包含主設備號和次設備號
          銷毀設備文件類
          extern void class_destroy(struct class *cls); cls :設備文件類指針
          設備類查看
          ls /sys/class/xxxxx
          ls /dev/xxx
          2、區分設備文件 struct inode {
          ......
          dev_ti_rdev; inode結構體保存的設備號
          ......
          void
          *i_private; inode 的私有數據
          }
          ptintk("open device num majour : %d , min min : %drn", MAJOR(pNode->i_rdev), MINOR(pNode->i_rdev)
          dmesg | tail -20
          3、ioctl
          命令碼構建,內核使用32位表達了4種信息 dir:讀寫,size:
          ioctl第三個參數時類型所占的字節數
          ,type(可以做命令的一個分段,類似于使用枚舉的錯誤碼分段), nr:命令碼
          *0xE0000000DIR
          *0x80000000DIR = WRITE
          *0x40000000DIR = READ
          *0x20000000DIR = NONE
          * 0x3FFF0000 SIZE (overlaps NONE bit)
          * 0x0000FF00 TYPE
          * 0x000000FF NR (CMD)
          4、互斥鎖
          # define mutex_init(mutex)
          mutex :要初始化的鎖,注意傳的是 struct mutex 類型指針
          mutex_lock
          mutex_unlock
          5、信號量
          static inline void sema_init(struct semaphore *sem, int val) sem :信號量結構體指針
          val :信號量持有資源個數
          down 申請資源,當沒有資源時,休眠等待,不可中斷 extern void down(struct semaphore *sem)
          down_interruptible 申請資源,當沒有資源時,休眠等待,可中斷
          extern int __must_check down_interruptible(struct semaphore *sem)
          up 釋放資源
          extern void up(struct semaphore *sem)
          6、原子變量
          ATOMIC_INIT(0) 初始化
          atomic_dec_and_test 減1并測試,為0返回true,否則返回
          false
          atomic_inc 加1
          7、自旋鎖

          spin_lock_init(&g_SpinLock); 初始化 spin_lock(&g_SpinLock); 加鎖 spin_unlock(&g_SpinLock); 解鎖

          想要了解更多的嵌入式應用技術那就來“撩”我們吧!

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 一区二区视频在线 | 中文字幕日韩精品欧美一区久久 | 日韩AVAV天堂AV在线 | 亚洲国产综合视频 | 日韩欧美精品一中文字幕 | 亚洲欧美中文在线观看 |