一、項(xiàng)目介紹
隨著小米宣布造車,當(dāng)下“軟件定義汽車”的趨勢(shì)如火如荼,autosar的全稱Automotive Open System Architecture,即汽車開(kāi)放軟件架構(gòu),這正如TCP/IP對(duì)網(wǎng)絡(luò)進(jìn)行統(tǒng)一,autosar是對(duì)汽車軟件技術(shù)的統(tǒng)一,TCP/IP制定的初衷是為統(tǒng)一網(wǎng)絡(luò)標(biāo)準(zhǔn)從而誕生了今天的互聯(lián)網(wǎng),而AUTOSAR的制定是為實(shí)現(xiàn)汽車電子軟件的統(tǒng)一從而實(shí)現(xiàn)汽車電子軟件的復(fù)用。本項(xiàng)目是基于autosar3.1的開(kāi)源代碼arctic core,在此基礎(chǔ)上,完成在n32g45x上的mcal驅(qū)動(dòng),適配RT-Thread內(nèi)核為autosar的操作系統(tǒng)。
目前已完成mcal的mcu驅(qū)動(dòng),autosar的osek操作系統(tǒng)已經(jīng)能在n32g45x上正常調(diào)度,移植rtthread到arctic core,但是在適配OSEK/VDX的接口過(guò)程中,發(fā)現(xiàn)這個(gè)適配工作不是一兩個(gè)月所能完成,因?yàn)閛sek/vdx的標(biāo)準(zhǔn)非常嚴(yán)格,如果對(duì)OSEK/VDX感興趣的小伙伴可以一起加入rtthread對(duì)osek/vdx的適配。
二、簡(jiǎn)述AUTOSAR及OSEK/VDX
2.1 AUTOSAR的分層模型及各層簡(jiǎn)述
AUTOSAR從上往下分為應(yīng)用層、RTE層和基礎(chǔ)軟件層(BSW)。
應(yīng)用層由多個(gè)軟件組件SWC組成,每個(gè)SWC是具有一定功能的模塊,如汽車發(fā)動(dòng)機(jī)控制邏輯,這些模塊可以由matlab的autosar軟件包依據(jù)模型進(jìn)行設(shè)計(jì);RTE全稱Runtime Environment,即運(yùn)行時(shí)環(huán)境,它的內(nèi)部是一條autosar框架定義的虛擬功能總線(VFB),SWC、BSW通過(guò)這條虛擬功能總線進(jìn)行通信。
BSW從上到下分為服務(wù)層、ECU抽象層、MCU抽象層,分層的目的是為了實(shí)現(xiàn)各層的復(fù)用和對(duì)下一層的隔離,這正如RT-Thread的分層思想那樣,RT-Thread可以適配不同的MCU就是因?yàn)椴捎昧蓑?qū)動(dòng)和設(shè)備分離的策略,RT-Thread的同一個(gè)設(shè)備因?yàn)樽?cè)了不同的驅(qū)動(dòng)就可以驅(qū)動(dòng)不同的MCU。在AUTOSAR中,和MCU有關(guān)的一層是MCU抽象層,及MCAL,用RTT的驅(qū)動(dòng)和設(shè)備分離的思想來(lái)理解autosar的mcal就是同一個(gè)ECU抽象層因?yàn)樽?cè)了不同的MCU驅(qū)動(dòng)就可以驅(qū)動(dòng)不同的MCU。在autosar的成員中就有nxp這樣的芯片原廠提供autosar的mcal。
2.2 簡(jiǎn)述OSEK/VDX接口api
在autosar的服務(wù)層中有一個(gè)符合OSEK/VDX標(biāo)準(zhǔn)的操作系統(tǒng),負(fù)責(zé)內(nèi)存管理、對(duì)各個(gè)功能的調(diào)度,api分為任務(wù)管理、中斷處理、事件機(jī)制、資源管理、報(bào)警器。
2.2.1 任務(wù)管理api
1 StatusTypeActivateTask(TaskType)
2 將任務(wù)號(hào)為TaskID的任務(wù)由掛起態(tài)變?yōu)榫途w態(tài)。
3 StatusTypeTerminateTask(void)
4 將任務(wù)由就緒態(tài)轉(zhuǎn)為掛起態(tài)。
5 StatusTypeChainTask(TaskType)
6 將當(dāng)前任務(wù)由就緒轉(zhuǎn)為掛起,并將TaskID的任務(wù)由掛起轉(zhuǎn)為就緒,相當(dāng)于TerminateTask和ActivateTask的連用。
7 StatusTypeSchedule(void)
8 執(zhí)行一次調(diào)度。
9
2.2.2 事件api
1 StatusTypeSetEvent(TaskTypeEventMaskType)
2 設(shè)置一個(gè)事件位,當(dāng)執(zhí)行SetEvent后等待該事件位的任務(wù)可以由等待態(tài)變?yōu)榫途w態(tài)。
3 StatusTypeClearEvent(EventMaskType)
4 清楚事件位
5 StatusTypeGetEvent(TaskTypeEventMaskRefType)
6 返回TaskID任務(wù)的所有事件位
7 StatusTypeWaitEvent(EventMaskType)
8 等待事件位,等待事件位的任務(wù)由就緒態(tài)轉(zhuǎn)為等待態(tài)。
9
2.2.3 報(bào)警器(鬧鐘)api
1 StatusTypeGetAlarmBase(AlarmType,AlarmBaseRefType)
2 獲取報(bào)警器的時(shí)基
3 StatusTypeGetAlarm(AlarmTypeTickRefType)
4 獲取鬧鐘當(dāng)前的tick
5 StatusTypeSetRelAlarm(AlarmType,TickType,TickType)
6 設(shè)置相對(duì)鬧鐘
7 StatusTypeSetAbsAlarm(AlarmType,TickType,
8 TickType)
9 設(shè)置絕對(duì)鬧鐘
10 StatusTypeCancelAlarm(AlarmType)
11 取消鬧鐘
12
三、AUTOSAR開(kāi)源代碼arctic core軟件框架和分析
3.1 相關(guān)資源鏈接
arctic core官網(wǎng):
http://dev.arccore.com/public/user-doc/UD441x/Arctic-Core-4.0_9503291.html
arctic core源碼獲取 :
http://my.arccore.com/hg
源碼構(gòu)建說(shuō)明:
http://dev.arccore.com/public/userdoc/UD441x/Makesystem_23789620.html
3.2 軟件框架說(shuō)明
在arch文件夾中的文件為MCU內(nèi)核架構(gòu)相關(guān)的文件,如cortex-m3,主要內(nèi)容為M3的啟動(dòng)文件(見(jiàn)M3編程指南),MCU的固件庫(kù)。
在boards文件夾中的文件為各個(gè)MCU的實(shí)現(xiàn),包括對(duì)板子的配置。
system文件夾中包含了一個(gè)OSEK/VDX標(biāo)準(zhǔn)的操作系統(tǒng)。
四、在N32G45X上完成AUTOSAR的MCAL
以MCU驅(qū)動(dòng)的時(shí)鐘設(shè)置為例,static void SetClocks(Mcu_ClockSettingConfigType *clockSettingsPtr)是autosar的mcal定義的一個(gè)接口,用于設(shè)置MCU的時(shí)鐘,在n32g45x的實(shí)現(xiàn)如下:
寫好mcal的mcu后編譯成可執(zhí)行文件下載到板子上,AUTOSAR能夠在n32g45x上正常運(yùn)行,可以看到三個(gè)任務(wù)塊在調(diào)度。下載工具用的是pyocd。
五、RT-THREAD的移植
由于源碼采用的構(gòu)建工具是makefile,所以需要將rtthread的源碼和頭文件路徑添加到makefile文件。編譯下載到板子上可以看到rtthread正常運(yùn)行。
六、倉(cāng)庫(kù)地址
由于arctic core沒(méi)有g(shù)ithub,不能采用fork的方式協(xié)作開(kāi)發(fā),我的代碼上傳到gitee提示版權(quán)風(fēng)險(xiǎn)無(wú)法轉(zhuǎn)為公開(kāi)的倉(cāng)庫(kù),對(duì)源碼感興趣的小伙伴可以在下方留下gitee賬號(hào)或發(fā)郵件給我369247354@qq.com,我拉你到項(xiàng)目組。源碼從附件下載:
n32g45x_arctic_core.zip
七、項(xiàng)目視頻
https://www.bilibili.com/video/BV1Ma411b7kD/
八、總結(jié)和展望
本次移植過(guò)程中,mcal的移植較為輕松,適配n32g45x的寄存器花了不少時(shí)間,需要查看n32g45x的參考手冊(cè)的寄存器定義一個(gè)一個(gè)的去改。移植rtthread到arctic core的源碼比較簡(jiǎn)單,只是添加rtt的源碼到arctic core的makefile。遺憾的是還沒(méi)完成rtt適配OSEK/VDX的接口,希望對(duì)OSEK/VDX感興趣的小伙伴加入進(jìn)來(lái),一起完成rtt對(duì)OESK/VDX的適配。
來(lái)源:RTThread物聯(lián)網(wǎng)操作系統(tǒng)
-
AUTOSAR
+關(guān)注
關(guān)注
10文章
379瀏覽量
22660
發(fā)布評(píng)論請(qǐng)先 登錄
【設(shè)計(jì)技巧】基于AUTOSAR的電機(jī)驅(qū)動(dòng)系統(tǒng)報(bào)告
介紹一種適配RT-Thread內(nèi)核的autosar操作系統(tǒng)
國(guó)民技術(shù)MCU應(yīng)用筆記連載(4)——N32G45x系列USB自定義HID設(shè)備的實(shí)現(xiàn)
基于RT-Thread內(nèi)核的AUTOSAR在n32g上的實(shí)現(xiàn)方案
N32G45x/G4FRx/N32WBx系列觸控設(shè)計(jì)指南
面向汽車應(yīng)用的AUTOSAR設(shè)計(jì)技巧
AUTOSAR和OSEK網(wǎng)絡(luò)管理比較
基于AUTOSAR規(guī)范的操作系統(tǒng)知識(shí)

經(jīng)緯恒潤(rùn)AUTOSAR成功適配智芯科技國(guó)產(chǎn)車規(guī)級(jí)芯片

AUTOSAR OS操作系統(tǒng)功能特性
經(jīng)緯恒潤(rùn)AUTOSAR成功適配曦華科技國(guó)產(chǎn)車規(guī)級(jí)芯片

普華車用操作系統(tǒng)與黑芝麻智能武當(dāng)C1200家族芯片完成適配

評(píng)論