<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Openwrt開發指南 第17章 驅動開發之字符設備驅動程序

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-07-02 09:20 ? 次閱讀

開發環境:

主機: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,也可編譯進入內核。

1688223181226dultyxkrju

圖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.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=RT5350_drv
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define 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:=
endef

define KernelPackage/RT5350_drv/description
 This is a RT5350_drv drivers
 endef

MAKE_OPTS:= \\
	ARCH="$(LINUX_KARCH)" \\
	CROSS_COMPILE="$(TARGET_CROSS)" \\
	SUBDIRS="$(PKG_BUILD_DIR)"

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
	$(MAKE) -C "$(LINUX_DIR)" \\
		$(MAKE_OPTS) \\
		modules
endef

$(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軟件包傳到開發板上面。

1688223182014qr7vk4ud8h

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

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

1688223182346mlfokkqlxi

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

cd lib/modules/3.18.109/

16882231826216l6flkumvm

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

insmod RT5350_drv.ko

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

1688223182903d4xk8ahm3e

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

rmmod RT5350_drv

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

1688223183173btdvzl4o3d

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

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
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動程序
    +關注

    關注

    19

    文章

    776

    瀏覽量

    47368
  • 開發板
    +關注

    關注

    25

    文章

    4560

    瀏覽量

    94886
  • Ubuntu
    +關注

    關注

    5

    文章

    537

    瀏覽量

    29001
  • 驅動開發
    +關注

    關注

    0

    文章

    129

    瀏覽量

    12021
  • OpenWrt
    +關注

    關注

    10

    文章

    120

    瀏覽量

    38976
收藏 人收藏

    評論

    相關推薦

    Openwrt開發指南 第16章 驅動開發字符設備驅動程序框架

    我們在學習 C 語言的時候,知道每個應用程序的入口函數,即第一個被執行的函數是 main函數,那么,我們自己的驅動程序,哪個函數是入口函數呢?
    的頭像 發表于 06-30 09:01 ?2994次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第16章 <b class='flag-5'>驅動</b><b class='flag-5'>開發</b>之<b class='flag-5'>字符</b><b class='flag-5'>設備</b><b class='flag-5'>驅動程序</b>框架

    i.MX6ULL驅動開發1—字符設備開發模板

    本篇介紹了嵌入式Linux驅動開發中的基礎驅動——字符驅動開發的基本模式,使用了一個虛擬的
    的頭像 發表于 03-17 09:13 ?3064次閱讀
    i.MX6ULL<b class='flag-5'>驅動</b><b class='flag-5'>開發</b>1—<b class='flag-5'>字符</b><b class='flag-5'>設備</b><b class='flag-5'>開發</b>模板

    Openwrt開發指南 第15章 驅動開發字符設備驅動程序之概念介紹

    從上到下,一個軟件系統可以分為:應用程序、庫、操作系統(內核)、驅動程序。開發人員可以專注于自己熟悉的部分,對于相鄰層,只需要了解它的接口,無需關注它的實現細節。
    的頭像 發表于 06-30 09:00 ?2271次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第15章 <b class='flag-5'>驅動</b><b class='flag-5'>開發</b>之<b class='flag-5'>字符</b><b class='flag-5'>設備</b><b class='flag-5'>驅動程序</b>之概念介紹

    Openwrt開發指南 第24章 配置開發板支持U盤

    Openwrt開發指南 第24章 配置開發板支持U盤
    的頭像 發表于 07-13 08:55 ?1619次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第24章 配置<b class='flag-5'>開發</b>板支持U盤

    CE驅動程序開發指南資料分享

    CE驅動程序開發指南資料分享
    發表于 08-03 12:03

    【下載】精通Linux設備驅動程序開發+UNIX網絡編程

    。目前負責IBM印度公司的嵌入式解決方案組。他曾擔任Linux Magazine的特邀編輯,主持內核技術專欄。目錄:1 引言 2 內核
    發表于 06-05 18:38

    測試系統開發指南:理解驅動程序和直接輸入輸出

    測試系統開發指南:理解驅動程序和直接輸入/輸出
    發表于 08-21 14:53

    WINCE驅動程序開發指南

    CE驅動程序所有驅動皆為動態鏈接庫驅動實現中可以調用所有標準的APICE驅動程序模型本機驅動程序流接口
    發表于 07-07 15:06 ?41次下載

    Linux的設備驅動程序開發

    本文主要講述的是Linux的設備驅動程序開發。
    發表于 04-22 16:37 ?41次下載

    用WinDriver開發PCI設備驅動程序

    用WinDriver開發PCI設備驅動程序:給出了驅動開發工具WinDriver的主要特點,內部機制及
    發表于 06-28 19:26 ?52次下載

    PCI設備WINDOWS驅動程序開發

    PCI設備WINDOWS驅動程序開發 本文主要介紹了在Windows9x操作系統下開發PCI設備驅動
    發表于 05-03 11:54 ?3240次閱讀

    基于VxWorks的pci設備驅動程序開發

    對嵌入式實時系統Vxw池中的設備驅動程序開發進行了簡要的介紹,討論了V s操作系統下的I/O系統和設備驅動程序、應用
    發表于 08-04 17:41 ?34次下載
    基于VxWorks的pci<b class='flag-5'>設備</b><b class='flag-5'>驅動程序</b><b class='flag-5'>開發</b>

    Windows WDM設備驅動程序開發指南

    書主要介紹Windows 98和Windows 2000新的驅動程序模型(WDM)。描述了WDM設備驅動程序的結構、功能和開發方法.
    發表于 12-12 15:31 ?0次下載
    Windows WDM<b class='flag-5'>設備</b><b class='flag-5'>驅動程序</b><b class='flag-5'>開發指南</b>

    Linux設備驅動程序的平臺驅動程序字符驅動程序介紹

    了解Linux設備驅動程序的基礎知識,重點介紹平臺驅動程序字符驅動程序。 提出了簡單的平臺驅動程序
    的頭像 發表于 11-27 06:32 ?4045次閱讀

    UM2298_STM32Cube BSP驅動程序開發指南

    UM2298_STM32Cube BSP驅動程序開發指南
    發表于 11-22 19:19 ?1次下載
    UM2298_STM32Cube BSP<b class='flag-5'>驅動程序</b><b class='flag-5'>開發指南</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>