嵌入式系统007-编写应用调用驱动

目标:编写应用程序调用驱动-调用HELLO_CTL123设备节点

头文件

1.打印头文件
**include<stdio.h>**调用打印函数 printf
应用中调用文件需要的头文件
**#include<sys/types.h>**基本系统数据类型。系统的基本数据类型。系统的基本数据类型在32编译环境中保持为32位值,并会在64编译环境中增长为64位值。
**#include<sys/stat.h>**系统调用函数头文件。可以调用普通文件,目录,管道,socket字符,块的属性
**#include<fcntl.h>**定义了open函数
**#include<unistd.h>**定义了close函数
**#include<sys/ioctl.h>**定义了ioctl函数

编写应用调用驱动

一、调用函数
open函数是返回文件描述符
ioctl函数是应用向驱动传值
close函数是关闭打开的文件
二、编写应用程序的代码,编译
arm-none-linux-gnueabi-gcc -o iinvoke_hello invoke_hello.c -static
三、开发板中加载devicenode_linux_module驱动,运行应用
1.新建invoke_hello.c文件

root@ubuntu:/home/topeet/android4.0/Code/invoke_hello# vim invoke_hello.c
#include <stdio.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>

main(){
	int fd;
	char *hello_node = "/dev/hello_ctl123";
	
/*O_RDWR只读打开,O_NDELAY非阻塞方式*/	
	if((fd = open(hello_node,O_RDWR|O_NDELAY))<0){
		printf("APP open %s failed",hello_node);
	}
	else{
		printf("APP open %s success",hello_node);
		ioctl(fd,1,6);
	}
	
	close(fd);
}

2.执行编译

root@ubuntu:/home/topeet/android4.0/Code/invoke_hello# arm-none-linux-gnueabi-gcc -o invoke_hello invoke_hello.c -static

在这里插入图片描述
3.4412开发板执行

telnet 192.168.1.230
root
mount /dev/udisk /mnt/usb1
cp invoke_hello /
./invoke_hello

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值