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