投資中國
      您的位置:首頁 >寬帶 > 正文

      Openwrt開發指南 第17章 驅動開發之字符設備驅動程序|焦點日報

      來源:嵌入式大雜燴 時間:2023-07-02 09:32:58

      開發環境:

      主機:Ubuntu12.04


      【資料圖】

      開發板:RT5350

      Openwrt:Openwrt15.05

      1 配置編譯驅動程序

      首先將 RT5350_drv 文件夾傳到 OpenWrt 源碼的chaos_calmer/package/kernel 目錄下。然后進入 OpenWrt 源碼的頂層目錄,執行 make menuconfig。

      注意:至于RT5350_drv的內容,建議初學者按照步驟做就是了,不必追問細節,初學者應該知道openwrt驅動開發流程,代碼的具體實現筆者在后文也會講到,跟著筆者一步一步做就是了。

      $ cd openwrt/

      $ make menuconfig

      在彈出的菜單界面里,配置選項。

      Kernel modules  --- >  Other modules  --- >< * > kmod-RT5350_drv

      然后我們就能看到我們的驅動程序的選項了 kmod-RT5350_drv,將它配置成M,也可編譯進入內核。

      圖1

      最后,退出保存。然后再執行編譯命令。

      make V=99

      編譯完成以后,就能在源碼/bin/ramips/packages/base目錄下看到我們的內核模塊驅動程序的軟件包。

      kmod-RT5350_drv_3.18.109-1_ramips_24kec.ipk

      2 字符設備驅動軟件包 Makefile 介紹

      首先進入到RT5350_drv 文件夾,里面有兩個文件。Makefile內容如下。

      ## Copyright (C) 2008-2019 OpenWrt.org## This is free software, licensed under the GNU General Public License v2.# See /LICENSE for more information.#include $(TOPDIR)/rules.mkinclude $(INCLUDE_DIR)/kernel.mkPKG_NAME:=RT5350_drvPKG_RELEASE:=1include $(INCLUDE_DIR)/package.mkdefine KernelPackage/RT5350_drv  SUBMENU:=Other modules  # DEPENDS:=@!LINUX_3_3  TITLE:=Motor driver  FILES:=$(PKG_BUILD_DIR)/RT5350_drv.ko  # AUTOLOAD:=$(call AutoLoad,30,RT5350_drv,1)  KCONFIG:=endefdefine KernelPackage/RT5350_drv/description This is a RT5350_drv drivers endefMAKE_OPTS:= \\ARCH="$(LINUX_KARCH)" \\CROSS_COMPILE="$(TARGET_CROSS)" \\SUBDIRS="$(PKG_BUILD_DIR)"define Build/Preparemkdir -p $(PKG_BUILD_DIR)$(CP) ./src/* $(PKG_BUILD_DIR)/endefdefine Build/Compile$(MAKE) -C "$(LINUX_DIR)" \\$(MAKE_OPTS) \\modulesendef$(eval $(call KernelPackage,RT5350_drv))

      至于該 Makefile 文件中每行是什么意思,請查閱上一章,這里不再贅述。進入到 src 文件夾中;我們看一下 Makefile 的內容,非常簡單:

      obj-m +=RT5350_drv.o

      告訴內核添加的模塊目標文件名稱為RT5350_drv.o,至于RT5350_drv.c 這一個驅動模板,在上一章介紹過了,這里就不加以闡述了。

      3 動態的加載和卸載內核驅動模塊軟件包

      通過前面的努力,我們終于得到了我們自己的內核驅動模塊軟件包了。接下來就來使用它。首先將 kmod-RT5350_drv_3.18.109-1_ramips_24kec.ipk軟件包傳到開發板上面。

      然后使用 opkg install 命令來安裝軟件包。

      opkg install kmod-RT5350_drv_3.18.109-1_ramips_24kec.ipk

      使用 opkg list 命令來查看已經安裝了哪些軟件包。這里是否執行該命令都無所謂。接下來進入我們的/lib/modules/3.18.109 目錄,就能看到我們的驅動程序模塊了。

      cd lib/modules/3.18.109/

      接下來就通過 insmod 命令來裝載驅動模塊。

      insmod RT5350_drv.ko

      當我們一執行該命令,串口終端上面就會打印出。

      這行打印信息,正是我們在驅動程序的入口函數中添加的調試信息。如果我們想卸載驅動模塊,則使用 rmmod 命令。

      rmmod RT5350_drv

      當執行完這條命令后,就成功的卸載了該驅動程序。我們也能看到如下打印。

      這條打印,是在我們的驅動的出口函數中添加的調試信息

      4 驅動開機自動加載

      雖然我們通過 opkg insall 得到了.ko 為后綴的驅動模塊,但是每次要使用都得進行insmod,比較麻煩,我們可以讓系統開機后自動的加載該驅動模塊。

      首先進入到特定的目錄:

      $cd /etc/modules.d

      然后創建一個文件并且寫入一些信息:

      vi 61-RT5350_drv

      說明:61 表示不使用外接 usb類的自啟動程序,分隔符‘ -’后面接驅動模塊名稱!在創建的該文件中寫入RT5350_drv 即驅動的名稱。最后,必須保證RT5350_drv.ko 文件即我們的驅動模塊文件放在: /lib/modules/3.18.109/

      好的,重新啟動系統即可:reboot

      可以通過命令查詢當前已經加載的驅動模塊:lsmod審核編輯:湯梓紅

      標簽:

      相關閱讀


      亚洲Av无码一区二区二三区| 亚洲综合成人网在线观看| 亚洲AV人无码激艳猛片| 亚洲中文字幕无码久久综合网| 亚洲第一成人影院| 国产亚洲精品美女久久久久| 亚洲AV永久无码精品一福利 | 亚洲熟女乱综合一区二区| 亚洲人成自拍网站在线观看| 亚洲国产成人在线视频| 亚洲美女中文字幕| 久久亚洲精品无码aⅴ大香| 亚洲精品国产成人专区| 亚洲一区二区三区四区在线观看| 亚洲AV无码1区2区久久| 亚洲av综合avav中文| 亚洲av鲁丝一区二区三区| 亚洲精品高清视频| 亚洲理论片在线中文字幕| 亚洲宅男天堂a在线| 亚洲一级毛片在线播放| 亚洲精品一二三区| 亚洲AV无码国产精品永久一区| 日韩欧美亚洲国产精品字幕久久久| 国产精品亚洲精品久久精品| 国产成人久久精品亚洲小说| 亚洲国产一区二区三区| 在线观看亚洲精品福利片| 亚洲精品无码Av人在线观看国产 | 伊人久久大香线蕉亚洲| 久久久久亚洲av成人无码电影 | 亚洲乱码在线视频| 亚洲日韩一中文字暮| 亚洲av无码片vr一区二区三区| 全亚洲最新黄色特级网站| 国产成人亚洲影院在线观看| 中国亚洲女人69内射少妇| 亚洲va在线va天堂va888www| 亚洲毛片基地日韩毛片基地| 最新亚洲春色Av无码专区 | 亚洲av一综合av一区|