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

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

3天內不再提示

Openwrt開(kāi)發(fā)指南 第18章 驅動(dòng)開(kāi)發(fā)之字符設備應用程序

嵌入式大雜燴 ? 來(lái)源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-07-02 09:21 ? 次閱讀

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

主機:Ubuntu12.04

開(kāi)發(fā)板:RT5350

Openwrt:Openwrt15.05

1 編寫(xiě)應用程序

在前面的章節中, 我們成功的寫(xiě)出了我們自己的驅動(dòng)程序, 并且向應用程序提供了 open、read、write 三個(gè)接口,那么接下來(lái)我們就來(lái)編寫(xiě)應用程序,調用這些接口。

#include < sys/types.h >
#include < sys/stat.h >
#include < fcntl.h >
#include < stdio.h >
int main(int argc, char **argv)
{
int fd;
char val;
fd = open("/dev/RT5350", O_RDWR);
if (fd < 0)
{
printf("Can't open /dev/RT5350\\n");
}
read(fd, &val, 1);
write(fd, &val, 1);
return 0;
}

該應用程序很簡(jiǎn)單,就是在 main 函數里面依次調用了 open、read、write 三個(gè)函數接口。

2 寫(xiě)Makefile 文件

前面我們寫(xiě)出了應用程序,下來(lái)我們就要編譯應用程序。首先創(chuàng )建一個(gè)RT5350_drv_test 目錄,然后進(jìn)入該目錄,再創(chuàng )建一個(gè) src 目錄,在 src 目錄下新建一個(gè)Makefile 文件,內容如下。

CC = gcc
CFLAGS = -Wall
OBJS = RT5350_drv_test.o
all: RT5350_drv_test
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $  $(LDFLAGS)
fbtest: $(OBJS)
$(CC) -o $@ $(OBJS) $(LDFLAGS)
clean:
rm -f rbcfg *.o

CC = gcc

CFLAGS = -Wall

OBJS = RT5350_drv_test.o

all: RT5350_drv_test

%.o: %.c

**(CC) **(CFLAGS) -c -o **@ **< $(LDFLAGS)

fbtest: $(OBJS)

**(CC) -o **@ **(OBJS) **(LDFLAGS)

clean:

rm -f rbcfg *.o

然后將前面寫(xiě)的應用程序RT5350_drv_test.c 復制到該目錄下, 接著(zhù)回到上一級目錄,即 RT5350_drv_test 目錄,再創(chuàng )建一個(gè) Makefile 文件,內容如下。

#
#Copyright (C) 2019 OpenWrt.org
# 
#This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=RT5350_drv_test
PKG_RELEASE:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/RT5350_drv_test
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Frame buffer device testing tool
DEPENDS:=+libncurses
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define Build/Configure
endef
TARGET_LDFLAGS :=
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \\
CC="$(TARGET_CC)" \\
CFLAGS="$(TARGET_CFLAGS) -Wall" \\
LDFLAGS="$(TARGET_LDFLAGS)"
endef
define Package/RT5350_drv_test/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/RT5350_drv_test $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,RT5350_drv_test))

關(guān)于該 Makefile 的語(yǔ)法,在前面的章節中已經(jīng)講解過(guò),不再贅述。

3 編譯應用程序

將RT5350_drv_test 的整個(gè)文件傳到OpenWrt系統源碼的package 目錄下,然后進(jìn)入 OpenWrt 系統源碼的頂層目錄,執行 make menuconfig。

$ cd openwrt/

$ make menuconfig

在彈出的菜單選項中。

Utilities  --- >
< * > RT5350_drv_test

1688223355239eoiwlcb66l

圖1

我們就能看到我們自己寫(xiě)的應用程序的選項 RT5350_drv_test,將該選項配置進(jìn)系統,即選為*。接下來(lái),退出保存,并重新編譯系統。

$make V=99

編譯完成以后,新生成的固件里面,就已經(jīng)包含了我們的應用程序了。

18.4 測試

然后將前面編譯出來(lái)的驅動(dòng)模塊軟件包也傳入到開(kāi)發(fā)板。接下來(lái)就開(kāi)始測試。

1). 安裝驅動(dòng)程序

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

cd lib/modules/3.18.109/

insmod RT5350_drv.ko

2). 運行測試程序

cd /

RT5350_drv_test

3). 卸載驅動(dòng)

rmmod RT5350_drv

當運行測試程序的時(shí)候,我們就能看到驅動(dòng)中 open、read、write 函數中的調試信息。從而說(shuō)明應用程序成功的調用了驅動(dòng)的相應的函數。

審核編輯:湯梓紅

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

    關(guān)注

    19

    文章

    777

    瀏覽量

    47427
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4579

    瀏覽量

    94984
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    538

    瀏覽量

    29038
  • 應用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3168

    瀏覽量

    56967
  • OpenWrt
    +關(guān)注

    關(guān)注

    10

    文章

    120

    瀏覽量

    38988
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    i.MX6ULL驅動(dòng)開(kāi)發(fā)1—字符設備開(kāi)發(fā)模板

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

    Openwrt開(kāi)發(fā)指南 第2章 OpenWrt開(kāi)發(fā)環(huán)境搭建

    ,并燒寫(xiě)到設備中;另外,嵌入式設備的資源并不足以用來(lái)開(kāi)發(fā)軟件。所以需要用到交叉開(kāi)發(fā)模式:在主機上編輯、編譯軟件,然后在目標板上運行、驗證程序
    的頭像 發(fā)表于 06-27 09:09 ?5022次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開(kāi)發(fā)指南</b> 第2章 <b class='flag-5'>OpenWrt</b><b class='flag-5'>開(kāi)發(fā)</b>環(huán)境搭建

    Openwrt開(kāi)發(fā)指南 第4章 燒寫(xiě)OpenWrt固件

    對于一個(gè)完整的嵌入式系統,它由U-boot、內核(Linux)、文件系統、應用程序四部分組成。那么這四部分之間的關(guān)系是怎么樣的呢?OpenWrt是屬于哪部分呢?
    的頭像 發(fā)表于 06-27 09:11 ?3895次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開(kāi)發(fā)指南</b> 第4章 燒寫(xiě)<b class='flag-5'>OpenWrt</b>固件

    Openwrt開(kāi)發(fā)指南 第15章 驅動(dòng)開(kāi)發(fā)字符設備驅動(dòng)程序之概念介紹

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

    Openwrt開(kāi)發(fā)指南 第20章 驅動(dòng)開(kāi)發(fā)之LED應用程序

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

    Openwrt開(kāi)發(fā)指南 第24章 配置開(kāi)發(fā)板支持U盤(pán)

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

    AVR單片機應用開(kāi)發(fā)指南及實(shí)例

    圖書(shū)簡(jiǎn)介及目錄:《AVR單片機應用開(kāi)發(fā)指南及實(shí)例精解》結構清晰,由淺入深,通俗易懂,結合ATmega128單片機闡述AVR單片機的理論和工程應用?!禔VR單片機應用開(kāi)發(fā)指南及實(shí)例精解》共分9,主要
    發(fā)表于 07-28 10:28

    Labview開(kāi)發(fā)技術(shù)叢書(shū)--大型應用程序與多人開(kāi)發(fā)指南

    Labview開(kāi)發(fā)技術(shù)叢書(shū)--大型應用程序與多人開(kāi)發(fā)指南
    發(fā)表于 09-02 18:07

    【下載】《USB開(kāi)發(fā)大全》—USB軟硬件開(kāi)發(fā)指南,無(wú)可替代的工具書(shū)

    主機的通信方式9設備匹配驅動(dòng)程序10 設備
    發(fā)表于 06-15 18:35

    【正點(diǎn)原子FPGA連載】第二十一章字符設備驅動(dòng)開(kāi)發(fā)-領(lǐng)航者ZYNQlinux開(kāi)發(fā)指南

    應用程序調用的是unlocked_ioctl。1704行,mmap函數用于將設備的內存映射到進(jìn)程空間中(也就是用戶(hù)空間),一般幀緩沖設備會(huì )使用此函數,比如LCD
    發(fā)表于 09-15 15:52

    已結束-【書(shū)籍評測活動(dòng)NO.4】RT-Thread官方撰寫(xiě),涵蓋26種設備驅動(dòng)開(kāi)發(fā)指南

    本期書(shū)籍評測名單如下:大菠蘿Alpha 《RT-Thread設備驅動(dòng)開(kāi)發(fā)指南》學(xué)習UART設備驅動(dòng)
    發(fā)表于 02-22 15:30

    Mali GPU OpenGL ES應用程序開(kāi)發(fā)指南

    這是適用于馬里GPU的OpenGL ES應用程序開(kāi)發(fā)指南。 它提供了使用OpenGL ES 1.1和OpenGL ES 2.0 API為馬里GPU開(kāi)發(fā)應用程序
    發(fā)表于 08-30 07:57

    MATLAB Runtime Server 應用程序開(kāi)發(fā)指南

    MATLAB Runtime Server 應用程序開(kāi)發(fā)指南:The MATLAB Runtime Server is a variant of MATLAB®
    發(fā)表于 02-21 08:40 ?40次下載

    A64開(kāi)發(fā)板LCD開(kāi)發(fā)指南

    A64開(kāi)發(fā)板LCD開(kāi)發(fā)指南,驅動(dòng)開(kāi)發(fā)指南
    發(fā)表于 06-21 17:02 ?0次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看