学习笔记: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.mzph.cn/web/11469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十四天:PHP 开发,输入输出类留言板访问 IPUA 头来源

1.PHP-全局变量$_SERVER 2.MYSQL-插入语法INSERT 3.输入输出-XSS&反射&存储 4.安全问题-XSS跨站&CSRF等 1.输入输出类安全问题 反射性xss 这个先准备一个数据,随便弄一个表名字,在随便弄一点数据存入即可 作为连接的数据库&#xff0c…

排序-归并排序(merge sort)

归并排序(Merge Sort)是一种分而治之的算法,它将原始数组分成越来越小的子数组,直到每个子数组只有一个元素,然后将这些子数组两两合并,过程中保持排序状态,最终合并成一个完全有序的数组。归并…

《一》Word文字编辑软件---架构设计分析

1,简单介绍 今天,我们来模拟offic软件中的word文档,运行如图: 运行程序后会出现主界面,顶端的菜单栏包括“文件”“编辑”“格式”“窗口”和“帮助五个主菜单。 菜单栏下面是工具栏,包含了系统常用的功能按…

如何判断海外住宅ip的好坏?

在海外IP代理中,住宅IP属于相对较好的资源,无论是用于工作、学习、还是娱乐,都能得到较好的使用效果。作为用户,该如何判断海外住宅IP的好坏呢? 稳定性与可靠性:海外住宅IP相比动态IP地址,通常具…

Java全局异常处理,@ControllerAdvice异常拦截原理解析【简单易懂】

https://www.bilibili.com/video/BV1sS411c7Mo 文章目录 一、全局异常处理器的类型1-1、实现方式一1-2、实现方式二 二、全局异常拦截点2-1、入口2-2、全局异常拦截器是如何注入到 DispatcherServlet 的 三、ControllerAdvice 如何解析、执行3-1、解析3-2、执行 四、其它4-1、设…

电脑提示找不到ffmpeg.dll无法继续执行代码怎么办?

电脑提示找不到找不到ffmpeg.dll无法继续执行代码怎么办,有什么好的解决办法,出现这样的弹出就会导致软件无法打开或者是异常关闭,找不到dll文件,是一个非常重要的电脑使用问题,会给使用者带来许多的麻烦。那么找不到d…

LeetCode746:使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 代码 …

MongoDB和AI 赋能行业应用:制造业和汽车行业

欢迎阅读“MongoDB和AI 赋能行业应用”系列的第一篇。 本系列重点介绍AI应用于不同行业的关键用例,涵盖制造业和汽车行业、金融服务、零售、电信和媒体、保险以及医疗保健行业。 随着人工智能(AI)在制造业和汽车行业的集成,传统…

Tableau学习2.0版——复习

官网下载链接:https://www.tableau.com/zh-cn/support/releases 学生账户申请链接:https://www.tableau.com/zh-cn/academic/students。直接去学信网下载学籍在线验证作为申请证明。 目录 1、可视化原理 2、基础图表制作 2.1 对比分析(比…

@游戏行业er!MongoDB广州线下沙龙邀您报名!

随着游戏和应用程序的发展,数据变得越来越重要。在为您的下一个游戏选择数据库时,数据库管理者常常会面对灵活性、可扩展性、可靠性、运营效率等问题或挑战。 MongoDB在游戏开发领域有着广泛的应用,灵活数据模型可以存储和处理各种类型的数据…

PHP 提取数组中的特定的值

需求: 前端展示: (1)之前的页面: (2)修改后的页面: 之前接口返回的数据 : 解决办法:提取tags 中的 ’约 的数组 添加到一个新的数组中去 1:一开…

2024年去除视频水印的5种方法

如果你从事电影剪辑或者视频编辑工作,你经常需要从优酷、抖音、TikTok下载各种视频片段……。 通常这些视频带有水印和字幕。一些免费软件如CapCut、canva、Filmora也会给你制作的视频打上水印,这些水印嵌入在视频内部。 2024年去除视频水印的5种方法 …

Mysql-用户变量的声明与使用

#声明变量 #1.标识符不能以数字开头 #2.只能使用_或$符号,不能使用其他符号 #3.不能使用系统关键字 setuserName刘德华; select userName:刘青云;#将赋值与查询结合 #查询变量、使用变量,匿名的时候建议加上as select userName as 读取到的userName变量…

Golang面向对象编程(二)

文章目录 封装基本介绍封装的实现工厂函数 继承基本介绍继承的实现字段和方法访问细节多继承 封装 基本介绍 基本介绍 封装(Encapsulation)是面向对象编程(OOP)中的一种重要概念,封装通过将数据和相关的方法组合在一起…

Java转Kotlin调用JNI方法异常

一、背景 Java调用JNI方法时没有任何问题,但是使用Java转Kotlin以后出现了崩溃异常:A java_vm_ext.cc:597] JNI DETECTED ERROR IN APPLICATION: jclass has wrong type: 校验参数后没有任何变化,经过分析验证找到解决方案 二、原因…

若依生成树表和下拉框选择树表结构(在其他页面使用该下拉框输入)

1.数据库表设计 生成树结构的主要列是id列和parent_id列,后者指向他的父级 2.来到前端代码生成器页面 导入你刚刚写出该格式的数据库表 3.点击编辑,来到字段 祖籍列表是为了好找到直接父类,不属于代码生成器方法,需要后台编…

【XSRP软件无线电】基于软件无线电平台的QPSK频带通信系统设计

目录: 目录: 一、绪论 1.1 设计背景 1.2 设计目的 二、系统总体方案 2.1 专题调研题目 2.2 调研背景 2.3 设计任务解读 2.4 设计原理 2.4.1 原理框图 2.4.2 功能验证 三、软件设计 3.1 程序解读 3.2 程序设计 3.3 仿真结果: 四、程序代码分析…

网络基础-SSH协议(思科、华为、华三)

SSH(Secure Shell)是一种用于安全远程访问和安全文件传输的协议。它提供了加密的通信通道,使得用户可以在不安全的网络上安全地远程登录到远程主机,并在远程主机上执行命令、访问文件以及传输文件,本篇主要讲解命令执行…

SpringAI集成本地AI大模型ollama(调用篇)非常简单!!

一,前提准备本地ai模型 1,首先需要去ollama官网下载开源ai到本地 网址:Ollama 直接下载到本地,然后启动ollama 启动完成后,我们可以在cmd中执行ollama可以看到相关命令行 2, 下载ai moudle 然后我们需要…

基于C#开发web网页模板流程-登录界面

前言,首先介绍一下本项目将要实现的功能 (一)登录界面 实现一个不算特别美观的登录窗口,当然这一步跟开发者本身的设计美学相关,像蒟蒻博主就没啥艺术细胞,勉强能用能看就行…… (二&#xff09…