Openwrt开发指南 第18章 驱动开发之字符设备应用程序

2023-07-02 09:19:48 来源:嵌入式大杂烩

开发环境:

主机:Ubuntu12.04


【资料图】

开发板:RT5350

Openwrt:Openwrt15.05

1 编写应用程序

在前面的章节中, 我们成功的写出了我们自己的驱动程序, 并且向应用程序提供了 open、read、write三个接口,那么接下来我们就来编写应用程序,调用这些接口。

#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;}

该应用程序很简单,就是在 main 函数里面依次调用了 open、read、write 三个函数接口。

2 写Makefile 文件

前面我们写出了应用程序,下来我们就要编译应用程序。首先创建一个RT5350_drv_test 目录,然后进入该目录,再创建一个 src 目录,在 src 目录下新建一个Makefile 文件,内容如下。

CC = gccCFLAGS = -WallOBJS = RT5350_drv_test.oall: 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

然后将前面写的应用程序RT5350_drv_test.c 复制到该目录下, 接着回到上一级目录,即 RT5350_drv_test 目录,再创建一个 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.mkPKG_NAME:=RT5350_drv_testPKG_RELEASE:=1PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)include $(INCLUDE_DIR)/package.mkdefine Package/RT5350_drv_testSECTION:=utilsCATEGORY:=UtilitiesTITLE:=Frame buffer device testing toolDEPENDS:=+libncursesendefdefine Build/Preparemkdir -p $(PKG_BUILD_DIR)$(CP) ./src/* $(PKG_BUILD_DIR)/endefdefine Build/ConfigureendefTARGET_LDFLAGS :=define Build/Compile$(MAKE) -C $(PKG_BUILD_DIR) \\CC="$(TARGET_CC)" \\CFLAGS="$(TARGET_CFLAGS) -Wall" \\LDFLAGS="$(TARGET_LDFLAGS)"endefdefine 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))

关于该 Makefile 的语法,在前面的章节中已经讲解过,不再赘述。

3 编译应用程序

将RT5350_drv_test 的整个文件传到OpenWrt系统源码的package 目录下,然后进入 OpenWrt 系统源码的顶层目录,执行 make menuconfig。

$ cd openwrt/

$ make menuconfig

在弹出的菜单选项中。

Utilities  --- >< * > RT5350_drv_test

图1

我们就能看到我们自己写的应用程序的选项 RT5350_drv_test,将该选项配置进系统,即选为*。接下来,退出保存,并重新编译系统。

$make V=99

编译完成以后,新生成的固件里面,就已经包含了我们的应用程序了。

18.4 测试

然后将前面编译出来的驱动模块软件包也传入到开发板。接下来就开始测试。

1). 安装驱动程序

opkg install kmod-RT5350_drv_3.18.109-1_ramips_24kec.ipkcd lib/modules/3.18.109/insmod RT5350_drv.ko

2). 运行测试程序

cd /RT5350_drv_test

3). 卸载驱动

rmmod RT5350_drv

当运行测试程序的时候,我们就能看到驱动中 open、read、write 函数中的调试信息。从而说明应用程序成功的调用了驱动的相应的函数。审核编辑:汤梓红

关键词:

推荐内容