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

简介: 扩展知识点---驱动中对应的测试用的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!\r\n");
        return -1;
}
filename = argv[1];

//打开led驱动

fd = open(filename,O_RDWR);
if(fd < 0){
        printf("file %s open failed!\r\n");
       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 <linux/types.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/init.h>
 #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;

/* newchrled 设备结构体 */

struct newchrled_dev{
dev_t devid; /* 设备号 */
struct cdev cdev; /* cdev */
struct class *class; /* 类 */
 struct device *device; /* 设备 */
int major; /* 主设备号 */
int minor; /* 次设备号 */
};
struct newchrled_dev newchrled; /* led 设备 */

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

目录
相关文章
|
2月前
|
JavaScript 前端开发 API
Google Earth Engine(GEE)扩展——制作的GEE app的误区
Google Earth Engine(GEE)扩展——制作的GEE app的误区
30 0
|
2月前
|
SQL 安全 测试技术
Web应用程序安全测试
Web应用程序安全测试
|
2月前
|
安全 开发工具 数据安全/隐私保护
如何将应用程序发布到 App Store
如何将应用程序发布到 App Store
|
7天前
|
XML 数据格式 Python
App测试中,强制等待和隐式等待谁更强?
本文介绍了在自动化脚本中添加等待以确保与应用程序同步的重要性。由于应用响应时间的不确定性,适当等待能防止脚本在操作未完成前继续执行,提高测试稳定性。等待包括强制等待(如`time.sleep()`)、隐式等待(全局设置查找元素的等待时间)和显式等待(根据预期条件等待)。示例代码展示了如何在Python的Appium测试中应用这些等待策略,以优化脚本的可靠性和与应用的同步。
21 0
|
29天前
|
XML 测试技术 数据格式
解决 App 自动化测试的常见痛点
在App自动化测试中,常见挑战包括启动加载慢和弹框干扰。为处理弹框,可以创建一个黑名单列表,遍历并点击消除。使用`handleAlertByPageSource()`方法结合`getPageSource()`判断弹框元素在当前页面的存在性,提高效率。对于首页加载延迟,使用显示等待特定元素如`user_profile_container`,但需注意弹框可能阻止元素定位。因此,结合PageSource判断首页元素和弹框,确保加载完成判断的准确性。通过这样的优化,能更有效地处理自动化测试中的中断问题。
19 1
|
1月前
|
监控 安全 Shell
深入探究App压力测试的关键要点:从零开始学习Monkey
Monkey是Google的自动化测试工具,用于模拟用户随机事件以测试应用的稳定性和压力。它可以在模拟器或设备上运行,通过随机点击发现潜在问题。
25 1
|
1月前
|
测试技术 Android开发
快速上手App自动化测试利器,Toast原理解析及操作实例
`Toast`是Android中的轻量级通知,短暂显示在屏幕任意位置,1-2秒后自动消失,不获取焦点且不可点击。Appium通过uiautomator2在控件树中处理Toast。在测试中,可设置隐式等待,利用XPath或Accessibility ID定位Toast元素进行检测和验证。示例代码展示了如何初始化driver,点击触发Toast,以及如何定位并读取Toast文本。
24 3
|
1月前
|
算法 测试技术 开发者
软件质量保证与测试知识点总结
【2月更文挑战第21天】软件质量保证与测试知识点总结
70 0
|
1月前
|
Web App开发 前端开发 测试技术
Web应用程序测试工具Selenium用法详解
Web应用程序测试工具Selenium用法详解
37 0
|
2月前
|
人工智能 安全
外汇MT5/MT4交易所平台系统开发测试版/案例设计/策略步骤/功能需求/源码程序
When developing the MT5/MT4 foreign exchange documentary trading system, the following functions and intelligence can also be considered: