0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式大杂烩 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2023-07-02 09:21 次阅读

开发环境:

主机: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 = 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

然后将前面写的应用程序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.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))

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

3 编译应用程序

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

$ cd openwrt/

$ make menuconfig

在弹出的菜单选项中。

Utilities  --- >
< * > RT5350_drv_test

1688223355239eoiwlcb66l

图1

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

$make V=99

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

18.4 测试

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

1). 安装驱动程序

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). 卸载驱动

rmmod RT5350_drv

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动程序
    +关注

    关注

    19

    文章

    770

    浏览量

    47247
  • 开发板
    +关注

    关注

    25

    文章

    4437

    浏览量

    94085
  • Ubuntu
    +关注

    关注

    5

    文章

    534

    浏览量

    28848
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56418
  • OpenWrt
    +关注

    关注

    10

    文章

    117

    浏览量

    38880
收藏 人收藏

    评论

    相关推荐

    Openwrt开发指南 第25章 配置OpenWrt支持网络摄像头

    Openwrt开发指南 第25章 配置OpenWrt支持网络摄像头
    的头像 发表于 07-13 08:56 1598次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第25章 配置<b class='flag-5'>OpenWrt</b>支持网络摄像头

    i.MX6ULL驱动开发1—字符设备开发模板

    本篇介绍了嵌入式Linux驱动开发中的基础驱动——字符驱动开发的基本模式,使用了一个虚拟的
    的头像 发表于 03-17 09:13 3025次阅读
    i.MX6ULL<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>1—<b class='flag-5'>字符</b><b class='flag-5'>设备</b><b class='flag-5'>开发</b>模板

    Openwrt开发指南 第2章 OpenWrt开发环境搭建

    ,并烧写到设备中;另外,嵌入式设备的资源并不足以用来开发软件。所以需要用到交叉开发模式:在主机上编辑、编译软件,然后在目标板上运行、验证程序
    的头像 发表于 06-27 09:09 4536次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第2章 <b class='flag-5'>OpenWrt</b><b class='flag-5'>开发</b>环境搭建

    Openwrt开发指南 第4章 烧写OpenWrt固件

    对于一个完整的嵌入式系统,它由U-boot、内核(Linux)、文件系统、应用程序四部分组成。那么这四部分之间的关系是怎么样的呢?OpenWrt是属于哪部分呢?
    的头像 发表于 06-27 09:11 3540次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第4章 烧写<b class='flag-5'>OpenWrt</b>固件

    Openwrt开发指南 第15章 驱动开发字符设备驱动程序之概念介绍

    从上到下,一个软件系统可以分为:应用程序、库、操作系统(内核)、驱动程序开发人员可以专注于自己熟悉的部分,对于相邻层,只需要了解它的接口,无需关注它的实现细节。
    的头像 发表于 06-30 09:00 2180次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第15章 <b class='flag-5'>驱动</b><b class='flag-5'>开发</b>之<b class='flag-5'>字符</b><b class='flag-5'>设备</b><b class='flag-5'>驱动程序</b>之概念介绍

    Openwrt开发指南 第20章 驱动开发之LED应用程序

    在前面的章节中, 我们成功的写出了我们自己的驱动程序, 并且向应用程序提供了 open、ioctl 两个接口,那么接下来我们就来编写应用程序,调用这些接口。
    的头像 发表于 07-03 09:02 2137次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第20章 <b class='flag-5'>驱动</b><b class='flag-5'>开发</b>之LED<b class='flag-5'>应用程序</b>

    Openwrt开发指南 第24章 配置开发板支持U盘

    Openwrt开发指南 第24章 配置开发板支持U盘
    的头像 发表于 07-13 08:55 1384次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第24章 配置<b class='flag-5'>开发</b>板支持U盘

    AVR单片机应用开发指南及实例

    图书简介及目录:《AVR单片机应用开发指南及实例精解》结构清晰,由浅入深,通俗易懂,结合ATmega128单片机阐述AVR单片机的理论和工程应用。《AVR单片机应用开发指南及实例精解》共分9,主要
    发表于 07-28 10:28

    Labview开发技术丛书--大型应用程序与多人开发指南

    Labview开发技术丛书--大型应用程序与多人开发指南
    发表于 09-02 18:07

    【下载】《USB开发大全》—USB软硬件开发指南,无可替代的工具书

    主机的通信方式9设备匹配驱动程序10 设备
    发表于 06-15 18:35

    【正点原子FPGA连载】第二十一章字符设备驱动开发-领航者ZYNQlinux开发指南

    应用程序调用的是unlocked_ioctl。1704行,mmap函数用于将设备的内存映射到进程空间中(也就是用户空间),一般帧缓冲设备会使用此函数,比如LCD
    发表于 09-15 15:52

    已结束-【书籍评测活动NO.4】RT-Thread官方撰写,涵盖26种设备驱动开发指南

    本期书籍评测名单如下:大菠萝Alpha 《RT-Thread设备驱动开发指南》学习UART设备驱动
    发表于 02-22 15:30

    Mali GPU OpenGL ES应用程序开发指南

    这是适用于马里GPU的OpenGL ES应用程序开发指南。 它提供了使用OpenGL ES 1.1和OpenGL ES 2.0 API为马里GPU开发应用程序
    发表于 08-30 07:57

    MATLAB Runtime Server 应用程序开发指南

    MATLAB Runtime Server 应用程序开发指南:The MATLAB Runtime Server is a variant of MATLAB®
    发表于 02-21 08:40 40次下载

    A64开发板LCD开发指南

    A64开发板LCD开发指南驱动开发指南
    发表于 06-21 17:02 0次下载