# 华信软件生命周期 **Repository Path**: YumingMa/huaxin-devsecops ## Basic Information - **Project Name**: 华信软件生命周期 - **Description**: “智远测试框架” 是一套面向 RISC-V 计算平台的全栈式兼容性与健壮性验证解决方案。 - **Primary Language**: C - **License**: BSD-2-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 131 - **Created**: 2026-07-26 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智远测试框架 (Zhiyuan Testing Framework) ### 概述 #### 1.1 背景与挑战 随着 RISC-V 生态的爆发式增长,碎片化问题日益凸显。不同的芯片厂商(Vendor)、不同的固件实现(BIOS/OpenSBI)以及多样的操作系统导致了软硬件兼容性难以保证。 #### 1.2 产品定位 “智远测试框架” 是一套面向 RISC-V 计算平台的全栈式兼容性与健壮性验证解决方案。它不局限于单一层级,而是从底层硬件架构、固件启动流程、二进制接口兼容性到极端压力测试,提供了端到端的质量保障。 #### 1.3 核心价值 - 标准化:基于 RISC-V International 发布的 BRS/BSA 规范,确保产品符合行业标准。 - 自动化:一键式部署与执行,输出可视化测试报告。 - 全覆盖:覆盖从芯片 Bring-up 到 OS 适配的全生命周期。 ### 总体架构 本框架由四大核心模块组成,分别对应系统的不同层级: 1. RISC-V Instruction Generator:随机指令生成器 —— 确保“抗压能力”,在极端指令流下系统不崩溃。 2. BSA (Base System Architecture):基准硬件架构测试 —— 确保“地基”不仅是通用的,而且是稳固的。 3. BRS (Boot Requirements Specification):启动需求规范测试 —— 确保“大门”是按标准打开的,OS 能顺利进场。 4. ABI (Application Binary Interface):应用二进制接口测试 —— 确保“语言”是通用的,软件生态可迁移。 5. Performance Benchmarking:性能基准测评 —— 确保“跑得快”,量化计算、访存与调度的综合效能。 ![智远测试框架图](Picture/Framework_diagram.png) ### 功能模块详解 ##### 3.1 随机指令生成器 (RISC-V Instruction Generator) 目标:通过高强度的随机指令流,挖掘硬件与固件的边缘 BUG。 - 功能描述: 基于约束的随机生成(Constrained Random):生成合法的复杂指令序列。 非法/未定义指令注入:测试 CPU 与 BIOS 的异常捕获(Trap Handling)能力。 - 测试场景: 压力测试:长时间运行混合指令流(整型+浮点+向量),检测散热与稳定性。 边界测试:针对页表边界、缓存行(Cache Line)边界的非对齐访问测试。 ##### 3.2 硬件基准验证 (BSA Module) 目标:验证硬件设计是否符合 RISC-V 基础系统架构规范,确保 OS 可移植性。 - 处理器单元 (PE) 检查: 验证 ISA 扩展指令集(Extensions)的一致性。 检查 CSR 寄存器(如 mvendorid, marchid)的只读/读写属性。 - 中断子系统: 验证 PLIC/APLIC/IMSIC 的中断路由、优先级仲裁及挂起/清除机制。 - 内存与外设映射: 扫描 PCIe 配置空间(ECAM),验证 BAR 空间分配。 检查 Timer (mtime/mtimecmp) 的精度与触发机制。 ##### 3.3 启动合规性验证 (BRS Module) 目标:验证 BIOS/固件层是否提供了符合规范的启动环境。 - 这里是列表文本固件接口层 (Firmware Interface): SBI 兼容性:测试 OpenSBI 提供的服务(Hart State, IPI, RFENCE)是否符合 SBI Spec v1.0+。 UEFI/ACPI 表:验证 ACPI 静态表(MADT, SRAT, GTDT, MCFG)的字段完整性与逻辑正确性。 - 系统状态切换: 验证从 M-Mode 到 S-Mode 的寄存器上下文(Context)传递是否符合 Boot Protocol。 测试系统复位(Reset)与看门狗(Watchdog)的固件联动。 ##### 3.4 二进制接口兼容性 (ABI Module) 目标:确保编译后的二进制程序能在该平台上正确运行,无崩溃风险。 - 调用约定 (Calling Convention): 验证整型参数(a0-a7)与浮点参数(fa0-fa7)的传递规则。 检查被调用者保存寄存器(Callee-saved registers, s0-s11)在函数返回后的堆栈恢复情况。 - 系统调用与库: 测试 vDSO (virtual Dynamic Shared Object) 机制。 验证 glibc/musl 库的基础指令依赖。 ##### 3.5 性能基准测评 (Performance Benchmarking) 目标:量化 RISC-V 处理器的计算性能、内存带宽及系统综合效率,为软硬件优化提供数据支撑。 - 核心计算能力 (Micro-Benchmarks): CoreMark:评估 CPU 核心的流水线效率、分支预测及基础 ALU 性能。重点监控 L1/L2 Cache 命中率对分数的影响。 - 系统负载与应用模拟 (Macro-Benchmarks): SPEC CPU (2006/2017):模拟真实应用场景(编译、压缩、AI 计算)。验证 BIOS 对 NUMA 架构的描述是否准确,以及硬件预取器的效能。 - 访存子系统 (Memory Subsystem): LMBench:精确测量各级 Cache (L1/L2/LLC) 及主存的访问延迟。 STREAM:测试 Copy, Scale, Add, Triad 四种操作的内存带宽。用于验证 DDR 初始化后的频率达标情况及多通道交织效果。 ### 使用框架 1. 环境配置:上位机负责产生测试项目与logo分析,生成图表。 测试平台负责运行测试脚本,完成测试。 2. 测试流程:由上位机产生测试镜像,运行获取logo或其他测试文件,通过上位机分析得到测试报告。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request