当前位置: 首页 > news >正文

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.dtcms.com/a/333219.html

相关文章:

  • 数据结构——顺序表单链表oj详解
  • 2025戴尔科技峰会:破局者的力量与智慧
  • Android 协程实用模板
  • Nature Commun.:6GHz Ku波段无斜视波束成形!光子准TTD技术实现无限分辨率
  • 【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器
  • 数据库SQL
  • FT61F145芯片解密-程序发展
  • 用 1 张 4090 复现 GPT-3.5?——单卡 24 GB 的「渐进式重计算」训练实践
  • 【秋招笔试】2025.08.15饿了么秋招机考-第三题
  • 【BLE系列-第四篇】从零剖析L2CAP:信道、Credit流控、指令详解
  • RK3588消费级8K VR一体机 是否有坑?
  • 【HarmonyOS】鸿蒙应用迁移实战指南
  • AI+脱口秀,笑点能靠算法创造吗
  • rem 适配方案
  • [论文阅读] 软件工程工具 | EVOSCAT可视化工具如何重塑软件演化研究
  • Autosar之CanNm模块
  • redis升级版本迁移数据
  • 一个集成多源威胁情报的聚合平台,提供实时威胁情报查询和播报服务、主动拦截威胁IP,集成AI等多项常用安全类工具
  • 非中文语音视频自动生成中文字幕的完整实现方案
  • 另类pdb恢复方式-2
  • RabbitMQ核心架构与应用
  • C++类与对象核心知识点全解析(下)
  • 《Python列表和元组:从入门到花式操作指南》
  • 系统介绍pca主成分分析算法
  • Kubernetes 集群镜像资源管理
  • 区块链:用数学重构信任的数字文明基石
  • clamav病毒检测
  • 【揭秘红黑树:高效数据结构解析】
  • I/O多路复用特性与实现
  • 全球鲜花速递市场:规模扩张、竞争格局与未来趋势解析