RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Openwrt開發(fā)指南 第17章 驅(qū)動(dòng)開發(fā)之字符設(shè)備驅(qū)動(dòng)程序

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

開發(fā)環(huán)境:

主機(jī):Ubuntu12.04

開發(fā)板:RT5350

Openwrt:Openwrt15.05

1 配置編譯驅(qū)動(dòng)程序

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

注意:至于RT5350_drv的內(nèi)容,建議初學(xué)者按照步驟做就是了,不必追問細(xì)節(jié),初學(xué)者應(yīng)該知道openwrt驅(qū)動(dòng)開發(fā)流程,代碼的具體實(shí)現(xiàn)筆者在后文也會(huì)講到,跟著筆者一步一步做就是了。

$ cd openwrt/

$ make menuconfig

在彈出的菜單界面里,配置選項(xiàng)。

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

然后我們就能看到我們的驅(qū)動(dòng)程序的選項(xiàng)了 kmod-RT5350_drv,將它配置成M,也可編譯進(jìn)入內(nèi)核。

1688223181226dultyxkrju

圖1

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

make V=99

編譯完成以后,就能在源碼/bin/ramips/packages/base目錄下看到我們的內(nèi)核模塊驅(qū)動(dòng)程序的軟件包。

kmod-RT5350_drv_3.18.109-1_ramips_24kec.ipk

2 字符設(shè)備驅(qū)動(dòng)軟件包 Makefile 介紹

首先進(jìn)入到RT5350_drv 文件夾,里面有兩個(gè)文件。Makefile內(nèi)容如下。

#
# 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 文件中每行是什么意思,請(qǐng)查閱上一章,這里不再贅述。進(jìn)入到 src 文件夾中;我們看一下 Makefile 的內(nèi)容,非常簡(jiǎn)單:

obj-m +=RT5350_drv.o

告訴內(nèi)核添加的模塊目標(biāo)文件名稱為RT5350_drv.o,至于RT5350_drv.c 這一個(gè)驅(qū)動(dòng)模板,在上一章介紹過了,這里就不加以闡述了。

3 動(dòng)態(tài)的加載和卸載內(nèi)核驅(qū)動(dòng)模塊軟件包

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

1688223182014qr7vk4ud8h

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

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

1688223182346mlfokkqlxi

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

cd lib/modules/3.18.109/

16882231826216l6flkumvm

接下來就通過 insmod 命令來裝載驅(qū)動(dòng)模塊。

insmod RT5350_drv.ko

當(dāng)我們一執(zhí)行該命令,串口終端上面就會(huì)打印出。

1688223182903d4xk8ahm3e

這行打印信息,正是我們?cè)隍?qū)動(dòng)程序的入口函數(shù)中添加的調(diào)試信息。如果我們想卸載驅(qū)動(dòng)模塊,則使用 rmmod 命令。

rmmod RT5350_drv

當(dāng)執(zhí)行完這條命令后,就成功的卸載了該驅(qū)動(dòng)程序。我們也能看到如下打印。

1688223183173btdvzl4o3d

這條打印,是在我們的驅(qū)動(dòng)的出口函數(shù)中添加的調(diào)試信息

4 驅(qū)動(dòng)開機(jī)自動(dòng)加載

雖然我們通過 opkg insall 得到了.ko 為后綴的驅(qū)動(dòng)模塊,但是每次要使用都得進(jìn)行insmod,比較麻煩,我們可以讓系統(tǒng)開機(jī)后自動(dòng)的加載該驅(qū)動(dòng)模塊。

首先進(jìn)入到特定的目錄:

$cd /etc/modules.d

然后創(chuàng)建一個(gè)文件并且寫入一些信息:

vi 61-RT5350_drv

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

好的,重新啟動(dòng)系統(tǒng)即可:reboot

可以通過命令查詢當(dāng)前已經(jīng)加載的驅(qū)動(dòng)模塊:lsmod
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)程序
    +關(guān)注

    關(guān)注

    19

    文章

    831

    瀏覽量

    48022
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    563

    瀏覽量

    29702
  • 驅(qū)動(dòng)開發(fā)

    關(guān)注

    0

    文章

    130

    瀏覽量

    12072
  • OpenWrt
    +關(guān)注

    關(guān)注

    10

    文章

    130

    瀏覽量

    39296
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Openwrt開發(fā)指南 16 驅(qū)動(dòng)開發(fā)字符設(shè)備驅(qū)動(dòng)程序框架

    我們?cè)趯W(xué)習(xí) C 語言的時(shí)候,知道每個(gè)應(yīng)用程序的入口函數(shù),即第一個(gè)被執(zhí)行的函數(shù)是 main函數(shù),那么,我們自己的驅(qū)動(dòng)程序,哪個(gè)函數(shù)是入口函數(shù)呢?
    的頭像 發(fā)表于 06-30 09:01 ?3427次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>16<b class='flag-5'>章</b> <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>之</b><b class='flag-5'>字符</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)程序</b>框架

    Openwrt開發(fā)指南 25 配置OpenWrt支持網(wǎng)絡(luò)攝像頭

    Openwrt開發(fā)指南 25 配置OpenWrt支持網(wǎng)絡(luò)攝像頭
    的頭像 發(fā)表于 07-13 08:56 ?2402次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>25<b class='flag-5'>章</b> 配置<b class='flag-5'>OpenWrt</b>支持網(wǎng)絡(luò)攝像頭

    Openwrt開發(fā)指南 15 驅(qū)動(dòng)開發(fā)字符設(shè)備驅(qū)動(dòng)程序概念介紹

    從上到下,一個(gè)軟件系統(tǒng)可以分為:應(yīng)用程序、庫、操作系統(tǒng)(內(nèi)核)、驅(qū)動(dòng)程序。開發(fā)人員可以專注于自己熟悉的部分,對(duì)于相鄰層,只需要了解它的接口,無需關(guān)注它的實(shí)現(xiàn)細(xì)節(jié)。
    的頭像 發(fā)表于 06-30 09:00 ?2762次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>15<b class='flag-5'>章</b> <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>之</b><b class='flag-5'>字符</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)程序</b><b class='flag-5'>之</b>概念介紹

    Openwrt開發(fā)指南 18 驅(qū)動(dòng)開發(fā)字符設(shè)備應(yīng)用程序

    在前面的章節(jié)中, 我們成功的寫出了我們自己的驅(qū)動(dòng)程序, 并且向應(yīng)用程序提供了 open、read、write 三個(gè)接口,那么接下來我們就來編寫應(yīng)用程序,調(diào)用這些接口。
    的頭像 發(fā)表于 07-02 09:21 ?2559次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>18<b class='flag-5'>章</b> <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>之</b><b class='flag-5'>字符</b><b class='flag-5'>設(shè)備</b>應(yīng)用<b class='flag-5'>程序</b>

    Openwrt開發(fā)指南 20 驅(qū)動(dòng)開發(fā)LED應(yīng)用程序

    在前面的章節(jié)中, 我們成功的寫出了我們自己的驅(qū)動(dòng)程序, 并且向應(yīng)用程序提供了 open、ioctl 兩個(gè)接口,那么接下來我們就來編寫應(yīng)用程序,調(diào)用這些接口。
    的頭像 發(fā)表于 07-03 09:02 ?2659次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>20<b class='flag-5'>章</b> <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>之</b>LED應(yīng)用<b class='flag-5'>程序</b>

    Openwrt開發(fā)指南 22 Openwrt串口的使用2

    在上一中,我們成功的讓驅(qū)動(dòng)程序支持了串口 2,并且做了簡(jiǎn)單的測(cè)試。接下來,我們就為串口 2 添加一個(gè)應(yīng)用程序,從而實(shí)現(xiàn) Wi-Fi 串口。實(shí)現(xiàn)過程非常簡(jiǎn)單,首先進(jìn)入 OpenWrt
    的頭像 發(fā)表于 07-05 09:09 ?4088次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>22<b class='flag-5'>章</b> <b class='flag-5'>Openwrt</b>串口的使用2

    Openwrt開發(fā)指南 24 配置開發(fā)板支持U盤

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

    CE驅(qū)動(dòng)程序開發(fā)指南資料分享

    CE驅(qū)動(dòng)程序開發(fā)指南資料分享
    發(fā)表于 08-03 12:03

    WINCE驅(qū)動(dòng)程序開發(fā)指南

    CE驅(qū)動(dòng)程序所有驅(qū)動(dòng)皆為動(dòng)態(tài)鏈接庫驅(qū)動(dòng)實(shí)現(xiàn)中可以調(diào)用所有標(biāo)準(zhǔn)的APICE驅(qū)動(dòng)程序模型本機(jī)驅(qū)動(dòng)程序流接口驅(qū)
    發(fā)表于 07-07 15:06 ?41次下載

    PCI設(shè)備WINDOWS驅(qū)動(dòng)程序開發(fā)

    PCI設(shè)備WINDOWS驅(qū)動(dòng)程序開發(fā) 本文主要介紹了在Windows9x操作系統(tǒng)下開發(fā)PCI設(shè)備驅(qū)動(dòng)
    發(fā)表于 05-03 11:54 ?3321次閱讀

    Windows WDM設(shè)備驅(qū)動(dòng)程序開發(fā)指南

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

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》17、Linux音頻設(shè)備驅(qū)動(dòng)

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》17、Linux音頻設(shè)備
    發(fā)表于 10-27 11:14 ?17次下載
    《Linux<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>詳解》<b class='flag-5'>第</b><b class='flag-5'>17</b><b class='flag-5'>章</b>、Linux音頻<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b>

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》6字符設(shè)備驅(qū)動(dòng)

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》6、字符設(shè)備
    發(fā)表于 10-27 11:46 ?23次下載
    《Linux<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>詳解》<b class='flag-5'>第</b>6<b class='flag-5'>章</b>、<b class='flag-5'>字符</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b>

    Linux設(shè)備驅(qū)動(dòng)程序的平臺(tái)驅(qū)動(dòng)程序字符驅(qū)動(dòng)程序介紹

    了解Linux設(shè)備驅(qū)動(dòng)程序的基礎(chǔ)知識(shí),重點(diǎn)介紹平臺(tái)驅(qū)動(dòng)程序字符驅(qū)動(dòng)程序。 提出了簡(jiǎn)單的平臺(tái)驅(qū)動(dòng)程序
    的頭像 發(fā)表于 11-27 06:32 ?4296次閱讀

    UM2298_STM32Cube BSP驅(qū)動(dòng)程序開發(fā)指南

    UM2298_STM32Cube BSP驅(qū)動(dòng)程序開發(fā)指南
    發(fā)表于 11-22 19:19 ?1次下載
    UM2298_STM32Cube BSP<b class='flag-5'>驅(qū)動(dòng)程序</b><b class='flag-5'>開發(fā)指南</b>
    RM新时代网站-首页