Skip to content

Holistic automatic regression testing framework for embedded middleware and drivers

Notifications You must be signed in to change notification settings

EDI-Systems/SemiTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

题目:基于Semihosting技术的多场景大规模嵌入式软件测试系统

描述:

嵌入式软件,包括实时操作系统、中间件和驱动库,需要适配多种硬件架构和编译环境。确保这些软件组件在真实环境中能够正确运行,而不仅仅是依赖于主机仿真环境下的测试结果,是一个重要的挑战。由于存在不同版本的编译器、硬件架构以及特定于设备的配置(例如IIC EEPROM的不同容量版本),如何验证每种组合的兼容性、有效性和性能成为了一个复杂的问题。

本题目旨在设计并实现一个基于FPGA的硬件平台,该平台能够在微控制器(MCU)与待测硬件之间进行多路复用(MUX),从而允许根据上位机指令选择任何组合来进行软件测试。通过这种方式,可以对所有可能的组合进行全面的功能正确性测试。测试结果将利用Semihosting技术输出至上位机,以便与上位机协作完成全面的质量保证流程。

特征:

  • 支持多种微控制器架构和编译环境。
  • 使用FPGA作为MUX,以支持灵活的硬件配置和组合测试。
  • 利用Semihosting技术进行调试信息输出,增强测试过程中的诊断能力。
  • 软硬件结合,确保嵌入式软件在实际硬件环境中的兼容性和稳定性。

预期目标:

第一题:MUX底板实现

  • 设计并实现一个基于FPGA的MUX电路,用于在多个MCU与待测硬件之间切换。
  • 提供详细的硬件设计方案文档,并使用VHDL或Verilog等硬件描述语言在FPGA上实现。
  • 参赛者与老师联系后将免费得到专用的MUX FPGA开发板(FPGA下载器需自行准备)。赛后开发板无需退回;但其它硬件的设计必须自行完成。分发的FPGA开发板的硬件原理图可以在repo中找到。

第二题:MCU底板与待测设备载板实现

  • 设计与FPGA相连接的MCU底板,该底板上装载AVR、MSP430和STM32等三种架构的微控制器以运行测试程序。另外,还需要装载一颗控制器,实现Semihosting调试协议(与主机进行通信),并用来通知FPGA更换MCU与待测设备之间的连线。
  • 设计可以搭载于FPGA底板上的待测设备子卡。要求待测设备至少包括全系列IIC EEPROM,以及一个加速度计、一个温度计、一个陀螺仪、一个ADC和一个DAC。

第三题:软件实现

  • 开发一套具有广泛可移植性的构建系统,确保其可以调用在不同的MCU架构上(至少包括8位的AVR、16位的MSP430和32位的STM32等)自动化各类开源驱动(如EEPROM、SD卡、SPI Flash等)及其测试用例的编译和下载工作。
  • 根据MCU底板传递回来的信息,确认测试是否通过,并记录于log中。

第三题:测试框架构建

  • 构建一个自动化的测试框架,该框架可以根据输入参数自动选择适当的MCU和硬件配置进行测试。
  • 对比不同配置组合下软件库的表现,分析并记录性能差异和潜在问题。
  • 利用收集的数据优化软件库,提高其在各种硬件配置上的稳定性和性能。

要求形成的最终系统可以非常方便地用于

嵌入式中间件的兼容性验证

中间件(如通信协议栈、文件系统、图形库等)通常需要适配多种硬件架构和编译器工具链。例如,TCP/IP协议栈在不同MCU上的实现可能存在差异。

  • 测试系统可以快速切换不同的硬件配置和编译器版本,验证中间件的功能是否正常、库函数的行为是否一致。
  • 通过自动化测试框架,可以全面覆盖中间件的API调用、错误处理和性能指标(如响应时间)。

设备驱动程序的兼容性测试

设备驱动程序(如ADC、DAC、PWM、IIC、SPI等)需要适配多种硬件架构和外设配置。例如,EEPROM驱动程序可能需要支持不同容量的芯片。

  • 硬件平台中的FPGA可以灵活连接不同的外设模块(如EEPROM、ADC芯片),并通过MUX选择不同的组合进行测试。
  • 测试系统可以验证驱动程序在不同硬件配置下的兼容性和稳定性。

嵌入式系统开发中的开源项目贡献

开源嵌入式项目(如Zephyr OS、RIOT OS等)需要在全球范围内适配多种硬件架构和编译器工具链。

  • 测试系统可以快速切换不同的硬件配置,验证开源项目的移植性和稳定性。
  • 自动化测试框架可以帮助开发者生成详细的测试报告,为项目贡献高质量的代码和文档。

参考材料

  • RT-Thread、Nuttx、Zephyr等RTOS的各类设备驱动库
  • 本repo的测试板

About

Holistic automatic regression testing framework for embedded middleware and drivers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published