学习笔记:Adaptive Platform(AP)适配到RTOS

一、背景

1、AP版本

  • Adaptive Platform AUTOSAR R20-11版本标准
  • 支持C++14。
  • CM模块支持DDS、SOME/IP协议

2、RTOS

RTOS-A核,当前完全支持POSIX PSE51、POSIX PSE52接口,POSIX PSE53部分支持,POSIX PSE54基本不支持。详细接口参考:

  • 学习笔记:IEEE 1003.13-2003【POSIX PSE51接口列表】-CSDN博客
  • 学习笔记:IEEE 1003.13-2003【POSIX PSE52接口列表】-CSDN博客
  • 学习笔记:IEEE 1003.13-2003【POSIX PSE53接口列表】-CSDN博客
  • 学习笔记:IEEE 1003.13-2003【POSIX PSE54接口列表】-CSDN博客

二、框架

1、OS-AP结构图

从上到下,主要分为3层:

1)AP层

2)适配层

3)OS系统层

2、关键技术点:

AP是基于类Unix操作系统环境,它的架构为面向对象,编程语言采用C++,移植到RTOS上,存在以下几个技术点:

1)基于RTOS自己的编译构建系统,编译AP各个模块和依赖的C++开源库

2)当前AP基于C++14,RTOS标准库对只支持到C++11,RTOS需要升级支持部分C++14特性

3)AP、C++开源库部分功能需要裁剪,比如:

  • RTOS不支持用户组等多用户场景,需要裁剪成单用户
  • AP中EM模块具体功能和系统(linux的cgroup 子系统)强相关,RTOS没有cgroup 子系统,需要裁剪成和RTOS对应
  • 等等

4)POSIX PSE53、POSIX PSE54接口不支持:

  • POSIX PSE53:fork等,不支持“多进程”,OS系统实现难度比较大
  • POSIX PSE54:dlopen、dlsym、dlclose、dlerror,不支持“动态加载”,OS系统实现难度比较大
  • 等等

三、AP层

1、基于RTOS的编译构建系统编译出AP各模块

2、C++标准库差异适配

AP使用是Linux上标准C++库:libstdc++(GNU C++ 标准库),RTOS使用的是自己的标准C/C++库。

比如:基础类型类型coretype需要对下面两类进行修改

1)GNU C++使用到的_GLIBCXX_相关宏不支持

2)std::__开头基本是对C++标准的扩展,需要替换RTOS对应标准实现

3、功能裁剪

对于RTOS不支持的POSIX接口进行功能裁剪,比如多用户等

四、适配层

1、扩展OSAL

AP调用系统调用统一通过OSAL实施,OSAL就是基于POSIX标准进行封装

2、移植C++开源库

AP使用C++开源库,需要将这些C++开源库移植到RTOS上

3、功能裁剪

根据RTOS特性,需要对功能进行适配,比如线程、文件系统,网络等等

五、OS系统层

1、标准库升级

标准库中完善对C++14新特性的支持

2、POSIX接口升级

开发AP和适配层整理出缺少的POSIX接口,完善OS对POSIX PSE53、PSE54接口的支持

六、参考

1、Adaptive Platform AUTOSAR

参考:学习记录:AP & CP AUTOSAR-CSDN博客

2、C++ 14新特性

参考:学习笔记:C/C++、VSCode、在线网址-CSDN博客

3、POSIX接口

参考:学习笔记:IEEE 1003.13-2003(POSIX实时与嵌入式规范)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/621487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《三》菜单栏_工具栏_状态栏动作与实现

上期我们创建了辣么多的动作,那么这次我们要是开始实现这些动作,撸起袖子来吧: //菜单动作(ACtion)QAction *newAct;//新建QAction *openAct;//打开QAction *saveAct;//保存QAction *saveAsAct;//另存为QAction *prin…

学习java

在实验室看见这本书,无聊看了下,写出了第一个java代码 成功下载了eclipse并且汉化。 写了自己的第一个java程序: package ttttt;public class ttttt {public static void main(String[] args) {System.out.println("hello world")…

DS高阶:B树系列

一、常见的搜索结构 1、顺序查找 时间复杂度:O(N) 2、二分查找 时间复杂度:O(logN) 要求:(1)有序 (2)支持下标的随机访问 3、二叉搜索树(BS树) 时间复杂…

免费的国内版 GPT 推荐,5个国产ai工具

提起AI,大家第一个想到的就是GPT。 虽然它确实很厉害,但奈何于我们水土不服,使用门槛有些高。 不过随着GPT的爆火,现在AI智能工具已经遍布到各行各业了,随着时间的推移,国内的AI工具也已经“百花盛放”了…

哈希重要思想——位图详解

一,概念 所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。 为了方便理解我们引入一道面试题, 给40亿个不重复的无符号整数,没排过序。给一个无…

UniAD大模型开路,智能车驶入AGI时代

作者 |老缅 编辑 |德新 在刚刚结束不久的北京车展上,除一众明星车型亮相,供应链企业也开始大秀肌肉,其中尤其以端到端大模型为代表,焕新一代的智驾技术栈掀起了新一轮热潮。 作为首个提出感知决策一体化自动驾驶通用模型的公司&…

C++学习笔记3

A. 求出那个数 题目描述 喵喵是一个爱睡懒觉的姑娘,所以每天早上喵喵的妈妈都花费很大的力气才能把喵喵叫起来去上学。 在放学的路上,喵喵看到有一家店在打折卖闹钟,她就准备买个闹钟回家叫自己早晨起床,以便不让妈妈这么的辛苦…

创新点!CNN与LSTM结合,实现更准预测、更快效率、更高性能!

推荐一个能发表高质量论文的好方向:LSTM结合CNN。 LSTM擅长捕捉序列数据中的长期依赖关系,而CNN则擅长提取图像数据的局部特征。通过结合两者的优势,我们可以让模型同时考虑到数据的时序信息和空间信息,减少参数降低过拟合风险&a…

STM32_HAL_RTC_解决恢复电源时再一次初始化

1问题 板子再次恢复电源时直接初始化了时间 2解决思路 在初始化函数(MX_RTC_Init();)中增加判断,判断是否是二次初始化 将值放入备份存储其中 3问题图 4解决后的源码 /* RTC init function */ void MX_RTC_Init(void) {/* USER CODE BE…

C++青少年简明教程:C++数据类型

C青少年简明教程:C数据类型 数据类型定义了变量可以存储哪些类型的数据,以及对这些数据可以进行哪些操作。C提供了丰富的数据类型供开发者使用。 下面是 C 中常见的数据类型: ★整型(int):整数类型的数据…

零一万物发布千亿参数模型Yi-Large,李开复呼吁关注TC-PMF,拒绝Ofo式烧钱打法

5月13日,在零一万物成立一周年之际,零一万物 CEO 李开复博士携带千亿参数 Yi-Large 闭源模型正式亮相,正式进军全球 SOTA 顶级大模型之首,在斯坦福最新的 AlpacaEval 2.0 达到全球大模型 Win Rate 第一。除此之外,零一…

【代码随想录】【动态规划】背包问题 - 完全背包

完全背包 模板:完全背包问题 问题描述 完全背包问题与01背包问题唯一的区别在于: 在01背包中:每个物品只有一个,要么放入背包,要么不放入背包在完全背包中:每个物品有无限多个,可以不放入背…

迪安诊断数智中心战略与PMO负责人徐黎明受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 迪安诊断技术集团股份有限公司数智中心战略与PMO负责人徐黎明先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“软件研发项目管理指标体系建设实践”。大会将于6月29-30日在北京举办,敬请关注! …

Rx(Reactive Extensions)的由来

既然我们已经介绍了响应式编程,现在是时候了解我们的明星了:响应式扩展,通常简称为Rx。微软开发了Reactive扩展库,使其易于处理事件流和数据流。在某种程度上,时变值本身就是一个事件流;每个值更改都是一种类型的事件它会更新依赖…

电流反馈型运放设计要点总结

目录 前言 基本架构 CFB和VFB运算放大器的差异 总结:电流反馈(CFB)与电压反馈(VFB) 前言 最近一个项目用到THS3491,发生了震荡,这是一个电流型反馈运放,借此机会,温故一下,电流运放的相关设计知识 基本架…

JAVA远程调试步骤

1.生成参数 2.复制到启动命令中 3.打jar包运行到远程服务器中 4.开始远程调试

【数据结构与算法 刷题系列】环形链表的约瑟夫问题

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 目录 一、问题描述 二、解题思路详解 解题思路 解题步骤 三、C语言代码…

NSSCTF | [LitCTF 2023]我Flag呢?

这道题没啥好说的,题目标签为源码泄露,我们直接CtrlU查看网页源码就能在最后找到flag 本题完

Linux---windows 机器和远端的 Linux 机器如何通过 XShell 传输文件

一、关于rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 Xshell 传输文件. 二、下载rzsz软件 用root输入命令: sudo yum install -y lrzsz下载完成: 三、如何传输 有图形化界面 1、从Windows机器传输给远端Linux机器 ① 直接拖拽 直接将…

从编辑器角度来理解定义和声明

报错,在函数里面(包括int main函数)extern声明会和定义冲突 下面这种写法就很ok 静态变量的反汇编 #include<iostream> using namespace std; extern int c; int ma