当前位置: 首页 > 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.xdnf.cn/news/1303723.html

相关文章:

  • [论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案
  • JVM执行引擎深入理解
  • 剧本杀小程序系统开发:重构推理娱乐生态
  • 大模型幻觉涉及的违约责任探讨
  • 回路自感和回路互感
  • 补充日志之-配置文件解析指南(Centos7)
  • 德州扑克游戏术语
  • 银河麒麟服务器jar包部署自启动配置
  • 第十八讲:哈希2
  • 神经网络 小土堆pytorch记录
  • 开疆智能Ethernet转ModbusTCP网关连接测联无纸记录仪配置案例
  • 《探秘浏览器Web Bluetooth API设备发现流程》
  • 解决 MySQL 查询速度缓慢的问题
  • 前端更改浏览器默认滚动条样式
  • 13_集合框架
  • Linux815 shell:while
  • 口播数字人免费API调用方案
  • Elasticsearch赋能规章制度智能检索:从海量文档到秒级响应
  • linux-----------------锁
  • mysql启动超时
  • 本地生活|MallBook 分账赋能浙江本地生活服务平台,助力实现资金流转效率与合规性的双提升!
  • 高通vendor app访问文件
  • LeetCode hot 100 day2
  • AAAI爆款:目标检测新范式,模块化设计封神之作
  • 办公效率提升指南:完成重复任务自动化
  • 【自动化测试】通过AI技术如何自动建设接口自动化用例(有关必回)
  • GPT-5 官方前瞻:它将如何重塑你的数字生活?
  • 5G赋能井下“毛细血管”:巴拉素煤矿零散排水点智能监控系统
  • [激光原理与应用-283]:理论 - 波动光学 - 电磁波概述
  • 架构需求规格说明(ARD):项目成功的隐形引擎