# 华信软件生命周期 **Repository Path**: MagicWater/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 # 华信 > **AI 驱动的 DevSecOps 反馈优化框架** 华信面向软件开发全生命周期,研究 AI 在需求理解、配置生成、测试验证、持续交付、运行监测和反馈修复等环节中的应用。 项目以“**生成—验证—执行—反馈—修复**”为基本闭环,通过测试结果、安全规则、部署状态和运行指标持续改进软件配置及交付结果。 当前华信主要围绕两项研究内容展开: - 基于大语言模型的 IaC 配置生成; - 面向 RISC-V 计算平台的智远测试框架。 其中,AI 生成配置负责根据需求和约束产生候选配置;智远测试框架负责执行测试、兼容性验证和性能评价。测试与运行结果进一步反馈给生成环节,用于配置修复和方案优化。 --- ## 项目背景 传统软件开发通常以需求、开发、测试和部署为主线,安全、配置和运维问题往往在开发后期或运行阶段才暴露,修复成本较高。 DevSecOps 将安全规则、测试验证和运行要求前置到软件开发及交付流程中,使安全、质量和运维能力贯穿软件生命周期。 AI 的引入进一步改变了软件开发方式。代码、配置、测试内容和修复方案可以由模型生成,但模型输出不能直接视为最终结果,还需要经过自动验证、部署执行和运行评估,并根据反馈进行修复。 华信关注的核心问题是: > 如何在软件生成阶段引入安全、资源、性能及部署约束,并利用测试和运行反馈持续改进生成结果? --- ## 研究重点 ### AI 生成 IaC 配置 当前阶段重点研究大语言模型生成基础设施即代码(Infrastructure as Code,IaC)配置的能力,主要面向: - YAML; - Terraform; - Kubernetes 部署及资源配置。 配置生成过程综合考虑: - 用户需求和业务目标; - 安全策略及合规要求; - CPU、内存等资源限制; - SLO 及性能指标; - 目标部署环境; - 模板、平台规范和历史配置。 当前研究流程为: ```text 需求及约束输入 ↓ 需求解析及约束提取 ↓ 模板、规范和历史配置增强 ↓ LLM 生成 IaC 配置 ↓ 语法及安全策略验证 ↓ 部署测试或性能压测 ↓ 错误信息及运行指标反馈 ↓ 配置修复 ↓ 再次验证 ``` 核心研究问题是: > 在安全、资源和性能约束下,大语言模型能否生成可验证、可部署的 IaC 配置,并根据验证结果和运行反馈完成有效修复? 重点评价指标包括: - 配置语法正确率; - 安全策略通过率; - 约束满足率; - 首次生成可部署率; - 部署成功率; - SLO 达标率; - 修复成功率; - 平均修复次数。 ### 智远测试框架 > **Zhiyuan Testing Framework** 智远测试框架是一套面向 RISC-V 计算平台的全栈式兼容性与健壮性验证解决方案。 它面向芯片、固件、操作系统和基础软件的适配过程,覆盖指令集验证、基础系统架构验证、固件启动验证、软件兼容性验证和性能基准测评,并通过统一的测试管理平台完成任务调度、测试执行和报告生成。 在华信的软件生命周期中,智远承担测试执行、兼容性验证和性能评价等任务,并将测试日志、错误信息和性能指标反馈给配置生成及修复环节。 --- # 智远测试框架 (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