<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>specification on Kohsruhe</title><link>https://www.kohsruhe.com/zh/tag/specification/</link><description>Recent content in specification on Kohsruhe</description><generator>Hugo -- gohugo.io</generator><language>zh</language><managingEditor>kohsruhe@outlook.com (Leehyon HNG)</managingEditor><webMaster>kohsruhe@outlook.com (Leehyon HNG)</webMaster><lastBuildDate>Thu, 10 Sep 2026 10:33:31 +0800</lastBuildDate><atom:link href="https://www.kohsruhe.com/zh/tag/specification/index.xml" rel="self" type="application/rss+xml"/><item><title>高效阅读 AUTOSAR 官方文档</title><link>https://www.kohsruhe.com/zh/2026/09/how-to-read-autosar-specifications/</link><pubDate>Thu, 10 Sep 2026 10:33:31 +0800</pubDate><author>kohsruhe@outlook.com (Leehyon HNG)</author><guid>https://www.kohsruhe.com/zh/2026/09/how-to-read-autosar-specifications/</guid><description>&lt;p&gt;本文是 AUTOSAR 系列的番外篇。深入学习 AUTOSAR，终究离不开官方规范。但面对其庞杂的文档体系，往往容易让人无从下手，因此有必要专门梳理一下官方文档的阅读方法。&lt;/p&gt;</description><content:encoded><![CDATA[<p>本文是 AUTOSAR 系列的番外篇。深入学习 AUTOSAR，终究离不开官方规范。但面对其庞杂的文档体系，往往容易让人无从下手，因此有必要专门梳理一下官方文档的阅读方法。</p>
<h2 id="文档入口">文档入口</h2>
<p>从下面这个地址可以直达，左边可以做过滤，比如释放版本、文档类型、模块等等。</p>
<ul>
<li><a href="https://www.autosar.org/search">Search AUTOSAR</a></li>
</ul>
<p><img src="https://images.kohsruhe.com/2026/autosar-doc-entry.png" alt="autosar-doc-entry"></p>
<p>目前，提供的文档主要有以下几大类：</p>
<table>
  <thead>
      <tr>
          <th style="text-align: center">缩写</th>
          <th style="text-align: left">英文全称</th>
          <th style="text-align: left">文档主要内容</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: center">RS</td>
          <td style="text-align: left">Requirements Specification</td>
          <td style="text-align: left">平台级、功能级或领域的总体需求</td>
      </tr>
      <tr>
          <td style="text-align: center">SRS</td>
          <td style="text-align: left">Software Requirements Specification</td>
          <td style="text-align: left">对一组软件模块提出的公共软件需求</td>
      </tr>
      <tr>
          <td style="text-align: center">SWS</td>
          <td style="text-align: left">Software Specification</td>
          <td style="text-align: left">某个具体软件模块的完整规范（API、状态机、配置）</td>
      </tr>
      <tr>
          <td style="text-align: center">TPS</td>
          <td style="text-align: left">Template Specification</td>
          <td style="text-align: left">系统模板、方法论、数据交换和配置模型规范</td>
      </tr>
      <tr>
          <td style="text-align: center">EXP</td>
          <td style="text-align: left">Explanatory Document</td>
          <td style="text-align: left">对复杂概念、架构或规范使用方式的解释</td>
      </tr>
      <tr>
          <td style="text-align: center">TR</td>
          <td style="text-align: left">Technical Report</td>
          <td style="text-align: left">发布说明、术语表、补充材料及非规范性报告</td>
      </tr>
      <tr>
          <td style="text-align: center">MOD</td>
          <td style="text-align: left">Model</td>
          <td style="text-align: left">AUTOSAR 模型、蓝图或模型数据</td>
      </tr>
      <tr>
          <td style="text-align: center">MMOD</td>
          <td style="text-align: left">Meta Model</td>
          <td style="text-align: left">AUTOSAR 元模型及其生成产物</td>
      </tr>
  </tbody>
</table>
<h3 id="rs-requirements-specification">RS: Requirements Specification</h3>
<p>RS 通常是比较高层的需求文档，回答 AUTOSAR 为什么需要这个能力，以及这个能力总体上必须满足什么要求？这类文档一般不会告诉你某个 API 的参数如何定义，而是描述功能目标、使用场景、系统约束、安全性和兼容性要求等。</p>
<h3 id="srs-software-requirements-specification">SRS: Software Requirements Specification</h3>
<p>SRS 比 RS 更接近软件架构层，但通常还不是某个具体模块的最终实现规范。SRS 经常定义某类基础软件模块共享的软件需求，比如通信、诊断、存储等相关的公共需求。</p>
<h3 id="sws-software-specification">SWS: Software Specification</h3>
<p>这是做 BSW 开发时最常阅读的文档类型。SWS 通常包含：模块职责与边界、依赖关系、API 定义、数据类型、状态机或行为描述、错误处理、配置参数等等。</p>
<h3 id="exp-explanatory-document">EXP: Explanatory Document</h3>
<p>EXP 是解释性文档，主要帮助读者理解规范背后的概念和使用方式，它往往比 SWS 更适合入门，但通常不作为开发符合性判断的唯一依据。建议的阅读顺序：</p>
<pre class="mermaid">flowchart TD
    A[&#34;&lt;b&gt;💡 先读 EXP &lt;/b&gt;&lt;br/&gt;建立整体概念，理解背景与设计初衷&#34;]
    --&gt; B[&#34;&lt;b&gt;🎯 再读 RS / SRS &lt;/b&gt;&lt;br/&gt;追溯需求来源与上层约束，明确功能边界&#34;]
    --&gt; C[&#34;&lt;b&gt;🔍 最后读 SWS / TPS &lt;/b&gt;&lt;br/&gt;查阅精准实现规则，掌握 API 定义、状态机及配置参数&#34;]</pre><p>对于大多数使用成熟工具进行 AUTOSAR 配置和集成的工程师而言，没有必要系统阅读全部 AUTOSAR 官方文档。实际工作通常以工具厂商提供的技术文档、User Manual 和集成指南为主，并在需要确认模块标准行为时查阅对应的 SWS。</p>
<p>对于 AUTOSAR 工具开发者、BSW 或 MCAL 开发者，以及需要手写 CDD 或其他 AUTOSAR 相关代码的工程师，则需要根据具体问题进一步阅读 SWS、TPS、MMOD 等文档，理解接口行为、配置模型、协议规则和工具生成逻辑。</p>
<h2 id="开发阅读建议">开发阅读建议</h2>
<p>没有人会把 2 万多页<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>的 AUTOSAR 规范当成长篇小说从头读到尾。真这么读，大概率在术语定义和版权声明里就被劝退了。</p>
<blockquote>
<p>理解 AUTOSAR，首先要认识到它是一套标准化规范，而不是某个具体的软件实现。阅读时，核心是厘清它规定了什么、约束了什么，以及哪些内容由具体实现自行决定。</p>
</blockquote>
<h3 id="区分标准厂商与项目">区分标准、厂商与项目</h3>
<p>实际开发中，我们接触最多的通常不是 AUTOSAR 规范本身，而是 Vector、EB 或芯片厂商提供的配置工具、基础软件和参考文档。遇到行为异常或联调争议时，查规范最大的价值在于区分责任边界：</p>
<pre class="mermaid">flowchart TD
    Issue[&#34;现场问题 / 行为分歧&#34;] --&gt; Q{&#34;根因在哪个层面？&#34;}
    Q --&gt;|&#34;标准规定&#34;| SWS[&#34;&lt;b&gt;AUTOSAR 规范&lt;/b&gt;&lt;br/&gt;标准强制要求还是可选推荐？&#34;]
    Q --&gt;|&#34;厂商实现&#34;| Vendor[&#34;&lt;b&gt;供应商 Technical Reference&lt;/b&gt;&lt;br/&gt;厂商私有扩展还是已知限制？&#34;]
    Q --&gt;|&#34;工程配置&#34;| Project[&#34;&lt;b&gt;项目 ARXML / Cfg&lt;/b&gt;&lt;br/&gt;参数配错还是集成逻辑有误？&#34;]</pre><ul>
<li><strong>标准规定</strong>：AUTOSAR SWS 明确规定的强制性要求，例如标准返回码、API 行为、状态机及其跳转条件</li>
<li><strong>供应商选择</strong>：标准未强制约束或明确允许自行实现的部分，由供应商根据产品架构作出选择，例如内部缓冲队列机制、资源管理策略和扩展 callout</li>
<li><strong>项目决定</strong>：由 OEM / Tier 1 或具体项目根据系统需求确定的参数和策略，通常通过 ARXML、生成配置、集成代码</li>
</ul>
<p>分清这三个层次，才能知道应该查 AUTOSAR SWS、供应商技术文档，还是项目的 ARXML、生成代码与集成逻辑。</p>
<h3 id="sws-定模块边界">SWS 定模块边界</h3>
<p>很多时候，弄清楚一个模块 <strong>不负责什么</strong>，比记住它负责什么更重要。初学者最容易把模块的职责想得过宽：</p>
<ul>
<li><strong>PduR</strong> 只负责 PDU 级别的路由分发，<strong>但不解析其中的 signal</strong></li>
<li><strong>ComM</strong> 负责协调通信模式，<strong>但不直接操作底层 controller</strong></li>
<li><strong>NvM</strong> 负责高层非易失数据块的排队与管理，<strong>但不直接擦写 flash</strong></li>
<li><strong>RTE</strong> 负责组件解耦与数据搬运，<strong>但不负责底层任务调度</strong></li>
</ul>
<p>当你对模块产生边界模糊时，在 <strong>SWS</strong> 翻到它向谁提供接口、又依赖谁的接口，职责边界自然就水落石出。</p>
<h3 id="sws-重点看什么">SWS 重点看什么</h3>
<p>一份 SWS 动辄数百页，但工程开发最常用的内容主要集中在四个部分：</p>
<pre class="mermaid">flowchart LR
    A[&#34;&lt;b&gt;Chapter 5&lt;/b&gt;&lt;br/&gt;Dependencies&lt;br/&gt;理清上下游依赖&#34;]
    --&gt; B[&#34;&lt;b&gt;Chapter 7&lt;/b&gt;&lt;br/&gt;Functional Spec&lt;br/&gt;掌握状态机与时序&#34;]
    --&gt; C[&#34;&lt;b&gt;Chapter 8&lt;/b&gt;&lt;br/&gt;API Spec&lt;br/&gt;看接口分类与签名&#34;]
    --&gt; D[&#34;&lt;b&gt;Chapter 10&lt;/b&gt;&lt;br/&gt;Configuration&lt;br/&gt;对应工具配置项&#34;]</pre><p><img src="https://images.kohsruhe.com/2026/autosar-sws-chapters.png" alt="autosar-sws-chapters"></p>
<ol>
<li>
<p><strong>Dependencies to other modules</strong><br>
先看模块依赖谁、又被谁依赖，确定它在软件栈中的位置和职责边界。</p>
</li>
<li>
<p><strong>Functional specification</strong><br>
这是 SWS 的核心。重点关注：</p>
<ul>
<li><strong>状态机</strong>：模块有哪些生命周期状态？什么条件触发跳转？</li>
<li><strong>MainFunction 与运行时序</strong>：周期函数里究竟在干什么？异步任务的 Job 是如何处理的？</li>
</ul>
</li>
<li>
<p><strong>API specification</strong><br>
不必死记每个函数的参数，先按用途理解接口：</p>
<ul>
<li>初始化（<code>Init</code> / <code>DeInit</code>）</li>
<li>控制与请求（<code>RequestMode</code> / <code>Transmit</code>）</li>
<li>回调通知（<code>RxIndication</code> / <code>TxConfirmation</code>）</li>
<li>周期调度（<code>MainFunction</code>）</li>
</ul>
</li>
<li>
<p><strong>Configuration specification</strong><br>
配置工具中的复选框、下拉列表和数值参数，通常都能在这里找到对应的标准定义与约束。遇到不理解的配置项，直接按参数名全文搜索即可。</p>
</li>
</ol>
<h3 id="问题驱动而非页码驱动">问题驱动，而非页码驱动</h3>
<p>AUTOSAR 规范不适合漫无目的地通读。更有效的方法是先建立骨架，再带着问题查细节。</p>
<p><strong>第一遍：30 分钟建立骨架</strong></p>
<p>暂时跳过 API、配置参数和需求细节，只回答四个问题：</p>
<ol>
<li>模块解决什么问题？</li>
<li>模块负责什么，不负责什么？</li>
<li>模块与哪些上下游交互？</li>
<li>模块依靠状态机、数据流还是调用链运行？</li>
</ol>
<p><strong>第二遍：带着问题按图索骥</strong></p>
<p>在设计、配置、编码或排错时，把问题具体化为某个接口、状态、配置项或运行场景，再回到 SWS 中精准查找。</p>
<h3 id="pdf-之外也可以看模型">PDF 之外，也可以看模型</h3>
<p>AUTOSAR 的部分发布包包含模型文件，可以使用 Enterprise Architect（EA） 工具打开并查看其中的 UML 图，包括模块依赖、接口关系、状态机和时序图。</p>
<p>下图是使用 EA 打开的 <code>AUTOSAR_MOD_BSWUMLModel.zip</code>。如果平时使用 EA 进行软件架构设计，这套 AUTOSAR UML 模型是很有价值的学习材料。</p>
<p><img src="https://images.kohsruhe.com/2026/autosar-eauml.png" alt="autosar-eauml"></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>有人做过统计，单 CP 平台的一个版本（22-11）就有 210 个文件，总页数超过 21913&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item></channel></rss>