學習筆記: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.pswp.cn/web/11469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11469.shtml
英文地址,請注明出處:http://en.pswp.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)在制造業和汽車行業的集成,傳統…

CDN的工作原理及流程

CDN(Content Delivery Network,內容分發網絡)是一種構建在數據網絡上的分布式內容分發網絡。 CDN利用全局負載均衡技術,將用戶的訪問請求指向離用戶最近且工作正常的流媒體服務器上,由流媒體服務器直接響應用戶的請求…

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在游戲開發領域有著廣泛的應用,靈活數據模型可以存儲和處理各種類型的數據…

JPA ENTITY EXTEND

1. Overview Relational databases don’t have a straightforward way to map class hierarchies onto database tables. To address this, the JPA specification provides several strategies: MappedSuperclass – the parent classes, can’t be entitiesSingle Table …

webpack處理js和css模塊化導入導出示例:

webpack默認并不能處理js模塊化的導入和導出,依賴于ts-loader和babel-loader webpack.config,js module.exports {entry: ./src/index.ts,output: {filename: main.js,},mode: development, // 或者 productionmodule: {rules: [{test: /\.ts/,exclude: /(node_modules)/,use:…

二維平移矩陣 (2D translate matrix)

2D translate matrix 推薦閱讀正文推薦閱讀 矢量旋轉矩陣 正文 之前我們介紹了矢量旋轉矩陣的形式,這里我們來介紹一下平移矩陣的形式。比如,我們我們有一個點,其坐標為 (0,1)。那么我們如何操作才能夠將這個點沿著 x 軸正方向平移 1 個單位長度呢? 這里我們以向右移動…

vj題單 P4552 [Poetize6] IncDec Sequence

思路: 一次操作:選一個區間[l, r],把這個區間的數都加1或者都減1,可以將求該數列的差分數組b然后來進行該操作 一次操作的兩種種情況:(l可以等于r) 1.b[l]1 b[r1]-1 2.b[l]-1 b[r1]1 Q1:…

PHP 提取數組中的特定的值

需求: 前端展示: (1)之前的頁面: (2)修改后的頁面: 之前接口返回的數據 : 解決辦法:提取tags 中的 ’約 的數組 添加到一個新的數組中去 1:一開…

【CPP】多線程并發—— Mutex 和 Lock

#include <iostream> #include <thread> #include <mutex> #include "my_utils.h"std::mutex mtx; // 全局互斥鎖 int shared_data 0; // 共享數據 void increment() { for (int i 0; i < 10; i) { std::cout <<"incre…

2024年去除視頻水印的5種方法

如果你從事電影剪輯或者視頻編輯工作&#xff0c;你經常需要從優酷、抖音、TikTok下載各種視頻片段……。 通常這些視頻帶有水印和字幕。一些免費軟件如CapCut、canva、Filmora也會給你制作的視頻打上水印&#xff0c;這些水印嵌入在視頻內部。 2024年去除視頻水印的5種方法 …

Mysql-用戶變量的聲明與使用

#聲明變量 #1.標識符不能以數字開頭 #2.只能使用_或$符號&#xff0c;不能使用其他符號 #3.不能使用系統關鍵字 setuserName劉德華; select userName:劉青云;#將賦值與查詢結合 #查詢變量、使用變量&#xff0c;匿名的時候建議加上as select userName as 讀取到的userName變量…

Golang面向對象編程(二)

文章目錄 封裝基本介紹封裝的實現工廠函數 繼承基本介紹繼承的實現字段和方法訪問細節多繼承 封裝 基本介紹 基本介紹 封裝&#xff08;Encapsulation&#xff09;是面向對象編程&#xff08;OOP&#xff09;中的一種重要概念&#xff0c;封裝通過將數據和相關的方法組合在一起…