栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

扩展知识点---驱动中对应的测试用的APP程序

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

扩展知识点---驱动中对应的测试用的APP程序

1、编写测试APP ,led驱动加载成功以后可以手动创建/dev/led节点,应用程序通过/dev/led文件来完成对LED设备的控制

例如:向/dev/led文件中写0 表示关闭LED灯,写1表示打开LED灯。

 #include "stdio.h"

#include "unistd.h"

#include "sys/types.h"

#include "sys/stat.h"

#include "fcntl.h"

#include "stdlib.h"

#include "string.h"

//LED测试用的APP

#define LEDOFF 0

#define LEDON 1

int main(int argc,char *argv[])

{

        int fd,retvalue;

        char *filename;

        unsigned  char databuf[1];

      if(argc != 3){

        printf("Error Usage!rn");

        return -1;

}

filename = argv[1];

//打开led驱动

fd = open(filename,O_RDWR);

if(fd < 0){

        printf("file %s open failed!rn");

       return -1;

}

databuf[0] = atoi(argv[2]);   //要执行的操作

//向/dev/led文件写入数据

retvalue = write(fd,databuf,sizeof(databuf));

if(retvalue <0)

{

close(fd);

return -1;

}

retvalue = close(fd);  //关闭文件

return 0;

}

应用代码和之前的系统编程代码实现功能是一样的。

简化新版的驱动代码的具体实现过程如下:

#include

#include

#include

#include

 #define NEWCHRLED_CNT 1

#define NEWCHRLED_NAME "newchrled"

#define LEDOFF 0

#define LEDON 1

#define CCM_CCGR1_base (0x020C406C)

#define SW_MUX_GPIO1_IO03_base (0x020E0068)

#define SW_PAD_GPIO1_IO03_base (0x020E02F4)

#define GPIO1_DR_base (0x0209C000)

#define GPIO1_GDIR_base (0x0209C004)

static void __iomem *CCM_CCGR1;

static void __iomem *SW_MUX_GPIO1_IO03;

static void __iomem *SW_PAD_GPIO1_IO03;

static void __iomem *GPIO1_DR;

static void __iomem *GPIO1_GDIR;

struct newchrled_dev{

dev_t devid;

struct cdev cdev;

struct class *class;

 struct device *device;

int major;

int minor;

};

struct newchrled_dev newchrled;

总的来说,驱动中核心的结构,来编写对应的驱动程序,重点是使用对应的驱动框架实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号