热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

rs485串口调试软件,rpc接口测试工具

引言随着WLAN的广泛应用,越来越多的芯片厂商投入到WLAN芯片开发上。因此各种接口的WLAN芯片成为了各大厂商发展的主要方向。目前主流的接口有:USB,SDIO,UART,SPI


引言


随着WLAN的广泛应用,越来越多的芯片制造商投入到WLAN芯片开发中。 因此,各种接口的WLAN芯片成为各厂商发展的主要方向。 目前主流的接口有USB、SDIO、UART、SPI等。


本文设计了一种支持多接口、多协议的无线局域网802.11 n (1t1r ) SoC芯片。 该SoC芯片集成了SDIO、SPI、UART等接口。 要验证每个接口是否满足设计要求,必须测试每个接口的功能、性能和兼容性。 接口验证是指以接口为测试对象,详细测试接口的功能和性能。 在本文中,它是指UART接口和SPI接口。 UART接口需要验证端口的波特率、数据长度、奇偶校验、停止位、流控制、异常错误等。 对于SPI接口,需要验证接口的大小、操作模式、操作速度等。


1验证接口单元的必要性


1.1接口单元验证概述


如图1所示,是接口单元的验证的图像。 测试板有两个UART连接器和一个SPI连接器。 下位机完成固件部分,即直接操作硬件; 上位机完成测试用例管理和接口驱动两部分。


1.2为什么要对接口进行单元验证


)1)验证接口功能是否实现。 保证设备正确列举,各种配置下数据收发路径畅通。


)2)准确掌握各接口性能。 有了接口性能数据,它有助于在系统测试阶段确定问题。 在系统测试阶段,性能瓶颈同时来自接口和WiFi。 在接口验证阶段获取此数据有助于分析和确定问题。


)3)在平台兼容性测试中,平台兼容性主要涉及接口,而与WiFi无关,因此兼容性在系统测试阶段进行,无形中增加了定位问题的难度。


1.3传统接口验证的方法和缺陷


传统的验证方法是将上位机与下位机分离。 首先上位机修改参数,然后下位机修改参数,编译和运行固件,上位机与下位机进行通信。 上位机与下位机之间没有协议,直接进行通信。 以UART接口的功能验证为例说明接口验证方法的缺点。


UART的功能验证主要是能否在各种配置(波特率、数据长度、奇偶校验位和停止位的组合)中正确传输数据。 用这种测试方法,测试效率很低。 另一方面,由于主观因素的影响,用手动方法容易看漏测试用例。


综上所述,现有接口单元的验证方法的缺点是测试效率低; 容易看漏测试用例。


2界面验证工具的设计


2.1硬件体系结构


2.1.1 PC上的硬件配置


如图2所示,表示PC环境下的UART接口的验证硬件结构图。


其中PCI通过JTAG接口控制测试板,完成固件下载。 PC2和测试板通过UART接口连接,UART0接口是命令接口,主要传输PC2的命令和测试板对测试板的响应; UART1是一个数据接口,主要传输PC2和测试板之间的数据。


2.1.2嵌入式平台上的硬件配置


如图3所示,给出了嵌入式平台下UART接口和SPI接口的验证硬件结构图。


其中PCI通过JTAG接口控制测试板,完成固件下载。 PC2通过串行端口控制嵌入式平台。 验证UART接口时,连接测试板和嵌入式平台两个UART端口,UART0接口是命令接口,主要是针对嵌入式平台测试板的命令和测试板UART1是一个数据接口,主要用于在嵌入式平台和测试板之间传输数据。


验证SPI连接器时,将测试板和嵌入式平台上的UART0端口连接到SPI连接器。 同样,UART0是命令接口,主要传输嵌入式平台和测试板的命令传输; SPI是一个数据接口,用于在嵌入式平台和测试板之间传输数据。


2.2软件配置


验证软件的结构见图4。 其中,DUT设备是验证对象。


(1)用例管理层


主要生成各种测试用例。 UART接口包括UART波特率、数据长度、停止位和奇偶校验位等属性的组合设置和高级设置。


SPI接口的情况主要包括生成SPI的各种模式、各种时钟、大小终端和上下数据的测试用例。


(2)配置接口层


按照配置器和驱动程序命令/事件接口的定义完成各种命令的发送,并进行相应的事件处理。


(3)驱动接口层


根据配置器和驱动程序命令/事件接口的定义,分析配置器发送的命令并响应硬件状态信息。


)4)硬件接口层


主要负责驱动程序和固件的接口操作、DUT设备的设置、命令/数据写入DUT或从DUT设备获取状态/数据信息。


3接口验证工具的实现


考虑到与各个嵌入式平台(Linux系统)的兼容性,整个上位机软件在Linux系统上运行。 从图5可以看到,整个软件的实现主要由三部分组成:配置器、驱动程序和固件。 本文侧重于配置程序和驱动程序部分。


3.1程序配置


配置程序主要由测试用例管理和配置接口层两部分组成,主要完成测试用例管理和测试用例的生成。


3.1.1测试用例管理

/p>

测试用例管理部分主要完成测试用例的分发、定位以及测试结果的收集。为了兼容各个Linux版本,测试用例管理部分不采用界面的形式进行管理,而是采用命令行的形式运行。用例管理部分可以选择单个或多个测试用例进行测试。例如:uart_test case1 case2是对第一、二个测试用例进行测试,uart_test all是对所有的测试用例进行测试。测试用例管理部分会根据测试用例ID自动定位到相应的程序执行。图5是测试用例管理部分的流程图。

3.1.2 测试用例的生成

以UART接口为例,描述一个完整的测试用例。图6描述的是一个UART接口的完整的测试用例。从途中可以清晰地看出配置程序是如何协调上位机与下位机之间的通信的。

本文提出的验证工具与以往的验证工具最大的区别在于配置程序可以协调上位机与下位机。上位机与下位机并不是完全分离的,而是由配置程序统一协调,分别给上位机和下位机下发命令修改参数及通信。

3.1.3 兼容性的实现

由于对SPI接口来说,要求兼容PC机和多个嵌入式平台,所以在程序的设计上要考虑兼容性的问题。

兼容性问题需要考虑两个方面:

(1)数据类型的重定义。

(2)采用分层设计的思想。

3.2 驱动程序

驱动程序主要包括驱动接口层和硬件接口层。其中驱动接口层主要完成将配置程序的命令或数据进行解析,通过接口发送出去,而硬件接口层主要负责驱动与硬件(固件)接口操作,负责对DUT设备进行设置,对待测设备进行写命令/数据,或从DUT设备获取状态/数据信息。

3.2.1 UART接口驱动开发

UART协议比较简单,本文不对UART协议进行介绍。由于在LINUX系统下,对串口有相当好的支持。Linux下把串口看作一个文件来处理,故对串口的读写操作相当于对文件直接进行读写操作。这样我们可以直接调用系统函数如open,write,read,close等对串口进行操作。

需要注意的是,对串口的写操作比较容易,但是读操作存在着阻塞I/O的问题。在对串口进行读取操作的时候,如果使用的是RAW模式,每个read系统调用将返回当前串行输入缓冲区中存在的字节数。如果没有数据,将会一直阻塞到有字符到达或者间隔时钟到期,或者发生错误此时可采用异步读取。所谓异步读取,指的是先查询串口,看串口是否可用,直到串口可用了再去读就可以避免阻塞I/O的问题。

3.2.2 SPI接口驱动开发

(1)SPI概述

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时或者硬件复用两根数据线),也是所有基于SPI的设备共有的,它们是MISO,MOSI,SCK,CS。

MOSI为主设备数据输出,从设备数据输入;MISO为主设备数据输入,从设备数据输出;SCK为时钟信号,由主设备产生;CS为从设备使能信号,由主设备控制。

(2)SPI驱动开发

在Linux下开发SPI驱动有两种方式,一种是采用Linux自带的SPI子系统,一种是采用字符设备驱动的形式。本文采用了字符设备驱动的形式。在Linux 2.6内核中使用cdev结构体描述字符设备。cdev结构体如下所示。字符设备的主要工作是初始化、添加和删除cdev的结构体,申请和释放设备号,以及填充file_operaTIons结构体的操作函数,实现file_operaTIons结构体中的read(),write()和ioctl()等。

cdev结构体的dev_t成员定义了设备号,另一个重要成员file_operaTIons定义了字符设备驱动提供给虚拟文件系统的接口函数。file_ operaTIons结构体中的成员函数是字符设备驱动程序设计的主体内容,这些函数实际会在应用程序进行Linux的open(),write(),read(),close()等系统调用时最终被调用。

Linux字符设备驱动主要由以下几部分组成:

(1)字符设备驱动模块加载与卸载函数

在字符设备驱动模块加载函数中应该实现设备号的申请和cdev的注册,对应的是insmod过程,而在卸载函数中应实现设备号的释放和cdev的注销,对应的是rmmod过程。

(2)字符设备驱动的file_operations结构体中成员函数

file_operations结构体中成员函数是字符设备驱动与内核的接口,是用户空间对Linux进行系统调用最终的落实者。

(3)加载字符设备驱动之后,在用户空间建立一个设备节点,在用户空间就可以对设备进行操作了,操作方式操作文件的方式相同。

3.2.3 驱动与固件的接口

驱动与固件之间的交互是通过自定义的“AT+”协议,协议交互流程见图7。

AT+命令主要包括3个:“AT+”:判断串口链路是否正常。如果正常,返回OK;不正常,返回error;“AT+set”:接口参数设置命令。如果参数设置完成,返回OK;不正常,返回error;“AT+send”:数据发送命令。如果数据发送/接收正确,返回OK;否则,返回error。

4 结语

本文介绍的工具适用于UART接口和SPI接口的功能、性能和兼容性测试,可实现测试的自动化。采用该测试工具,一方面提高了测试效率,大大节约了人力资源,时间和人力成本节约了50%以上;另一方面可以保证测试用例100%的覆盖。


推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本书详细介绍了在最新Linux 4.0内核环境下进行Java与Linux设备驱动开发的全面指南。内容涵盖设备驱动的基本概念、开发环境的搭建、操作系统对设备驱动的影响以及具体开发步骤和技巧。通过丰富的实例和深入的技术解析,帮助读者掌握设备驱动开发的核心技术和最佳实践。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 如何创建和使用快捷链接:掌握打开链接的快捷方式技巧 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 在使用USB接口的二维条码扫描器时,发现其无法正确识别条码中的中文字符。然而,采用串口连接的方式则能够成功识别。目前面临的问题是如何将通过串口获取的数据在网页中进行实时展示,希望各位专家能提供解决方案,不胜感激。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 您是否了解:火狐浏览器会收集用户数据?
    您是否知道:火狐浏览器会收集用户数据?尽管Firefox浏览器的地理位置服务在浏览器关闭后仍会在后台运行,这引发了对用户隐私的担忧。最近,关于浏览器插件的争议进一步加剧了这种不安,因为这些插件原本旨在保护隐私,却反而泄露了用户信息。 ... [详细]
  • 汽车电子架构与CAN网络基础解析——鉴源实验室专业解读 ... [详细]
  • Argus: 免费的Outlook插件,有效检测恶意邮件
    Argus: 免费的Outlook插件,有效检测恶意邮件 ... [详细]
  • 2023年必备的六大Web3安全交互策略与实践
    2023年必备的六大Web3安全交互策略与实践 ... [详细]
  • 自定义WiWiz认证页面代码实现:支持Cookie与自动登录功能优化
    针对WiWiz自带认证页面的不便之处,特别是缺乏Cookie支持导致每次认证需手动输入信息的问题,本文介绍了通过自定义认证页面代码实现支持Cookie与自动登录功能的方法,显著提升了用户体验。具体实现了记录和处理用户认证信息的功能,确保了认证过程的便捷性和高效性。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
author-avatar
mobiledu2502886131
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有