迅为4412开发板编写简单应用调用驱动
来源:互联网 发布:oa数据库 编辑:程序博客网 时间:2024/06/10 07:44
本文转自迅为4412精英版群:
本期实验比较简单,就是写一个简单的应用程序调用前面写的驱动。
硬件工具
1)iTOP4412 开发板
2)U 盘或者 TF 卡
3)PC 机
4)串口
9.1.1.2软件工具
1)虚拟机 Vmware
2)Ubuntu12.04.2
3)超级终端(串口助手)
4)实验配套源码文件夹“invoke_hello”
视频资源
本节配套视频为“视频 09-编写简单应用调用驱动”
学习目标
本章需要学习以下内容:
学会调用设备节点
实验操作
本期实验很简单,在前面 Linux 应用中就已经学习过设备节点的调用。
需要用到函数 extern void printf(const char *format,...);定义在标准 C 语言头文件
stdio.h 中。
下面几个头文件在应用中一般一起调用。
头文件 #include <sys/types.h>包含基本系统数据类型。系统的基本数据类型在 32 编
译环境中保持为 32 位值,并会在 64 编译环境中增长为 64 位值。
头文件<sys/stat.h>包含系统调用文件的函数。可以调用普通文件、目录、管道、socket、
字符、块的属性。
<fcntl.h>定义了 open 函数
<unistd.h>定义了 close 函数
<sys/ioctl.h>定义了 ioctl 函数
另外提醒一下,这些头文件是和编译器在一起。
这里使用,如下图所示,进入目录“/usr/local/arm/arm-2009q3”。
使用查找命令“find ./ -name stat.h”,如下图所示,使用的头文件是目录
“/arm-none-linux-gnueabi/libc/usr/include/sys/stat.h”中的<sys/stat.h>.
其它几个头文件可以采用类似的方法查找,这里给大家提醒这一点,因为有时候拿到源码
之后,可能编译器版本和源码不完全对应,这个时候就有可能需要修改和处理一下头文件。不过这种问题一般都可以通过网络查找错误提示的方法一个一个解决。
如下图所示,是一个简单的调用程序。
新建“invoke_hello”文件夹,将上图的中的文件拷贝进入,进入新建的“invoke_hello”
目录,使用编译命令
“arm-none-linux-gnueabi-gcc -o invoke_hello invoke_hello.c -static”
编译,如下图所示。
将 “invoke_hello” 拷贝到 U 盘, 启动开发板, 加载前一期的 “devicenode_linux_module”
驱动,如下图所示,使用 invoke_hello 调用设备节点“/dev/hello_ctl123”。
先使用命令“mount /dev/sda1 /mnt/udisk/”加载 U 盘;
使用命令“insmod /mnt/udisk/devicenode_linux_module.ko”加载驱动;
使用命令“./mnt/udisk/invoke_hello”,运行 invoke_hello。
如上图所示,运行“invoke_hello”之后,会打印以下内容”
hello open
cmd is 1,arg is 6
hello release
如下图所示,设备节点 open、close、ioctl 分别对应打印信息
printk(KERN_EMERG "hello open\n");
printk(KERN_EMERG "hello release\n");
printk("cmd is %d,arg is %d\n",cmd,arg);ioctl 会打印第二个和第三个参数。
通过前面的分析,可以看到上层应用对设备节点 open、close、ioctl 分别对应驱动层的
open、release、unlocked_ioctl。
- 迅为4412开发板编写简单应用调用驱动
- 迅为4412开发板Linux驱动教程——编写简单应用调用驱动
- 简单的应用调用驱动
- 应用QQ2440(s3c2440)ARM开发板驱动MMA7455加速度计的linux设备驱动编写
- 应用QQ2440(s3c2440)ARM开发板驱动MMA7455加速度计的linux设备驱动编写
- 驱动开发第一步,入门,最简单的驱动代码编写
- AT91SAM9260开发板驱动编写
- 简单驱动编写
- 编写简单的驱动
- linux 简单驱动编写
- 【4412开发板使用经验分享】迅为4412开发板I2C驱动问题
- [迅为开发板资料分享]iTOP-4412开发板LCD的屏幕驱动
- 迅为4412开发板Linux驱动教程之内核开发基础
- ARM开发之linux字符型驱动的编写----LED驱动为例
- 5.LCD驱动调用方法以及按键函数编写—基于CT117E开发板的STM32库函数编程
- 应用调用驱动层
- 【转载】迅为4412开发板实验LEDS驱动一
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
- XX程序媛学习笔记--Cordova(PhoneGap)Android Native混合开发值传递
- codeforces 155C dp
- POJ 2992 Divisors (快速求阶乘的素因子)
- Input Director 键鼠共用软件(推荐)
- Android中使EditText失去焦点禁止弹出键盘
- 迅为4412开发板编写简单应用调用驱动
- OpenLayers访问本地瓦片地图
- Linux系统的关机、重启以及登出命令
- unity实例化预设
- javascript输出
- 国内软件测试中文书籍大全
- Oracle查询用户所有表
- Java分布式事务-转载
- java中,通过身份证号获取信息