久久久久亚洲精品中文玫瑰,免费av搞逼搞逼搞嫩逼,亚洲国产精品v在线播放,丝袜秘书20p

投資中國(guó)
您的位置:首頁(yè) >寬帶 > 正文

Openwrt開發(fā)指南 第17章 驅(qū)動(dòng)開發(fā)之字符設(shè)備驅(qū)動(dòng)程序|焦點(diǎn)日?qǐng)?bào)

來(lái)源:嵌入式大雜燴 時(shí)間:2023-07-02 09:32:58

開發(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)核。

圖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.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 文件中每行是什么意思,請(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)模塊軟件包了。接下來(lái)就來(lái)使用它。首先將 kmod-RT5350_drv_3.18.109-1_ramips_24kec.ipk軟件包傳到開發(fā)板上面。

然后使用 opkg install 命令來(lái)安裝軟件包。

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

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

cd lib/modules/3.18.109/

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

insmod RT5350_drv.ko

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

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

rmmod RT5350_drv

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

這條打印,是在我們的驅(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

說(shuō)明: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審核編輯:湯梓紅

標(biāo)簽:

相關(guān)閱讀


犍为县| 健康| 阿坝县| 独山县| 济阳县| 四子王旗| 健康| 兴安县| 呼玛县| 遂溪县| 崇信县| 体育| 开鲁县| 苏州市| 大荔县| 井研县| 阳山县| 绩溪县| 株洲市| 京山县| 根河市| 天气| 鹤庆县| 砀山县| 北票市| 盐池县| 罗定市| 江山市| 石阡县| 湖口县| 拜城县| 武邑县| 香格里拉县| 盐源县| 阳高县| 镇雄县| 正镶白旗| 卢氏县| 通江县| 行唐县| 宿松县|