開發(fā)環(huán)境:
主機:Ubuntu12.04
開發(fā)板:RT5350
Openwrt:Openwrt15.05
1 編寫應(yīng)用程序
在前面的章節(jié)中, 我們成功的寫出了我們自己的驅(qū)動程序, 并且向應(yīng)用程序提供了 open、read、write 三個接口,那么接下來我們就來編寫應(yīng)用程序,調(diào)用這些接口。
#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;
}
該應(yīng)用程序很簡單,就是在 main 函數(shù)里面依次調(diào)用了 open、read、write 三個函數(shù)接口。
2 寫Makefile 文件
前面我們寫出了應(yīng)用程序,下來我們就要編譯應(yīng)用程序。首先創(chuàng)建一個RT5350_drv_test 目錄,然后進入該目錄,再創(chuàng)建一個 src 目錄,在 src 目錄下新建一個Makefile 文件,內(nèi)容如下。
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
然后將前面寫的應(yīng)用程序RT5350_drv_test.c 復(fù)制到該目錄下, 接著回到上一級目錄,即 RT5350_drv_test 目錄,再創(chuàng)建一個 Makefile 文件,內(nèi)容如下。
#
#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 的語法,在前面的章節(jié)中已經(jīng)講解過,不再贅述。
3 編譯應(yīng)用程序
將RT5350_drv_test 的整個文件傳到OpenWrt系統(tǒng)源碼的package 目錄下,然后進入 OpenWrt 系統(tǒng)源碼的頂層目錄,執(zhí)行 make menuconfig。
$ cd openwrt/
$ make menuconfig
在彈出的菜單選項中。
Utilities --- >
< * > RT5350_drv_test
圖1
我們就能看到我們自己寫的應(yīng)用程序的選項 RT5350_drv_test,將該選項配置進系統(tǒng),即選為*。接下來,退出保存,并重新編譯系統(tǒng)。
$make V=99
編譯完成以后,新生成的固件里面,就已經(jīng)包含了我們的應(yīng)用程序了。
18.4 測試
然后將前面編譯出來的驅(qū)動模塊軟件包也傳入到開發(fā)板。接下來就開始測試。
1). 安裝驅(qū)動程序
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). 卸載驅(qū)動
rmmod RT5350_drv
當(dāng)運行測試程序的時候,我們就能看到驅(qū)動中 open、read、write 函數(shù)中的調(diào)試信息。從而說明應(yīng)用程序成功的調(diào)用了驅(qū)動的相應(yīng)的函數(shù)。
審核編輯:湯梓紅
-
驅(qū)動程序
+關(guān)注
關(guān)注
19文章
872瀏覽量
50719 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6409瀏覽量
120591 -
Ubuntu
+關(guān)注
關(guān)注
5文章
616瀏覽量
33644 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3346瀏覽量
60412 -
OpenWrt
+關(guān)注
關(guān)注
10文章
136瀏覽量
41409
發(fā)布評論請先 登錄
Openwrt開發(fā)指南 第16章 驅(qū)動開發(fā)之字符設(shè)備驅(qū)動程序框架
Openwrt開發(fā)指南 第2章 OpenWrt開發(fā)環(huán)境搭建
Openwrt開發(fā)指南 第3章 OpenWrt下載及配置
Openwrt開發(fā)指南 第13章 OpenWrt啟動流程
Openwrt開發(fā)指南 第15章 驅(qū)動開發(fā)之字符設(shè)備驅(qū)動程序之概念介紹
Openwrt開發(fā)指南 第17章 驅(qū)動開發(fā)之字符設(shè)備驅(qū)動程序
Openwrt開發(fā)指南 第20章 驅(qū)動開發(fā)之LED應(yīng)用程序
Openwrt開發(fā)指南 第22章 Openwrt串口的使用2
Mali GPU OpenGL ES應(yīng)用程序開發(fā)指南
Linux設(shè)備驅(qū)動開發(fā)之字符設(shè)備驅(qū)動編程分析
《Linux設(shè)備驅(qū)動開發(fā)詳解》第18章、LCD設(shè)備驅(qū)動
《Linux設(shè)備驅(qū)動開發(fā)詳解》第6章、字符設(shè)備驅(qū)動
Openwrt開發(fā)指南 第18章 驅(qū)動開發(fā)之字符設(shè)備應(yīng)用程序
評論