ARXML文件解析-2

目錄

  • 1 摘要
  • 2 常見ARXML文件注意事項以及常見問題
    • 2.1 注意事項
    • 2.2 常見問題
    • 2.3 答疑
  • 3 ARXML解讀/編輯指南
    • 3.1 解讀ARXML文件的步驟
    • 3.2 編輯ARXML文件的方法
    • 3.3 驗證與調試
  • 4 總結

1 摘要

本文主要對ARXML文件的注意事項、常見問題以及解讀與編輯進行詳細介紹。
上文回顧:
ARXML文件解析-1

2 常見ARXML文件注意事項以及常見問題

2.1 注意事項

  1. 語法規則

    • 起始符<?xml(嚴格小寫,無空格)。
    • 屬性順序versionencodingstandalone(順序不可調換)。
    • 引號:屬性值必須用 ASCII雙引號 " 包裹。
    • 結束符?>(無空格)
  2. ARXML文件的特殊要求

    • 工具鏈兼容性
      ARXML常用于汽車軟件架構(如AUTOSAR),需確保工具鏈(如Vector PREEvision、ETAS ISOLAR)能解析該聲明。
    • 編碼一致性
      若文件含非英文字符(如中文注釋),必須保存為UTF-8且聲明匹配,否則會亂碼。
    • 格式驗證
      建議通過XML驗證工具(如Notepad++ XML插件、在線校驗器)檢查語法。
  3. 工具鏈注意事項

    • 語言切換
      • 工具(如Vector PREEvision)會根據<LANGUAGE>顯示默認語言的文本。
      • 若未找到匹配語言,可能回退到EN或顯示空值。
    • 版本兼容性
      • AUTOSAR R4.0+ 強制要求 <ADMIN-DATA>,但部分舊工具可能忽略其內容。
    • 驗證規則
      • <L-2> 中的語言代碼必須在 <USED-LANGUAGES> 中聲明,否則可能報錯。
  4. 工具驗證建議

    • XML語法檢查
      • 使用 XMLSpyOxygen XML Editor 驗證文件格式。
      • 在線工具:https://www.xmlvalidation.com/
    • 編碼檢測
      • 通過 Notepad++ → 「編碼」菜單確認文件編碼。
    • AUTOSAR工具鏈驗證
      • 在Vector PREEvision或ETAS ISOLAR中導入文件,檢查是否報錯。
  5. TAG的命名規則

    • 大小寫敏感
      • 所有TAG名稱區分大小寫(如<SHORT-NAME>不能寫成<short-name>)。
    • 命名風格
      • 使用大寫字母+連字符(如<ECUC-CONTAINER-VALUE>)。
    • 唯一性
      • 同一父元素下,<SHORT-NAME>必須唯一。
  6. 如何查看完整的TAG類型?

    • AUTOSAR官方XSD文件
      • 下載對應版本的XSD(如AUTOSAR_4-2-2.xsd),所有合法TAG均在其中定義。
    • 工具鏈文檔
      • Vector PREEvision/ETAS ISOLAR的文檔會列出支持的TAG類型。
    • 實例文件參考
      • 通過工具生成的ARXML文件學習實際用法。

提示:具體TAG類型需參考AUTOSAR版本對應的規范文檔,不同版本(如R4.0 vs R21-11)可能有差異。

2.2 常見問題

  • 錯誤1XML parsing failure: Invalid byte 1 of 1-byte UTF-8 sequence

    • 原因:文件實際編碼與聲明的encoding屬性不一致。
  • 錯誤2XML declaration allowed only at the start of the document

    • 原因:XML聲明前有空格、注釋或其他內容。
  • 錯誤3Invalid content starting with 'AR-PACKAGE'

    • 原因:元素順序不符合XSD要求(如AR-PACKAGE必須位于AR-PACKAGES內)。
  • 錯誤4Undefined UUID reference

    • 原因:引用的UUID未在文件中定義。
  • 錯誤5Encoding mismatch

    • 解決:確保文件實際編碼與XML聲明的encoding一致(推薦UTF-8無BOM)。
  • 錯誤6:Unbound namespace prefix 'xsi'

    • 原因:未聲明xmlns:xsi命名空間。
    • 解決:添加 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  • 錯誤7:SchemaLocation Warning: No XSD found

    • 原因xsi:schemaLocation指定的XSD文件路徑錯誤。
    • 解決:確保XSD文件存在,并修正路徑(如使用絕對路徑 C:\AUTOSAR\AUTOSAR_4-2-2.xsd)。
  • 錯誤8:Element not allowed in namespace

    • 原因:元素未在默認命名空間或指定命名空間中定義。
    • 解決:檢查命名空間URI是否與AUTOSAR版本匹配。
  • 錯誤9:未定義的TAG

<!-- 錯誤示例 -->
<MY-CUSTOM-TAG> <!-- 非AUTOSAR標準TAG -->Value
</MY-CUSTOM-TAG>

后果:工具鏈報錯(如Unknown element 'MY-CUSTOM-TAG')。

  • 錯誤10:TAG順序錯誤
<!-- 錯誤示例 -->
<AR-PACKAGE><ELEMENTS>...</ELEMENTS> <!-- 必須在SHORT-NAME之后 --><SHORT-NAME>Com</SHORT-NAME>
</AR-PACKAGE>

解決:遵循XSD中定義的子元素順序。

  • 其他錯誤表格示例:
錯誤現象原因分析解決方案
Invalid encoding declaration文件實際編碼與聲明不一致(如聲明UTF-8但保存為ANSI)用文本編輯器(如Notepad++)將文件另存為UTF-8無BOM格式。
Malformed XML declaration使用全角引號或錯誤符號(如 <?xml替換全角符號為ASCII字符,確保 <?xml 格式正確。
XML declaration allowed only at the startXML聲明前有空格、注釋或其他內容確保XML聲明為文件第一行,且無空行或注釋。
Standalone document cannot have external referencesstandalone="yes" 但引用了外部XSD改為 standalone="no" 或移除外部依賴。

2.3 答疑

  • Q1: 能否省略<ADMIN-DATA>
    答案:不建議。AUTOSAR規范要求保留該節點(內容可為空),否則工具可能警告。

  • Q2: 如何添加自定義語言(如法語)?

<USED-LANGUAGES><L-2 L="FR" xml:space="default"/>  <!-- 新增法語 -->
</USED-LANGUAGES>
<DESC><L-2 L="FR" xml:space="default">Configuration Réseau</L-2>
</DESC>
  • Q3: xml:space="default" 能否省略?
    答案:可以省略(工具通常默認處理為default),但顯式聲明可提高可讀性。

  • Q4: UUID是否可以手動指定?
    答案:可以,但需確保全局唯一性。推薦使用工具(如Vector PREEvision)自動生成。

  • Q5: <SHORT-NAME>能否重復?
    答案:同一父元素下不能重復,但不同包內可以同名(如兩個<AR-PACKAGE>均可包含<SHORT-NAME>Comunication)。

  • Q6: 如何定義具體的轉換鏈(Transformer Chain)?
    答案:需在另一個<AR-PACKAGE>中定義<TRANSFORMER-CHAIN>,并通過<TARGET-REF>引用其路徑或UUID。

  • Q7: <L-10>能否嵌套其他標簽?
    答案:通常不允許,其內容應為純文本。若需結構化內容,應使用其他專用標簽(如<DESC>中的<P>段落標簽,需工具支持)。

  • Q8: 為什么工具不顯示<L-10>的內容?
    可能原因

    1. 未在<USED-LANGUAGES>中聲明對應語言。
    2. 工具未激活多語言切換功能。
    3. 標簽名稱不兼容(如工具期望<LONG-TEXT>而非<L-10>)。
  • Q9: 如何提取所有語言的<L-10>文本?
    方法
    使用XPath查詢(示例):

    //L-10[@L='EN']/text()  <!-- 提取英文文本 -->
    //L-10[@L='CN']/text()  <!-- 提取中文文本 -->
    

3 ARXML解讀/編輯指南

3.1 解讀ARXML文件的步驟

步驟1:確定目標內容

  • 通信配置:查找EthernetFramePDUSignal相關標簽。
  • 服務接口:搜索SERVICE-INTERFACEMETHODEVENT
  • ECU信息:定位ECU-INSTANCEETHERNET-INTERFACE

步驟2:理解元素屬性

  • 關鍵屬性示例
    • <SERVICE-ID>0x1234</SERVICE-ID>:服務唯一標識符(16進制)。
    • <METHOD-ID>0x01</METHOD-ID>:方法ID,與服務內唯一。
    • <START-BIT>0</START-BIT>:信號在PDU中的起始位。

步驟3:追蹤引用關系

  • 通過<REF><TYPE-TREF>追蹤跨元素的依賴:
    <SIGNAL-TO-PDU-MAPPING><I-SIGNAL-REF DEST="I-SIGNAL">/Signals/SpeedSignal</I-SIGNAL-REF>
    </SIGNAL-TO-PDU-MAPPING>
    

步驟4:驗證邏輯一致性

  • 檢查ID唯一性(如SERVICE-ID不可重復)。
  • 確認信號映射的位范圍不重疊(如兩個信號不能占用PDU的同一段比特位)。

3.2 編輯ARXML文件的方法

方法1:使用專業工具(推薦)

  • 工具示例
    • Vector PREEvision:圖形化編輯通信矩陣和服務接口。
    • ETAS ISOLAR:AUTOSAR兼容的完整開發環境。
    • Elektrobit Tresos:專注于基礎軟件配置。
  • 優勢:自動處理引用關系、語法驗證和版本兼容性。

方法2:手動編輯(需謹慎)

  • 文本編輯器:使用VSCode、Notepad++等支持XML高亮和折疊的工具。
  • 注意事項
    1. 備份文件:編輯前復制原始文件以防錯誤。
    2. 修改屬性:直接調整標簽內的值(如更改<CYCLE-TIME>100</CYCLE-TIME>為200)。
    3. 添加元素:遵循現有結構插入新節點(如新增METHOD)。
    4. 處理引用:確保新元素的ID唯一,且引用路徑正確。

示例:手動添加一個方法

<METHODS><CLIENT-SERVER-OPERATION><SHORT-NAME>NewMethod</SHORT-NAME><METHOD-ID>0x02</METHOD-ID><CALL-TYPE>FIRE_AND_FORGET</CALL-TYPE></CLIENT-SERVER-OPERATION>
</METHODS>

方法3:腳本自動化

  • Python + XML庫:使用xml.etree.ElementTree解析和修改ARXML。
  • 示例腳本:批量修改服務端口號
    import xml.etree.ElementTree as ET
    tree = ET.parse('example.arxml')
    root = tree.getroot()
    for elem in root.findall(".//ENDPOINT-PORT"):elem.text = "30500"  # 修改所有端口為30500
    tree.write('modified.arxml')
    

3.3 驗證與調試

驗證工具

  • XML Schema驗證:使用AUTOSAR提供的XSD文件檢查語法。
    xmllint --schema AUTOSAR_4-2-2.xsd example.arxml
    
  • AUTOSAR工具鏈:如ISOLAR的完整性檢查功能,檢測邏輯錯誤。

常見錯誤處理

  • ID沖突:重復的SERVICE-IDMETHOD-ID導致通信失敗。
  • 引用失效:刪除被引用的元素后未更新相關引用。
  • 位映射錯誤:信號超出PDU長度或位重疊。

4 總結

ARXML文件通過分層包和元素描述汽車電子系統,解讀需關注模塊功能及引用關系,編輯推薦使用專業工具或謹慎手動調整,并始終驗證文件正確性。本專題相關介紹有利于更好地理解ARXML文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3535 數組分割

3535 數組分割 ??難度&#xff1a;困難 &#x1f31f;考點&#xff1a;2023、省賽、動態規劃 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int MOD 1000000007;static int N 1005;public static void main(String[] args) {Scanner sc …

Git操作指南

Git操作指南 1.安裝并配置Git Git官網&#xff1a;https://git-scm.com/downloads 安裝完成后&#xff0c;打開Git Bash&#xff0c;配置Git&#xff1a; git config --global user.email "emailexample.com" git config --global user.name "Your Name&quo…

Linux常用基礎命令應用

目錄 一、文件與目錄操作&#xff08;12個核心命令&#xff09;?? ??1. pwd - 顯示當前路徑?? ??2. ls - 查看目錄內容?? ??3. cd - 切換目錄?? ??4. mkdir - 創建目錄?? ??5. touch - 創建文件?? ??6. cp - 復制文件/目錄?? ??7. mv - 移動…

zookeeper基本概念和核心作用

圖片來源&#xff1a; 02-Zookeeper概念_嗶哩嗶哩_bilibili02-Zookeeper概念是黑馬程序員Zookeeper視頻教程&#xff0c;快速入門zookeeper技術的第2集視頻&#xff0c;該合集共計24集&#xff0c;視頻收藏或關注UP主&#xff0c;及時了解更多相關視頻內容。https://www.bilib…

關于HikariDataSource (null)的誤解,順帶提出一種mybaits-Plus mapper映射失敗的容易被忽視的原因

首先探究此問題并無什么實際意義&#xff0c;純屬是個人好奇使然&#xff0c;也順帶熟悉了一下Springboot 數據庫連接的相關問題&#xff0c;本人純小白說的不對的地方懇請大佬指正&#xff01;&#xff01; 關于HikariDataSource (null)的誤解 問題的發現 Value("${myba…

Centos7上安裝docker - yum在線的方式

步驟一 &#xff1a; 安裝 yum-utils yum install -y yum-utils步驟二 &#xff1a; 替換docker 的國內的源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo執行完成后&#xff0c;會在 /etc/yum.repos.d/ 目錄下 新增 doc…

250405-VSCode編輯launch.json實現Debug調試Open-WebUI

A. 最終效果 根據__init__.py配置launch.json 根據中utils/chat.py中form_data的messages [{role: user, content: 唐老鴨}],可以找到用戶輸入&#xff0c;進而通過關鍵詞或模型調用的方式&#xff0c;對敏感問題進行特殊處理。 B. 文件配置 launch.json // { // /…

①(PROFINET 轉 Modbus TCP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 PROFINET 轉 Modbus TCP MS-GW35 概述 MS-GW35 是 PROFINET 和 Modbus TCP 協議轉換網關&#xff0c;為用戶提供一種 PLC擴展的集成解決方案&#xff0c;可以輕松容易將 Modbus TCP 網絡接入 PROFINET 網絡中&#xff0c;方便擴展&#xff0c;不受限制…

分治-歸并排序-逆序對問題

目錄 1.升序&#xff08;以右邊的合并組為基準&#xff09; 2.降序&#xff08;以左邊的合并組為基準&#xff09; 3.逆對序--固定下標 1.升序&#xff08;以右邊的合并組為基準&#xff09; 找出左邊有多少個數比我(nums[right])大 應該在每一次合并之前&#xff0c;進行…

(四)數據檢索與增強生成——讓對話系統更智能、更高效

上一篇&#xff1a;&#xff08;三&#xff09;鏈式工作流構建——打造智能對話的強大引擎 在前三個階段&#xff0c;我們已經搭建了一個基礎的智能對話&#xff0c;并深入探討了輸入輸出處理和鏈式工作流構建的細節。今天&#xff0c;我們將進入智能對話系統的高級階段——數…

JVM虛擬機篇(二):深入剖析Java與元空間(MetaSpace)

這里寫目錄標題 JVM虛擬機篇&#xff08;二&#xff09;&#xff1a;深入剖析Java與元空間&#xff08;MetaSpace&#xff09;一、引言二、全面認識Java2.1 Java的起源與發展歷程2.2 Java的特性2.2.1 簡單性2.2.2 面向對象2.2.3 平臺無關性2.2.4 健壯性2.2.5 安全性2.2.6 多線程…

如何查看 MySQL 的磁盤空間使用情況:從表級到數據庫級的分析

在日常數據庫管理中&#xff0c;了解每張表和每個數據庫占用了多少磁盤空間是非常關鍵的。這不僅有助于我們監控數據增長&#xff0c;還能為性能優化提供依據。 Google Gemini中國版調用Google Gemini API&#xff0c;中國大陸優化&#xff0c;完全免費&#xff01;https://ge…

[Windows] XHS-Downloader V2.4 | 小紅書無水印下載工具 支持多平臺批量采集

[Windows] XHS-Downloader 鏈接&#xff1a;https://pan.xunlei.com/s/VON4ygFN1JcyzLJJIOqIpqodA1?pwdsinu# XHS-Downloader 是一款開源免費的小紅書內容下載工具&#xff0c;支持無水印視頻 / 圖文提取、多鏈接批量處理及賬號作品采集。其核心優勢包括&#xff1a; 全平臺…

6.1 寬度優先搜索算法(BFS)

寬度優先搜索算法(BFS Breadth first search) 又稱廣度優先搜索&#xff0c;這種搜索是逐層的&#xff0c;搜索完上層&#xff0c;才會搜索下一層&#xff0c;直到找到目標節點。 搜索過程如圖中箭頭方向&#xff1a; 【例如】 八數碼難題&#xff1a;利用空格的移動&#xff…

基于LSTM的文本分類2——文本數據處理

前言 由于計算機無法認識到文字內容&#xff0c;因此在訓練模型時需要將文字映射到計算機能夠識別的編碼內容。 映射的流程如下&#xff1a; 首先將文字內容按照詞表映射到成唯一的數字ID。比如“我愛中國”&#xff0c;將“中”映射為1&#xff0c;將“國”映射到2。再將文…

Redis數據結構之ZSet

目錄 1.概述2.常見操作2.1 ZADD2.2 ZRANGE2.3 ZREVRANGE2.4 ZRANGEBYSCORE2.5 ZSCORE2.6 ZCARD2.6 ZREM2.7 ZINCRBY2.8 ZCOUNT2.9 ZMPOP2.10 ZRANK2.11 ZREVRANK 3.總結 1.概述 ZSet和Set一樣也是String類型元素的集合&#xff0c;且不允許重復的成員&#xff0c;不同的是ZSet…

什么是DHCP服務,在生活中的應用是什么?

提起DHCP&#xff0c;不接觸互聯網的可能會很陌生&#xff0c;其實并沒有這么高深&#xff0c;簡明扼要的說就是可以自動為連接的設備分配IP地址&#xff0c;子網掩碼&#xff0c;網關&#xff0c;dns等網絡參數。使連接步驟簡化&#xff0c;從而提高效率。 主要功能&#xff…

2025 AI智能數字農業研討會在蘇州啟幕,科技助農與數據興業成焦點

4月2日&#xff0c;以"科技助農數據興業”為主題的2025AI智能數字農業研討會在蘇州國際博覽中心盛大啟幕。本次盛會吸引了來自全國各地相關部門領導、知名專家學者、行業協會組織&#xff0c;以及縣級市農業企業代表、縣級市農產品銷售商等萬名嘉賓齊聚姑蘇城&#xff0c;…

論文導讀 | SOSP23 | Gemini:大模型 內存CheckPoint 快速故障恢復

本期分享的是一篇SOSP 2023論文&#xff1a; Gemini: Fast Failure Recovery in Distributed Training with In-Memory Checkpoints Zhuang Wang (Rice University), Zhen Jia (Amazon Web Services, Inc.), Shuai Zheng (Amazon Web Services), Zhen Zhang (Amazon Web Servic…

wordpress可視化數據采集Scrapes插件,WP博客網站自動采集發布

源碼介紹 wordpress自動采集Scrapes插件&#xff0c;支持ripro&#xff0c;modown&#xff0c;子比&#xff0c;7b2等多種WordPress主題 支持PHP7.4&#xff0c;PHP8.0及以上不支持 上傳插件到wp-content/plugins目錄&#xff0c;然后解壓 不需要寫采集規則&#xff0c;傻瓜式…