校园预约服务处理的是表单和记录。实验室的小温箱还要处理真实温度:传感器读入箱温,控制器比较目标与测量,输出驱动加热器。一次程序计算会改变物理对象,新的箱温又成为下一次输入。本节从这条回路出发,依次看系统组成、分类依据、软件职责,以及安全要求怎样进入开发与验证。
小温箱和下面的计算模型是教学示例,没有代入真实产品参数。它帮助理解任务、接口与反馈;航空软件保证另用相应领域的历史标准说明,不能把温箱自动套进机载 A–E 等级。
2.4.1 计算系统怎样进入物理回路
嵌入式系统面向特定应用,把计算能力放进装置及其工作环境。输入接口取得传感器信息,人机接口接受操作者设定;应用计算控制量,输出接口驱动执行器。加热器改变箱温,传感器再测量箱内温度。控制器内部重复运行算法,与经过物理对象的反馈回路有不同的边界。

教材的一般组成是处理器、相关支撑硬件、嵌入式 OS、支撑软件、应用软件。处理器执行指令;存储器、定时器、总线与 I/O 等支撑硬件提供运行条件;OS 管理任务和资源;支撑软件提供公共库、服务与开发调试能力;应用完成特定目标。这是一般模型,裸机方案可以直接组织应用与硬件访问而不配置 OS。
“专用”首先说用途与设计取舍,不能据此断言必须用专用 CPU。功能、可靠性、体积、功耗与成本共同约束方案。教材图 2-11 的 ARM 板列出 Flash、SDRAM、LCD、串行与调试接口,展示一种配置;它不要求所有嵌入式系统同时具备这些器件,也不要求所有系统都工作在恶劣环境。
程序常放在非易失存储器,运行状态放在 RAM。Flash 断电保持内容,仍可能损坏,也可以按设计升级;普通 RAM 通常易失,任务执行时状态不断变化。固件部署与升级受接口、权限、完整性和适用规则约束,“固化”本身不能推出不可修改。软硬件协同还要审查电源、温度、电磁等条件对行为的影响。
教材强调技术融合与软硬协同:计算、通信、微电子和传感技术围绕具体用途结合,硬件提供接口与执行资源,软件组织控制策略和工作流程。设计可复用芯片内部模块,同时按需求去除冗余。许多装置的存储、算力和电源受限,配置规模及性能价格比需要取舍;体积小、价格低、资源少是常见设计目标,不能把它们升级为每种嵌入式系统的绝对属性。
2.4.2 用途、时限与失效后果分别判断
给同一个装置贴标签前,先说明正在回答什么问题。它嵌在设备内并承担特定用途,可以归嵌入式;结果既要逻辑正确,又要满足规定的时间条件,涉及实时性;错误功能或失效可能导致不可接受的事故风险,涉及安全攸关。教材图 2-12 用相交集合表达这些属性,一台系统可以同时具备其中多项。

强/硬实时把截止期违约视为不可接受;弱/软实时可按服务目标容忍一定延误或效用下降。若本例给控制任务的要求是期限不得违约,给显示任务的要求是容忍偶发迟到,就能在同一设备中同时讨论两类功能要求。软实时仍有时间目标;硬实时也不自动意味着人员伤亡。
平均算得快、吞吐量高,并不能证明规定期限在所需条件下满足。还要看最坏执行、竞争、阻塞、中断、输入到输出的路径等。至于安全后果,需要知道装置用途、失效情形、保护措施与系统架构,不能只看“温箱”“汽车”或“飞机”等名称。
| 观察问题 | 对象与判断 | 不能直接替代 |
|---|---|---|
| 实时性 | 任务结果是否满足规定时间条件。 | 平均速度与 CPU 利用率。 |
| 安全性 Safety | 在规定条件下,错误或失效造成的事故风险是否可接受。 | “很少坏”或“现在可用”。 |
| 可靠性 | 在规定条件、时间内持续执行所需功能的能力。 | 危害严重程度。 |
| 可用性 | 在所需时刻处于可用状态的程度,需给统计口径。 | 每项任务均按期。 |
| 信息安全 Security | 抵御未授权访问、篡改等威胁,保护所需安全属性。 | 系统安全评估的全部内容。 |
这些属性会相互影响:攻击可引发危险,冗余可帮助容错,维修可影响可用性,但每个结论仍要对应明确对象。教材中的可靠性数量级没有在本段给足单位与失效模型,这里保留概念,不把它写成任何嵌入式系统通用的概率门槛。软件没有机械磨损,也不能因此推断运行环境、更新、资源积累和故障触发永远不变。
2.4.3 换硬件、加任务,各自改变哪一层
控制策略希望读取温度,不希望处处知道某块板的寄存器地址。抽象接口让上层使用稳定能力;任务增加后,又需要决定谁先获得 CPU。这两种困难分别引出硬件适配和资源调度,不能都塞进“驱动”一词。
五层是职责与支撑关系
教材图 2-14 的正式框架为硬件、抽象、操作系统、中间件、应用五层。抽象层同时列 HAL(硬件抽象层)与 BSP(板级支持包)。HAL 隐藏硬件差异,BSP 提供具体板级支持;实际产品中两者都可能含硬件相关驱动,划界依实现。ST 的公开实现就把 HAL 与 BSP 同列在驱动区域,因此“HAL 排除全部驱动”不能作为普遍规则。

嵌入式 OS 内核主要管理任务、内存、任务间通信、时钟与中断。文件系统、设备管理、GUI、网络、运行时库和调试用目标代理等可按需求配置。任务调度回答“哪个就绪任务运行”,是内核职责;读某个硬件寄存器、提供板级接口则属于硬件适配问题。一道 HAL 选项同时提“设备驱动与任务调度”,明确越界的是任务调度,不能从该错项推导所有驱动都不属于 HAL。
本节中间件按教材列服务、集成、数据、消息、安全五类。它们向应用提供较公共的能力。图中的嵌入式数据库、OpenGL、JAVA/虚拟机、DDS/CORBA、Hadoop 是产品或技术例,不要求一个小控制器全部安装,也不把 2.3 的八类分类机械改成同一棵树。应用层组织控温、告警等业务,按需要调用 OS 与公共服务。
先约定接口,再用桩或仿真代替尚未就绪的板端,可以让部分软硬件开发并行。最终仍须在真实目标上检查 I/O、时序、异常和环境条件。共享底层的故障可能传播,但影响范围还取决于保护、隔离与故障处理;不能从“分层”直接推全部瘫痪,也不能从“信息隐藏”直接推没有接口成本。
开发还要控制代码与数据规模、栈和缓冲等资源占用,准备适用的开发工具、目标板、测试环境及必要测量设备。按功能划分模块并约定接口,能把采样、控制、告警、显示的责任分清;划分后仍须验证它们组合起来的行为。安全攸关领域还可能要求相应设计、代码与符合性审查,功能可运行不能替代这些要求。
宿主开发与目标启动有两条关系
宿主机提供编辑、编译、链接等工具,产生适配目标平台的程序或固件映像;目标机运行它并连接受控对象。串口、网络、JTAG 等可用于加载与调试。对于本例,部署后可以脱离宿主运行;每次上电不需要先在宿主重新编译。需要何种镜像和加载方式由具体工具链决定,语言处理阶段在 2.6展开。

常见题型按对象分片级→板级→系统级:片级关注芯片时钟、核心与寄存器等配置,板级关注板上内存及外设,系统级关注运行时、可选内核与应用组织。前一步提供后一步需要的条件;某些平台会交错或细分,不能在没有芯片约定时固定全部外设、.data、.bss位置。
片级初始化也可以由软件完成。Arm CMSIS Cortex-M 的 C 启动模板显示:Reset_Handler调用SystemInit(),再进入__PROGRAM_START()。这个公开示例足以否定“片级初始化纯由硬件完成”,也说明复位处理程序不必一概写成汇编。裸机应用可进入循环,RTOS 可建立任务并启动调度,不能要求所有系统都以相同主循环组织工作。
裁剪、配置与确定性怎样落实
可裁剪按功能需要增减模块;可配置按容量、状态、流程或参数组织能力。静态编译可同时参与两者,动态库、控制流程、配置表和数据驱动也可参与实现;它们不是固定互斥的两套工具。
确定性要求所需行为、资源边界和时限在规定条件下可分析、可预测。状态机仍会随输入转换,RAM 内容仍会改变。静态资源分配、越界检查、状态机和明确调度可帮助控制边界,却不能仅凭“用了静态分配”就证明所有期限。强实时、安全性、可靠性是需要满足的应用要求,具体方案要给分析与验证证据。
谁先运行,先看就绪状态和策略
采用可抢占固定优先级策略时,调度器选择最高优先级的就绪任务,不选择仍在等待事件的阻塞任务。较高优先级任务就绪后可抢占低优先级运行者,被抢占者带着剩余工作回就绪。临界区、关中断等可能延迟切换;同优先级是否轮转、优先级数值增大表示高还是低,都要看系统配置。
RMS(速率单调)按短周期给高固定优先级;EDF 按作业的绝对截止时刻越早给较高优先级;LLF 按剩余松弛度绝对截止时刻−当前时刻−剩余执行时间选择剩余松弛度最小的就绪作业,它还需要剩余执行量的依据。教材外的历史选项用语有“最晚/最近”争议,下面直接给完整规则,不借旧标答补造缺失条件。固定优先级计算不能不改模型就换用 EDF 的容量结论。
选择 RTOS 时看应用时限、资源、接口、工具、维护与可靠性要求。内核任务切换、中断响应、同步或消息传递的基准反映指定操作与测试环境;业务任务 WCET 和传感到执行的端到端期限还须另测、另分析。不能从一个切换测试推业务任务总耗时,更不能把“OS 通常占 20%”当无题设的统一开销。
四任务例:重复窗口与平均份额
【改编教学例】沿用留存下午案例的四组周期数据,补齐模型来求超周期 H、CPU 利用率 U 与按期性。T 是周期,C 是每个作业的最坏 CPU 执行时间(WCET),D 是相对释放的截止期,均以 ms 计。给定独立周期任务,首次均在 t=0;单 CPU、完全可抢占,短周期固定高优先级;基础 D=T;没有阻塞、释放抖动、额外中断、切换开销或自挂起。C 只计本模型 CPU 工作,通信与物理 I/O 的端到端要求另审。
| 任务 | T / ms | C / ms | 基础 D / ms |
|---|---|---|---|
| τ5 | 5 | 1 | 5 |
| τ20 | 20 | 4 | 20 |
| τ60 | 60 | 2 | 60 |
| τ1000 | 1000 | 5 | 1000 |
释放模式共同重复的窗口是最小公倍数。分解 5、20、60、1000 得 H=lcm(5,20,60,1000)=2³×3×5³=3000 ms=3 s。最长周期 1000 ms 不是其他周期的全部公倍数,例如 1000 不能被 60 整除。
任务每 T 占用 C,长期平均份额为 C/T;独立作业 CPU 工作相加,得到U=ΣC/T=1/5+4/20+2/60+5/1000=263/600=0.438333…≈43.8333%。单位 ms/ms 消去,U 为无量纲比例。百分数保留四位小数;它说明平均需求,尚未说明某个短期限一定满足。

用第二种计数回代:统计 [0,3000)内释放,不计 3000 ms 的新作业,四任务各有 3000/T=600、150、50、3个作业,共803。本演算让各作业实际占用给定C,与独立模拟的固定执行量一致,因此CPU工作 600×1+150×4+50×2+3×5=1315 ms,空闲3000−1315=1685 ms,1315/3000=263/600。若实际执行小于WCET,1315 ms是需求预算,实际空闲会相应增加。首60 ms的忙31 ms/闲29 ms只是当前演算局部窗口,不能替代整超周期比例。
每个任务都应独立登记自己的释放。若把“到1000 ms”放在“到60 ms”的条件内部,会漏掉1000、2000 ms,因为这两个时刻都不是60 ms的整数倍;正确的就绪队列也无法调度一个根本没有登记的作业。
平均有余量,截止期仍可能违约
R 是从释放到完成的响应时间,包括等待 CPU 与被抢占时间;C 只计本作业自身执行。当前模型可用固定优先级响应时间分析:从 Rᵢ⁽⁰⁾=Cᵢ开始,迭代Rᵢ⁽k+1⁾=Cᵢ+Σh∈hp(i)⌈Rᵢ⁽k⁾/Tₕ⌉Cₕ直至不动点。hp(i) 是本任务更高优先级任务,求和不含自己;向上取整给响应窗口内的干扰次数,乘 C 后仍为 ms。本例无阻塞,所以没有另加阻塞项。
| 任务 | 由 C 起算的迭代 / ms | 不动点回代 / ms | 基础期限 |
|---|---|---|---|
| τ5 | 1 | 没有更高优先级,R=1 | 1≤5 |
| τ20 | 4→5→5 | 4+⌈5/5⌉×1=5 | 5≤20 |
| τ60 | 2→7→8→8 | 2+⌈8/5⌉×1+⌈8/20⌉×4=2+2+4=8 | 8≤60 |
| τ1000 | 5→12→14→14 | 5+⌈14/5⌉×1+⌈14/20⌉×4+⌈14/60⌉×2=5+3+4+2=14 | 14≤1000 |

再用实际轨迹检查首次响应。按半开区间 [开始,结束)记录,完成时刻恰等于截止时刻算合格。首15 ms如下:
| 区间 / ms | CPU | 这段说明什么 |
|---|---|---|
| [0,1) | τ5 | 最高优先级首作业。 |
| [1,5) | τ20 | 先等1 ms,再连续执行4 ms;该作业未被抢占。 |
| [5,6) | τ5 | 第二次释放得到 CPU。 |
| [6,8) | τ60 | 首作业在8 ms完成。 |
| [8,10) | τ1000 | 执行自身工作的前2 ms。 |
| [10,11) | τ5 | 抢占仍未完成的τ1000。 |
| [11,14) | τ1000 | 再执行3 ms,自身总执行5 ms,释放0到完成14。 |
| [14,15) | 空闲 | 本轮已无未完成就绪工作。 |
独立精确事件枚举与逐毫秒模拟对比了全部803个作业,最大响应为(1,5,8,14) ms,基础各期限均满足。τ1000三次为0→14、1000→1012、2000→2012 ms:后两次实际响应12 ms。最坏14 ms是上界与本窗口最大值,不要求每次都经历同样干扰。
变式只改 D20=4 ms,其余条件包括固定优先级、执行量和超期后继续执行均不变。首作业0释放,截止4,完成5,R20=5 ms>4 ms,晚1 ms;原 D20=20 ms 时合格。整个超周期150个τ20作业都违约,其他任务没有违约。U仍约43.8333%,执行轨迹不变。这给出“U<1就能证明任意期限”的反例。
RMS 的经典利用率界在独立周期、单 CPU 可抢占固定速率优先级、D=T等模型下提供充分保证,超过该充分界不等于不可调度。期限短于周期、存在阻塞或开销、换成EDF、多CPU、丢弃超期作业等都改变分析条件,须重新计算;不能将上表当某个真实温箱、串口链路或OS的实测保证。
2.4.4 安全要求怎样进入软件保证
安全攸关软件可能因错误功能或失效带来不可接受风险。先在系统层分析失效条件与危害,再结合架构、隔离和保护措施分配软件安全需求及保证级别。把软件称为“机载程序”并不能自动决定A;加了一条保护也不能未经分析就机械降级。
失效后果、保证目标与标准版本

| 软件级别 | 关联失效条件(历史口径) | DO-178B历史目标数 |
|---|---|---|
| A | 灾难性 Catastrophic | 66 |
| B | 危险性 Hazardous | 65 |
| C | 严重性 Major | 57 |
| D | 轻微性 Minor | 28 |
| E | 无安全影响 No Effect | 0 |
本地教材 Markdown 表2-4把C写为56。NASA 2010年公开演示及2015年研究均列57,本册据此校正教学表;未取得原表像素与标准Annex A全文,不能判断冲突是否来自印刷或转录,也未逐项复计全表。FAA公开技术研究对B历史E级明示没有目标,支持0;该研究自身不构成FAA政策。D的28个目标仍含相应验证,E是否适用也须系统安全评估。
RTCA/EUROCAE组织制定相应机载软件文件,FAA通过认可指引接受它们。RTCA公开目录列 DO-178B 发布于1992-12-01,DO-178C 发布于2011-12-13。FAA AC20-115D给出一种可接受的符合性方法,说明B延续使用的条件;不能写成FAA独自开发、唯一强制方法,也不能断言B在任何场景都可直接继续用。本表是B历史数据,不据它补造C全部目标数。
CMMI关注组织/过程能力改进;机载软件保证关注具体系统、软件级别、适用目标与证据。成熟度等级与A–E没有简单换算。同一组织的过程水平也不能代替某一产品的安全分析和符合性证明。
覆盖检查回答执行到了什么
语句覆盖检查可执行语句是否执行;判定覆盖检查判定各结果是否出现;MC/DC还要求说明每个条件能独立影响判定结果。按本节采用的历史级别口径,A要求语句、判定、MC/DC;B要求语句与判定;C要求语句。D/E在这三个结构覆盖列没有对应要求,不能据此说D不用测试或不用验证。
【自编教学补充例】求一个判定P=a∧b达到unique-cause MC/DC的最小用例集合。a、b是独立布尔变量,四组合都可达;无短路,完整逻辑评估,输入与输出可观察。T表示真,F表示假。这里只讨论该判定,不由一张真假表计算整程序语句或入口/出口覆盖率。

| 用例 | a | b | P |
|---|---|---|---|
| TT | T | T | T |
| FT | F | T | F |
| TF | T | F | F |
| FF | F | F | F |
集合{TT,FT,TF}中,TT↔FT固定b=T,只改a,P由T变F;TT↔TF固定a=T,只改b,P也翻转。两条件独立影响都成立,判定真假与各条件真假也齐全。因为P只有TT为真,a独立影响必需TT/FT,b独立影响必需TT/TF;必要点并集正好三项,所以本例最少3个用例,无需取整。第二种方法枚举6个二项集合均不通过,4个三项集合只有该集合通过。
变式只保留{TT,FF}:P真/假都有,这一个判定的判定覆盖为2/2=100%;完整评估下两条件真假也各有。然而唯一用例对同时改变a与b,不能固定另一条件来展示独立影响,因此未达到本例MC/DC。
若改表达式、出现条件耦合/不可达、短路评估,或采用masking等另一形式,需要按新条件核验可用独立对。结构覆盖说明测试执行范围,不证明要求本身正确、程序没有所有缺陷或系统已安全。测到了分支,仍要核对预期结果和错误处理。
开发产品与贯穿过程怎样形成证据
软件生命周期中的目标说明要证明什么,活动说明怎样开发、验证与管理,生命周期数据保存产物与符合性证据。三者是不同对象,不能按名字排成三个时间阶段。

计划协调活动、标准与受控数据。开发由高层需求、架构与低层需求、源代码到集成后的目标可执行代码逐步形成产品;验证、配置管理、质量保证、审定联络贯穿生命周期。开发完成后才开始验证或配置管理,会失去早期需求、设计与变更的证据。
| 综合活动 | 主要对象与作用 | 重要边界 |
|---|---|---|
| 验证 | 评审、分析、基于需求的测试与结构覆盖检查,核对产物和目标,产生记录。 | 只有覆盖不够;应核对需求、结果和适用目标。 |
| 配置管理 | 标识、基线、变更控制、记录和归档。 | 开发与验证数据均受控,不只是最后存源码。 |
| 质量保证 | 审计过程与产物是否遵循计划及适用要求。 | 与直接功能测试职责有区别。 |
| 审定联络 | 沟通符合性方法及证据,组织提交。 | 提交证据不能直接当审定已经通过。 |
验证发现的问题、设计中产生的派生需求可能影响系统安全假设,必须反馈相应分析。低层实现不是脱离系统要求独自结束的一条直线。软件规范、代码、测试和分析记录等数据共同支撑判断;证据的关联、适用条件和受控状态与“文件数量多”有不同意义。
回到温箱,改控制板先核硬件适配与真实I/O;增加任务先核就绪竞争及期限;改变用途先核失效后果与保护条件。组成、调度、系统安全各有对象。把条件写清楚,再决定需要哪种模型、哪项证据,概念和计算才能随题设一起迁移。