www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > IOT物聯(lián)網小鎮(zhèn)
[導讀]作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄示例程序目標編寫驅動程序編寫應用程序卸載驅動模塊別人的經驗,我們的階梯!大家好,我是道哥。...

作  者:道哥,10 年嵌入式開發(fā)老兵,專注于:C/C 、嵌入式、Linux。


關注下方公眾號,回復【書籍】,獲取 Linux、嵌入式領域經典書籍;回復【PDF】,獲取所有原創(chuàng)文章( PDF 格式)。


目錄


別人的經驗,我們的階梯!


大家好,我是道哥。


在前幾篇文章中,我們一塊討論了:在Linux系統(tǒng)中,編寫字符設備驅動程序的基本框架,主要是從代碼流程和 API 函數(shù)這兩方面觸發(fā)。


這篇文章,我們就以此為基礎,寫一個有實際應用功能的驅動程序:


  1. 在驅動程序中,初始化 GPIO 設備,自動創(chuàng)建設備節(jié)點;


  2. 在應用程序中,打開 GPIO 設備,并發(fā)送控制指令設置 GPIO 口的狀態(tài);


示例程序目標

編寫一個驅動程序模塊:mygpio.ko


當這個驅動模塊被加載的時候,在系統(tǒng)中創(chuàng)建一個mygpio類設備,并且在/dev目錄下,創(chuàng)建4個設備節(jié)點:


/dev/mygpio0


/dev/mygpio1


/dev/mygpio2


/dev/mygpio3


因為我們現(xiàn)在是在x86平臺上來模擬 GPIO的控制操作,并沒有實際的GPIO硬件設備。


因此,在驅動代碼中,與硬件相關部分的代碼,使用宏MYGPIO_HW_ENABLE控制起來,并且在其中使用printk輸出打印信息來體現(xiàn)硬件的操作。


在應用程序中,可以分別打開以上這4個GPIO設備,并且通過發(fā)送控制指令,來設置GPIO的狀態(tài)。


編寫驅動程序

以下所有操作的工作目錄,都是與上一篇文章相同的,即:~/tmp/linux-4.15/drivers/。


創(chuàng)建驅動目錄和驅動程序

$ cd linux-4.15/drivers/
$ mkdir mygpio_driver
$ cd mygpio_driver
$ touch mygpio.c
mygpio.c文件的內容如下(不需要手敲,文末有代碼下載鏈接):


#include

  • #include

  • #include

  • #include

  • #include


  • // GPIO 硬件相關宏定義
    #define MYGPIO_HW_ENABLE

    // 設備名稱
    #define MYGPIO_NAME "mygpio"

    // 一共有4個 GPIO 口
    #define MYGPIO_NUMBER 4

    // 設備類
    static struct class *gpio_class;

    // 用來保存設備
    struct cdev gpio_cdev[MYGPIO_NUMBER];

    // 用來保存設備號
    int gpio_major = 0;
    int gpio_minor = 0;

    #ifdef MYGPIO_HW_ENABLE
    // 硬件初始化函數(shù),在驅動程序被加載的時候(gpio_driver_init)被調用
    static void gpio_hw_init(int gpio)
    {
    printk("gpio_hw_init is called: %d. \n", gpio);
    }

    // 硬件釋放
    static void gpio_hw_release(int gpio)
    {
    printk("gpio_hw_release is called: %d. \n", gpio);
    }

    // 設置硬件GPIO的狀態(tài),在控制GPIO的時候(gpio_ioctl)被調研
    static void gpio_hw_set(unsigned long gpio_no, unsigned int val)
    {
    printk("gpio_hw_set is called. gpio_no = %ld, val = %d. \n", gpio_no, val);
    }
    #endif

    // 當應用程序打開設備的時候被調用
    static int gpio_open(struct inode *inode, struct file *file)
    {

    printk("gpio_open is called. \n");
    return 0;
    }

    // 當應用程序控制GPIO的時候被調用
    static long gpio_ioctl(struct file* file, unsigned int val, unsigned long gpio_no)
    {
    printk("gpio_ioctl is called. \n");

    // 檢查設置的狀態(tài)值是否合法
    if (0 != val
  • 本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
    換一批
    延伸閱讀

    上海2022年9月6日 /美通社/ -- 9月3日上午,《"東數(shù)西算"戰(zhàn)略下綠色智算中心產業(yè)發(fā)展研究報告》重磅發(fā)布。該報告由國家信息中心與燧原科技深度合作,聯(lián)合慶陽市人民政府、之江實驗室、中國能建共同...

    關鍵字: 數(shù)字經濟 安防 模型 編寫

    (全球TMT2022年8月31日訊)8月25日,"2022算網融合產業(yè)發(fā)展峰會"在北京舉行,會上中國信息通信研究院發(fā)布《"邊緣計算+"技術白皮書》,該白皮書由信通院發(fā)起,浪潮信息等業(yè)界多家領袖企業(yè)參與編寫,為邊緣計算在...

    關鍵字: 邊緣計算 人工智能 機器人 編寫

    GPIO全稱General Purpose Input Output即通用輸入/輸出,其實GPIO的本質就是芯片的一個引腳,通常在ARM中所有的I/O都是通用的。不過由于每個開發(fā)板上都會設計不同的外圍電路,這就造成GPI...

    關鍵字: GPIO 芯片

    北京2022年8月31日 /美通社/ -- 8月25日,"2022算網融合產業(yè)發(fā)展峰會"在北京舉行,大會匯聚工業(yè)和信息化部、中國通信標準化協(xié)會、運營商、阿里巴巴、國家電網、浪潮信息等政府及企...

    關鍵字: 編寫 邊緣計算 AI ECOM

    "為加快推進深圳團體標準建設,提升社會團體的編寫能力" 深圳2022年8月29日 /美通社/ -- 為加快推進深圳團體標準建設,滿足深圳市社會團體對團體標準化能力提升的迫切需求,提升社會團體的標準編...

    關鍵字: 編寫 新能源汽車 汽車產業(yè) 電動汽車

    上海2022年8月10日 /美通社/ -- 工業(yè)一直在我國國民經濟中占有主導地位,在"十四五"規(guī)劃的重要發(fā)展階段,區(qū)塊鏈等新一代信息技術與產業(yè)的融合創(chuàng)新將會催生新產業(yè)新業(yè)態(tài)新模式,壯大經濟發(fā)展新引擎。...

    關鍵字: 編寫 區(qū)塊鏈 應用發(fā)展 中國電子

    北京2022年7月8日 /美通社/ -- 近日,由荷蘭皇家菲仕蘭聯(lián)合中國婦女發(fā)展基金會發(fā)起的“愛育未來”項目11個項目點的志愿者代表和發(fā)起方代表齊聚線上項目總結交流會,對社區(qū)和家庭早教的階段性探索成果和經驗進行交流和討論...

    關鍵字: 可持續(xù)發(fā)展 編寫

    廣州2022年7月1日 /美通社/ -- 近日,SGS攜手中標院為廣州奧太信科技有限公司旗下品牌UEK的一款兒童減負書包頒發(fā)了獨立慧鑒產品認證證書。結合UEK該款認證書包的客觀測試與主觀評價結果,其各項性能、指標符合SG...

    關鍵字: BSP 供應鏈 編寫 防護

    北京2022年5月6日 /美通社/ -- 近日,由中電金信作為核心編寫單位參編的全球首個AI模型開發(fā)管理標準 -- 《人工智能研發(fā)運營一體化(Model/MLOps)能力成熟...

    關鍵字: AI模型 人工智能 機器學習 編寫

    (全球TMT2022年5月6日訊)近日,由中電金信作為核心編寫單位參編的全球首個AI模型開發(fā)管理標準 --?《人工智能研發(fā)運營一體化(Model/MLOps)能力成熟度模型第一部分:開發(fā)管理》正式對外發(fā)布。該標準的發(fā)布...

    關鍵字: AI模型 編寫 人工智能 機器學習

    IOT物聯(lián)網小鎮(zhèn)

    42 篇文章

    關注

    發(fā)布文章

    編輯精選

    技術子站

    關閉