编写设备驱动程序

自动化测试过程

    以下过程介绍了自动化测试:

  1. 确定要测试的驱动程序的各个方面。

    测试驱动程序中与硬件交互的所有方面:

    • 连接和分离

    • 在堆栈下检测和取消检测

    • 正常数据传送

    • 记录的调试模式

    必须为每种使用模式生成单独的工作负荷脚本 (fixup_script)。

  2. 对于每种使用模式,准备可执行程序 ( fixup_script),该可执行程序可对设备进行配置和取消配置,并可创建和终止工作负荷。

  3. 使用 errdef 以及访问类型 -a log 运行 th_define(1M) 命令。

  4. 等待日志填充。

    日志中包含 bofi 驱动程序的内部缓冲区的转储。此数据包含在脚本的前面。

    由于创建日志可能需要几秒钟到几分钟的时间,因此可使用 th_manage broadcast 命令检查进度。

  5. 转到已创建的测试目录并运行主测试脚本。

    主脚本将按顺序运行每个生成的测试脚本。每个寄存器集会生成单独的测试脚本。

  6. 存储结果,以用于分析。

    成功的测试结果(如 success (corruption reported)success (corruption undetected))表明所测试的驱动程序工作正常。如果工具检测到驱动程序在报告故障后无法报告服务影响或者驱动程序无法检测到访问或 DMA 句柄已被标记为有故障,则结果将报告为 failure (no service impact reported)

    输出中出现几个 test not triggered 故障并不碍事。但是,若干个此类故障将表明测试没有正常工作。当驱动程序访问的寄存器与生成测试脚本时的寄存器不同时,会出现这些故障。

  7. 同时对驱动程序的多个实例运行测试,以测试错误路径的多线程。

    例如,每个 th_define 命令都会创建一个单独的目录,其中包含测试脚本和主脚本:


    # th_define -n xyznetdrv -i 0 -a log -e script
    # th_define -n xyznetdrv -i 1 -a log -e script
    

    创建后,并行运行主脚本。


    注 –

    生成的脚本只生成仿真的故障注入,这些故障注入基于日志记录 errdef 处于活动状态期间记录的内容。定义工作负荷时,请确保记录所需结果。此外,还要分析生成的日志和故障注入规范。请验证生成的测试脚本所创建的硬件访问覆盖率是否满足需要。