0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在ETAS的AUTOSAR中實(shí)現(xiàn)Spinlock的設(shè)計(jì)

汽車(chē)ECU開(kāi)發(fā) ? 來(lái)源:汽車(chē)ECU開(kāi)發(fā) ? 2023-01-17 09:05 ? 次閱讀

現(xiàn)在的車(chē)載控制器,多核的MCU用的是越來(lái)越多了,對(duì)于不同核之間的共享數(shù)據(jù)保護(hù),也是必須的,其中Spinlock就是常用的一種。

01.

Spinlock介紹

Spinlock也即自旋鎖,是一種輕量級(jí)的多核間的數(shù)據(jù)同步機(jī)制。一個(gè)任務(wù)想要訪問(wèn)被Spinlock保護(hù)的共享資源,必須先得到鎖,在訪問(wèn)完共享資源后釋放鎖。如果在獲取自旋鎖時(shí),沒(méi)有任何執(zhí)行單元保持該鎖,那么將立即得到鎖;如果在獲取自旋鎖時(shí)鎖已經(jīng)有持有者, 那么需要自旋等待該鎖的保持者釋放了鎖。

在ETAS的AUTOSAR中,實(shí)現(xiàn)Spinlock的兩個(gè)基本操作獲取鎖xx_GetLockInternal()和釋放鎖xx_ReleaseLockInternal()。

對(duì)于獲取鎖接口,其內(nèi)部的實(shí)現(xiàn)原理如下:

第一步先判斷是哪個(gè)核上的任務(wù)正在使用xx_GetLockInternal();

判斷鎖是否已經(jīng)被同當(dāng)前核獲取過(guò)但沒(méi)有釋放,如果是的話(huà),就進(jìn)行鎖嵌套累加, 繼續(xù)執(zhí)行代碼,如果沒(méi)有被當(dāng)前核獲取過(guò)再進(jìn)行下一步判斷;

掛起正在使用xx_GetLockInternal()的當(dāng)前核的中斷,確保當(dāng)前任務(wù)不被切換,也就是說(shuō)不被高優(yōu)先級(jí)任務(wù)或者中斷任務(wù)打斷;

測(cè)試鎖的狀態(tài),該才做必須以原子操作訪問(wèn)Spinlock的鎖標(biāo)志。

如果鎖狀態(tài)被本核占用則進(jìn)行鎖嵌套,如果是其他核占用則首先釋放該核中斷, 然后重復(fù)執(zhí)行上面兩步測(cè)試鎖的狀態(tài),直到其他核釋放了鎖。如果鎖狀態(tài)為空閑, 則設(shè)置其為占用狀態(tài),這就成功地?fù)屨剂随i。

對(duì)于釋放鎖接口,其內(nèi)部的實(shí)現(xiàn)原理如下:

首先判斷是哪個(gè)核上的線(xiàn)程正在使用xx_ReleaseLockInternal();

判斷當(dāng)前鎖是否被該核占用,如果不是說(shuō)明接口調(diào)用不匹配則復(fù)位,如果是則進(jìn)行 下一步的判斷;

判斷鎖是否被本核嵌套, 如果是則嵌套次數(shù)減減, 如果沒(méi)有則清除鎖的狀態(tài);

釋放該核的中斷。

02.

Spinlock使用原則

所有臨界區(qū)代碼都需要加鎖保護(hù),否則就達(dá)不到保護(hù)效果。也就是,訪問(wèn)共享資源的多個(gè)任務(wù)需要協(xié)同工作共同加鎖才能保證不出錯(cuò)。在實(shí)際寫(xiě)代碼時(shí),有時(shí)會(huì)忘掉這個(gè),導(dǎo)致出現(xiàn)各種稀奇古怪的問(wèn)題,并且很難排查。

Spinlock保護(hù)的代碼執(zhí)行時(shí)間要盡量短, 因?yàn)榕R界區(qū)太大,持有時(shí)間太長(zhǎng),其他任務(wù)可能面臨長(zhǎng)時(shí)間等待,降低了系統(tǒng)性能。

Spinlock 所保護(hù)的代碼在執(zhí)行過(guò)程中不能睡眠, 任務(wù)在持有自旋鎖時(shí)如果進(jìn)入 Sleep狀態(tài),則可能導(dǎo)致死鎖。








審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17196

    瀏覽量

    351887
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    363

    瀏覽量

    21639
  • 車(chē)載控制系統(tǒng)

    關(guān)注

    0

    文章

    6

    瀏覽量

    8118

原文標(biāo)題:ETAS AUTOSAR中Spinlock學(xué)習(xí)筆記

文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車(chē)ECU開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AUTOSAR通信對(duì)自動(dòng)駕駛的影響 AUTOSAR通信與嵌入式系統(tǒng)設(shè)計(jì)

    AUTOSAR通信與嵌入式系統(tǒng)設(shè)計(jì)緊密相連,共同推動(dòng)著自動(dòng)駕駛技術(shù)的發(fā)展。 AUTOSAR通信對(duì)自動(dòng)駕駛的影響 提高通信效率和可靠性 AUTOSAR通信協(xié)議棧通過(guò)標(biāo)準(zhǔn)化的接口和協(xié)議,實(shí)現(xiàn)
    的頭像 發(fā)表于 12-17 15:09 ?331次閱讀

    AUTOSAR通信與網(wǎng)絡(luò)安全 AUTOSAR通信在車(chē)輛的應(yīng)用

    隨著汽車(chē)行業(yè)的發(fā)展,車(chē)輛的電子化和智能化水平不斷提高,這使得車(chē)輛的通信系統(tǒng)變得日益復(fù)雜。AUTOSAR(AUTomotive Open System ARchitecture)是一個(gè)全球性的汽車(chē)軟件
    的頭像 發(fā)表于 12-17 15:06 ?329次閱讀

    AUTOSAR通信實(shí)現(xiàn)的常見(jiàn)問(wèn)題

    AUTOSAR(Automotive Open System Architecture)汽車(chē)開(kāi)放系統(tǒng)架構(gòu)旨在實(shí)現(xiàn)汽車(chē)電子的軟硬件分離,降低ECU軟件開(kāi)發(fā)的復(fù)雜度,提高軟件可重用性。 一、通信協(xié)議棧
    的頭像 發(fā)表于 12-17 15:03 ?418次閱讀

    AUTOSAR通信堆棧的配置 AUTOSAR通信模塊測(cè)試方法

    )的開(kāi)發(fā)和生產(chǎn)。通信堆棧是AUTOSAR架構(gòu)的關(guān)鍵組成部分,負(fù)責(zé)處理ECU之間的通信。 AUTOSAR通信堆棧的配置 通信模型 : AUTOSA
    的頭像 發(fā)表于 12-17 15:01 ?311次閱讀

    AUTOSAR通信框架的優(yōu)勢(shì) AUTOSAR通信實(shí)例與應(yīng)用場(chǎng)景

    AUTOSAR通信框架的優(yōu)勢(shì) AUTOSAR(AUTomotive Open System ARchitecture)是一個(gè)全球性的汽車(chē)軟件架構(gòu)合作伙伴計(jì)劃,旨在創(chuàng)建并建立一個(gè)開(kāi)放的標(biāo)準(zhǔn)化軟件架構(gòu)
    的頭像 發(fā)表于 12-17 14:58 ?352次閱讀

    AUTOSAR通信與CAN協(xié)議的關(guān)系

    AUTOSAR通信模型: AUTOSAR定義了一個(gè)分層的軟件架構(gòu),其中包括應(yīng)用層、基礎(chǔ)軟件層和微控制器抽象層。在這些層,通信模型是實(shí)現(xiàn)ECU之間通信的關(guān)鍵部分。
    的頭像 發(fā)表于 12-17 14:57 ?277次閱讀

    AUTOSAR通信組件介紹 AUTOSAR通信層功能分析

    實(shí)現(xiàn)汽車(chē)電子控制單元(ECU)的軟件設(shè)計(jì)和開(kāi)發(fā)。這個(gè)架構(gòu)包括多個(gè)層,其中通信層是AUTOSAR架構(gòu)的關(guān)鍵組成部分之一。 1. 通信組件概述 AUTOSAR通信組件主要負(fù)責(zé)ECU之間的
    的頭像 發(fā)表于 12-17 14:55 ?394次閱讀

    AUTOSAR通信協(xié)議解析 如何實(shí)現(xiàn)AUTOSAR通信

    AUTOSAR(Automotive Open System Architecture)即汽車(chē)開(kāi)放系統(tǒng)架構(gòu),該架構(gòu)支持汽車(chē)電子控制單元(ECU)之間的通信,實(shí)現(xiàn)了高度模塊化和可重用性。AUTOSAR
    的頭像 發(fā)表于 12-17 14:54 ?802次閱讀

    中科創(chuàng)達(dá)受邀參加ETAS Connections 2024

    日前,ETAS Connections 2024德國(guó)斯圖加特圓滿(mǎn)舉辦。中科創(chuàng)達(dá)作為ETAS重要合作伙伴受邀參會(huì),與寶馬、博世、大眾、Arm等國(guó)際知名企業(yè)代表共同探討智能汽車(chē)軟件前沿技術(shù)話(huà)題。同時(shí)
    的頭像 發(fā)表于 11-14 11:36 ?368次閱讀

    AUTOSAR解決方案 — INTEWORK-EAS-AP

    經(jīng)緯恒潤(rùn)自主研發(fā)的Adaptive AUTOSAR平臺(tái)產(chǎn)品, 遵循AUTOSAR Adaptive R19-11和R22-11規(guī)范, 使用C++11、C++17語(yǔ)言開(kāi)發(fā)??赏ㄟ^(guò)極易上手的自研工具配置,實(shí)現(xiàn)
    的頭像 發(fā)表于 11-06 16:11 ?724次閱讀
    <b class='flag-5'>AUTOSAR</b>解決方案 — INTEWORK-EAS-AP

    TI SoC上集成AUTOSAR:基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《TI SoC上集成AUTOSAR:基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 10-11 11:50 ?0次下載
    <b class='flag-5'>在</b>TI SoC上集成<b class='flag-5'>AUTOSAR</b>:基礎(chǔ)知識(shí)

    Vector AUTOSAR的TISCI服務(wù)器集成

    電子發(fā)燒友網(wǎng)站提供《Vector AUTOSAR的TISCI服務(wù)器集成.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 11:16 ?0次下載
    Vector <b class='flag-5'>AUTOSAR</b><b class='flag-5'>中</b>的TISCI服務(wù)器集成

    AUTOSAR MCAL驅(qū)動(dòng)程序與演示程序的Libraries的驅(qū)動(dòng)程序有什么不同之處?

    1.關(guān)于 AUTOSAR MCAL 驅(qū)動(dòng)程序 與演示程序的 Libraries 的驅(qū)動(dòng)程序 有什么不同之處? 2.AUTOSAR MCAL 驅(qū)動(dòng)程序
    發(fā)表于 05-17 06:55

    是德科技與ETAS攜手提供了一個(gè)綜合車(chē)載網(wǎng)絡(luò)安全解決方案

    ETAS 模糊測(cè)試軟件“ESCRYPT CycurFUZZ”嵌入是德科技車(chē)載網(wǎng)絡(luò)安全測(cè)試平臺(tái)
    的頭像 發(fā)表于 05-14 16:27 ?513次閱讀

    freertos里是否有spinlock或者類(lèi)似的接口?

    目前在用STM32做開(kāi)放,使用freertos,請(qǐng)問(wèn)一下,freertos里是否有spinlock或者類(lèi)似的接口?
    發(fā)表于 05-13 06:59