AutoSar AP平臺功能組并行運行原理

在 AUTOSAR Adaptive Platform(AP)中,同一個機器上可以同時運行多個功能組(Function Groups),即使是在單核CPU環境下。其調度機制與進程調度既相似又存在關鍵差異,具體實現如下:


功能組并行運行原理

graph TBOS[Linux/Adaptive OS] -->|調度| EM[執行管理EM]EM -->|進程控制| FG1[功能組A]EM -->|進程控制| FG2[功能組B]EM -->|進程控制| FG3[功能組C]subgraph FG1P1[進程1] -->|狀態機| SM1[SM庫]endsubgraph FG2P2[進程2] --> LT[LT庫]endsubgraph FG3P3[進程3] -->|業務邏輯| Append

在這里插入圖片描述

  • 功能組本質:邏輯進程集合(非物理隔離
  • 并行基礎:多個功能組的進程可在同一OS中并發運行

單核CPU下的調度機制

1. 層級化調度架構
操作系統調度器
e.g. Linux CFS
執行管理調度層
功能組狀態約束
進程啟停控制
  • 第一層:OS調度器
    基于標準Linux調度策略(如CFS)分配CPU時間片給所有進程
  • 第二層:EM調度器
    執行管理(EM)通過功能組狀態控制進程啟停
2. 關鍵調度策略對比
維度傳統進程調度AP功能組調度
調度單位進程/線程功能組狀態約束下的進程
決策依據CPU優先級/時間片功能組狀態 + 進程依賴關系
啟停控制OS直接管理EM按FG狀態啟停進程
實時性保障依賴PREEMPT_RT補丁通過ARA::OSAL抽象層實現確定性響應
3. 單核調度流程示例
OS調度器執行管理(EM)功能組A功能組BP1P2檢測FG狀態變更事件激活Running狀態激活Standby狀態啟動進程P1,P2停止進程P3分配時間片執行(20ms)執行(10ms)跳過P3(已停止)loop[每1ms調度周期]OS調度器執行管理(EM)功能組A功能組BP1P2

功能組狀態對調度的核心影響

1. 狀態驅動的進程啟停
功能組狀態進程控制規則單核CPU資源分配效果
Running啟動所有關聯進程進程參與OS時間片競爭
Standby僅保留監控進程僅占用≤2% CPU
Off終止所有進程釋放100% CPU
2. 狀態切換的調度影響
// EM內部狀態處理偽代碼
void HandleFGStateChange(FG_ID id, State new_state) {// 1. 停止不符合新狀態的進程foreach (Process p in GetProcesses(id)) {if (!IsAllowedInState(p, new_state)) {StopProcess(p);  // 發送SIGTERM}}// 2. 啟動需要運行的進程foreach (Process p in GetStartList(id, new_state)) {if (!IsRunning(p)) StartProcess(p); // 通過fork/exec}// 3. 更新進程調度參數ApplySchedulingPolicy(id, new_state); // 調整優先級/親和性
}

單核環境下的優化技術

1. 進程優先級分層

在這里插入圖片描述

  • 通過 sched_setscheduler() 設置 SCHED_FIFO 優先級
  • 示例:
    PHM監控進程 > 剎車控制進程 > 信息娛樂進程
2. 狀態感知的CPU節流
# EM的CPU調控邏輯
def adjust_cpu_usage(current_state):if current_state == "Emergency":set_cpu_boost(True)  # 關閉節能模式elif current_state == "Standby":set_cpu_freq(600MHz) # 降頻節電
3. 進程組調度(Cgroups)
# 為每個功能組創建cgroup
cgcreate -g cpu:/FG_Powertrain
echo 200000 > /sys/fs/cgroup/FG_Powertrain/cpu.rt_period_us
echo 50000 > /sys/fs/cgroup/FG_Powertrain/cpu.rt_runtime_us

與進程調度的本質區別

特性傳統進程調度AP功能組調度
控制目標最大化CPU利用率滿足功能組狀態約束
啟停時機進程主動創建/退出EM按FG狀態強制啟停
依賴管理無內置依賴解析跨進程依賴圖處理
實時性保障依賴OS實時擴展通過ARA::OSAL抽象硬實時

📌 關鍵結論
功能組調度是在進程調度之上添加的狀態感知層,通過EM作為“智能調度中介”,將功能組狀態語義轉化為具體的進程啟停和資源分配策略。


典型單核調度場景:車輛啟動過程

gantttitle 單核CPU時間線(單位:ms)dateFormat  XaxisFormat %Lsection 功能組狀態Bootloader : 0, 50EM啟動 : 50, 80PowerTrain_Running : 80, 200Cockpit_Standby : 100, 200section 進程CPU占用內核初始化 : 0, 50EM進程 : 50, 200EngineCtrl進程 : 80, 200 : 30%DisplayCtrl進程 : 100, 120 : 5% (啟動后休眠)

在這里插入圖片描述

  1. 0-50ms:Bootloader運行(獨占CPU)
  2. 50ms:EM啟動,檢測FG狀態
  3. 80ms:激活PowerTrain組Running狀態 → 啟動引擎控制進程(占30% CPU)
  4. 100ms:激活Cockpit組Standby狀態 → 短暫啟動顯示進程后休眠

此時單核CPU總利用率:
EM(15%) + EngineCtrl(30%) + DisplayCtrl(5%) = 50%
剩余50% CPU用于其他后臺任務


總結

  1. 功能組可并行運行:通過進程并發實現,與CPU核心數無關
  2. 單核調度本質
    • OS層:標準Linux調度器分配時間片
    • EM層:按功能組狀態啟停進程 + 調整調度參數
  3. 關鍵優勢
    • 狀態驅動調度:Running狀態進程獲資源,Standby狀態進程休眠
    • 安全隔離:關鍵進程可設置高優先級(SCHED_FIFO)
    • 資源優化:通過狀態切換動態調節CPU占用

最終實現效果:即使在單核ARM Cortex-A53(800MHz)上,AP平臺也能同時管理10+功能組,確保剎車控制(50Hz實時任務)與導航系統(非實時任務)協同運行,滿足ASIL-B安全要求。

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

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

相關文章

linux服務器查看某個服務啟動,運行的時間

一 查看服務啟動運行時間1.1 查看啟動時間查看啟動時間&#xff08;精確到秒&#xff09;&#xff1a;ps -p <PID> -o lstart例子如下&#xff1a;ps -p 1234 -o lstart1.2 查詢運行時長ps -p <PID> -o etimeps -p 1234 -o etime1.3 總結

【JS 性能】前端性能優化基石:深入理解防抖(Debounce)與節流(Throttle)

【JS 性能】前端性能優化基石&#xff1a;深入理解防抖&#xff08;Debounce&#xff09;與節流&#xff08;Throttle&#xff09; 所屬專欄&#xff1a; 《前端小技巧集合&#xff1a;讓你的代碼更優雅高效》 上一篇&#xff1a; 【JS 語法】代碼整潔之道&#xff1a;解構賦值…

線性代數 · 直觀理解矩陣 | 空間變換 / 特征值 / 特征向量

注&#xff1a;本文為 “線性代數 直觀理解矩陣” 相關合輯。 英文引文&#xff0c;機翻未校。 如有內容異常&#xff0c;請看原文。 Understanding matrices intuitively, part 1 直觀理解矩陣&#xff08;第一部分&#xff09; 333 March 201120112011 William Gould Intr…

設計模式基礎概念(行為模式):策略模式

概述 策略模式是一種行為設計模式&#xff0c; 它能讓你定義一系列算法&#xff0c; 并將每種算法分別放入獨立的類中&#xff0c; 以使算法的對象能夠相互替換。 主要目的是通過定義相似的算法&#xff0c;替換if else 語句寫法&#xff0c;并且可以隨時相互替換 結構示例 策略…

功能組和功能組狀態的概念關系和區別

在 AUTOSAR Adaptive Platform 中&#xff0c;功能組&#xff08;Function Group&#xff0c;FG&#xff09; 和 功能組狀態&#xff08;Function Group State&#xff09; 是狀態管理&#xff08;SM&#xff09;的核心概念&#xff0c;二者構成靜態邏輯單元與動態行為模式的協…

力扣326:3的冪

力扣326:3的冪題目思路代碼題目 給定一個整數&#xff0c;寫一個函數來判斷它是否是 3 的冪次方。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 整數 n 是 3 的冪次方需滿足&#xff1a;存在整數 x 使得 n 3^x 思路 想要是三的冪次方的話將這個…

前瞻性技術驅動,楓清科技助力制造企業借助大模型完成生產力轉化

麥肯錫于近期發布的《技術趨勢展望2025》更清晰地定義了AI的角色與發展方向。報告在不止一個章節總結了基礎模型加速小型化的趨勢&#xff0c;多模態融合成為主流&#xff1a;企業的模型利用從追求“大而全”轉向“小而精”&#xff0c;高效專用小模型成本降低90%的同時保持性能…

如何遠程連接云服務器上mysql

一&#xff1a;使用系統命令查看端口占用# 查看MySQL進程及其端口sudo netstat -tlnp | grep mysql# 或者使用ss命令sudo ss -tlnp | grep mysql# 查看3306端口&#xff08;MySQL默認端口&#xff09;sudo netstat -tlnp | grep 3306出現如下信息&#xff0c;說明端口3306[root…

今日分享:C++模板(全詳解)

&#x1f60e;【博客主頁&#xff1a;你最愛的小傻瓜】&#x1f60e; &#x1f914;【本文內容&#xff1a;C模板 &#x1f60d; 】&#x1f914; -------------------------------------------------------------------------------------------------------------------…

ramdisk內存虛擬盤(一)——前世今生

1990 年代&#xff1a;前因——“硬盤太慢、驅動太多” 背景&#xff1a;早期 Linux 根文件系統要么在軟盤、要么在 IDE 硬盤&#xff0c;內核把對應的軟盤/IDE 驅動編進去即可順利掛載。矛盾出現&#xff1a;隨著 SCSI、PCMCIA、USB、RAID 控制器等百花齊放&#xff0c;如果把…

ETH持續上漲推動DEX熱潮,交易活躍度飆升的XBIT表現強勢出圈

BOSS Wallet 8月15日訊&#xff0c;隨著ETH價格在過去24小時內強勢拉升至4300美元&#xff0c;整個加密市場再度掀起漲勢狂潮&#xff0c;鏈上交易活躍度空前高漲。其中&#xff0c;去中心化交易所平臺迅速成為市場焦點&#xff0c;其平臺活躍度與交易量雙雙上漲&#xff0c;吸…

Stand-In - 輕量級人物一致性視頻生成 高保真視頻人臉交換 ComfyUI工作流 支持50系顯卡 一鍵整合包下載

Stand-In 是一個輕量級、即插即用的身份保護視頻生成框架&#xff0c;只需要上傳一張人物照片&#xff0c;加上一段提示詞&#xff0c;即可生成高度一致性的高保真人物視頻&#xff0c;人臉相似度和自然都幾乎達到100%還原水平。 Stand-In 能把任何一張人臉&#xff08;甚至動漫…

vue3相關基礎

1、ref和reactive的區別兩者都是響應式數據的聲明。Reactive只適用于非基本數據類型&#xff0c;如對象&#xff0c;數組等。而ref是兼容適用于reactive的的數據類型的以及其他數據&#xff0c;靈活性較高。ref聲明的變量取值時需要.value。在<template></template>…

云手機存儲和本地存儲的區別

云手機存儲通常指云存儲&#xff0c;即數據存儲在云端服務器&#xff0c;本地存儲則是將數據存儲在用戶設備硬件中&#xff0c;主要區別體現在存儲位置、訪問方式、依賴條件等多個方面&#xff0c;具體如下&#xff1a;本地存儲主要是將數據存儲在用戶自有設備的物理硬件中&…

【科研繪圖系列】R語言繪制三維曲線圖

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖 系統信息 參考 介紹 【科研繪圖系列】R語言繪制三維曲線圖 加載R包 library(tidyverse) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2) library(grid

python常用包

以下按類別列舉10個常用Python包&#xff0c;并以一句話概括其核心作用&#xff1a; 一、數據分析與科學計算 NumPy&#xff1a;提供高性能多維數組及數學運算&#xff0c;是數值計算的基礎庫。Pandas&#xff1a;通過DataFrame結構實現高效表格數據清洗、分析與處理。SciPy&am…

“ 船新版本 ”

在 GeeLark 最新版本中&#xff0c;增強了 AIGC 生成能力以及 AI 協助自定義任務開發功能&#xff0c;給用戶優化構建從內容生產到運營自動化的完整技術鏈&#xff0c;為跨境電商及企業用戶提供更完善的智能化解決方案&#xff0c;效率翻倍輕松出海。 AIGC 接入 MiniMax-Hailuo…

力扣 —— 二分查找

搜索插入位置 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 算法思想&#xff1a; class Solution(object):def searchInsert(self, nums, target):left0 rightlen(nums)-1while left < right :mid (left right) // 2if nums[mid] < target:left mid 1…

USB ADB 簡介

概念 ADB 是 Android 平臺的 調試橋接協議&#xff0c;允許主機&#xff08;PC&#xff09;與 Android 設備通信。 通過 ADB&#xff0c;開發者可以執行命令、調試應用、傳輸文件、訪問 shell、調試 logcat 等。 ADB 運行在 USB 或 TCP/IP 上&#xff0c;但最常用的是 USB 連…

【Golang】:數據類型

目錄 1. 基本數據類型 1.1 布爾類型 1.2 整數類型 1.3 浮點數類型 1.4 復數類型 1.5 字符類型 1.6 字符串類型 2. 類型轉換 2.1 基本數據類型 → string 2.2 string → 基本數據類型 3. 常量 1. 基本數據類型 1.1 布爾類型 Go中的布爾類型取值為true或false&#…