优秀网页翻译:关于您的下一个汽车友好型原型
關于您的下一個汽車友好型原型
- 使用 DLT 進行日志記錄
- 使用 WireShark 檢查 DLT 數據包
- DLT 和文件傳輸
- DLT 和核心轉儲
- DLT注入
- 使用 SOME/IP 進行遠程控制
- 使用 DLT 跟蹤 SOME/IP
- 使用 WireShark 檢查一些/IP 數據包
- 帶有 AVTP 的視頻流
- 使用 WireShark 檢查 AVTP 數據包
- 與 gPTP 的時鐘同步
- 使用 WireShark 檢查 PTP 數據包
- 其他注意事項
- 使用軟件包更新
- 開源許可證
- 使用 clang 進行更好的代碼分析
- 系統和看門狗
- 構建靜態庫
原文鏈接:
https://medium.com/inatech/about-your-next-automotive-friendly-prototype-53ce5f2923e7
關于您的下一個汽車友好型原型
你有很酷的項目想法,你想讓原型更兼容汽車世界嗎?這里有一些設計選擇供您選擇……當然,一些在微控制器上運行裸機的老式硬實時 C 代碼總是會重新點燃汽車工程師的心,但對于快速原型設計來說,它絕對不是最方便的目標。另一方面,不幸的是,使用基于 Linux 的目標不是實時的,但可以利用許多開源庫。
本文使用 inastitch 作為示例項目,通過一個實際示例來解釋每個庫是如何使用的。
上圖:inastitch 3D 打印外殼中的 3 相機硬件原型
Inastitch 是數字后視鏡的原型,通過將 3 個實時視頻流拼接成一個更寬的流。每臺攝像機都是獨立的并連接到網絡。
使用 DLT 進行日志記錄
雖然 LTTng 是登錄開源世界的著名選擇,但 DLT 更面向汽車。 DLT 由博世設計為 Autosar 標準,請參閱這份冗長的規范 PDF。
使用 DLT 的一個設計目標是擁有一個跟蹤,其中包含調試由多個 ECU 組成的系統所需的一切。當需要對特定行為進行解釋時,我們的想法是為專家提供單個 DLT 跟蹤文件,該文件應包含所需的所有內容,而不是總是要求更多的跟蹤。
在 inastitch 中,按照 DLT 術語,每個攝像頭都是一個 ECU,每個二進制文件是一個不同的 APP。上下文 (CTX) 遵循以下模式:
- APP:MAIN 用于一般信息,例如二進制版本(即 git tag)和 git hash 以跟蹤相應的源代碼。啟動參數也記錄在這里。
- APP:FRAM 用于匯總視頻幀信息。單幀不應該被追蹤,因為它的頻率太高并且會超載追蹤預算。
- SYS:JOUR 用于系統日志。整個目標的 Linux 系統日志被復制到 DLT。它將有助于檢查來自 Linux 系統的副作用。
上圖:顯示實時跟蹤的 DLT 查看器
要跟蹤的其他有趣信息(未在 inastitch 中實現):
- 總體和每個進程的 CPU 負載和內存分配。它將有助于調試無限循環和內存泄漏。
DLT 開源實現是:https://github.com/GENIVI/dlt-daemon
許可證:Mozilla 公共許可證 (MPL 2.0)。
使用 WireShark 檢查 DLT 數據包
最近在 WireShark 3.2.0 版本中添加了用于 DLT 的數據包解析器。
上圖:使用 WireShark 解碼 DLT 幀
注意:
每個 ECU 上的 dlt-daemon 將跟蹤保存在本地緩沖區中,直到 dlt-client 連接。如果沒有 DLT 查看器(例如)正在讀取跟蹤,則不會有任何 DLT 通信需要解碼。同樣,客戶端可以選擇不同級別的跟蹤,并且只有那些跟蹤將通過網絡發送。
DLT 和文件傳輸
Inastitch 具有生成調試圖像的校準功能。與其將它們寫入 /tmp 并期望通過 SSH 獲取它們,不如將它們轉儲到 DLT 跟蹤中更實際。
在 DLT 查看器中啟用 FileTransfer 插件后,可以從跟蹤本身中提取文件。
上圖;顯示文件傳輸的 DLT 查看器
DLT 和核心轉儲
同樣,為了讓所有內容都有一個單一的跟蹤文件,在 DLT 中嵌入壓縮的核心轉儲也很方便。
請參閱 DLT 構建參數 WITH_DLT_COREDUMPHANDLER 和此 wiki 頁面。
TODO:在 inastitch 中啟用 DLT coredump 處理程序。
DLT注入
對于更復雜的調試,可以使用更多跟蹤(超出跟蹤預算)和更多檢查(即運行時斷言)的調試模式來擴展應用程序。這些調試功能通常可以通過使用特殊參數(如 --verbose)重新啟動應用程序來啟用。
對于更適合汽車的解決方案,我寧愿建議通過 DLT 注入啟用這些調試模式。 DLT 通信不僅僅以一種方式工作(即,從 dlt-daemon 到 dlt-client)。來自客戶端的請求(也稱為注入)可以轉發到應用程序。
這種方法的優點是:
- 不需要對目標的 SSH 訪問
- 無需重新啟動應用程序即可啟用或禁用調試模式
- 如果有人稍后分析,所有內容都會記錄在跟蹤中
TODO:在 inastitch 中添加一些 DLT 注入。
使用 SOME/IP 進行遠程控制
SOME/IP 是 BMW 創建的一個 RPC 框架。它也是博世支持的 Autosar 標準。請參閱此規格 PDF。
SOME/IP 可以通過在所有相關節點上定義所有方法和事件來靜態工作,但這種架構難以維護和更新。
這個框架的一個優點是服務發現(又名 SD)。它使設計可以由來自不同供應商的應用程序提供的界面變得更加容易,這些應用程序可能以不同的配置運行。
在 inastitch 中,SOME/IP 用于控制相機設置。所有三個攝像頭都訂閱了拼接板發布的遠程事件。當請求的相機設置為 ch
受拼接器應用程序的影響,SOME/IP 負責通知所有訂閱者。
SOME/IP 開源實現是:https://github.com/GENIVI/vsomeip
許可證:Mozilla 公共許可證 (MPL 2.0)。
使用 DLT 跟蹤 SOME/IP
通過啟用 vsomeip.json 中的跟蹤和 dlt 選項,可以在 TC 上下文中記錄 DLT 中的每個 SOME/IP 通信。不幸的是,DLT 查看器的開源版本沒有附帶 SOME/IP 解碼器插件。
上圖:使用 DLT 查看器顯示 SOME/IP 事件
使用 WireShark 檢查一些/IP 數據包
最近在 WireShark 3.2.0 版本中添加了 SOME/IP 的數據包解析器。
上圖:使用 WireShark 解碼 SOME/IP 事件
與 DLT 查看器不同,WireShark 將解碼一些/IP 請求和事件。
帶有 AVTP 的視頻流
AVB 是為專業音頻/視頻世界創建的標準。它現在在汽車領域獲得了很大的吸引力。 AVTP 是 AVB 流的傳輸協議。
由于 AVB 網絡用于既不是視頻也不是音頻的通信,因此添加了新功能并稱為 TSN。它代表時間敏感網絡。
AVB/TSN 網絡是標準以太網的擴展,增加了對從一個或多個 Talker 到一個或多個 Listener 的流數據包傳送的保證。
在 inastitch 中,所有三個攝像頭的視頻幀都以同步方式發送,以便可以在不緩沖的情況下拼接它們(即不增加延遲)。
使用 WireShark 檢查 AVTP 數據包
上圖:在 WireShark 上使用自定義解析器解碼 UDP/AVTP
注意:AVTP 可以嵌入到原始以太網中。為了節省 inastitch 的實施工作,流通過 UDP 和 IP 發送。
這是官方指定的替代方案。
與 gPTP 的時鐘同步
在 AVB 世界中,時鐘同步對于提供音頻/視頻流至關重要。 gPTP 是 PTP 的特殊配置文件,即精確時間協議。
在 inastitch 中,PTP 在攝像頭板之間同步 Linux 系統時鐘。然后將該時鐘用作幀對齊的參考。
使用 WireShark 檢查 PTP 數據包
從 1.0.0 版開始,WireShark 中提供了用于 PTP 的數據包解析器。
上圖:使用 WireShark 解碼 PTP
注意:PTP 在 inastitch 中配置為通過 UDP 運行,但它也可以在原始以太網中運行。
其他注意事項
使用軟件包更新
我知道,通過電子郵件發送壓縮和靜態構建的二進制文件是最好的 😅
在 inastitch 中,相機和拼接器應用程序都作為 Debian 軟件包提供。使用 CMake 的 CPack 擴展可以輕松生成這樣的包。該解決方案與 Raspberry PI OS 很好地集成在一起。
如果操作系統是從頭開始構建的(例如,yocto linux recipes),另一個更輕量級的選擇是使用 OPKG 作為包管理器。
開源許可證
開源軟件很棒,但有些許可證會迫使您發布源代碼,有時還會發布 ECU 固件的構建工具。
在 inastitch 中,庫依賴關系被簡化為具有許可許可證的簡單庫。
例如:
帶有許可 Boost 許可證的 libboost 帶有 BSD 許可證的 libturbojpeg 帶有 MPL 許可證的 libdlt 和 libvsomeip 帶有 BSD 許可證的 OpenCV使用 clang 進行更好的代碼分析
許多項目都是用 gcc 構建的。
即使最終的二進制文件總是使用 gcc 構建,保留使用 clang 構建的選項也會帶來使用 Google Sanitizer 的可能性,例如 MemorySanitizer(又名 MSAN)。
系統和看門狗
Systemd 具有限制服務的內存使用或其他資源的選項。也可以有一個由 systemd 管理的看門狗。
構建靜態庫
Inastitch 將其大部分依賴項構建為靜態庫。因此,stitcher 二進制文件無需修改即可在 Raspberry Pi 和 Nvidia Jetson Nano 上運行。
總結
以上是生活随笔為你收集整理的优秀网页翻译:关于您的下一个汽车友好型原型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书:在别人的盯梢儿和嚼舌根中茁壮成长
- 下一篇: 趣店PHP面经_腾讯助理PHP开发工程师