一、背景
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博客