0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在ETAS的AUTOSAR中实现Spinlock的设计

汽车ECU开发 来源:汽车ECU开发 2023-01-17 09:05 次阅读

现在的车载控制器,多核的MCU用的是越来越多了,对于不同核之间的共享数据保护,也是必须的,其中Spinlock就是常用的一种。

01.

Spinlock介绍

Spinlock也即自旋锁,是一种轻量级的多核间的数据同步机制。一个任务想要访问被Spinlock保护的共享资源,必须先得到锁,在访问完共享资源后释放锁。如果在获取自旋锁时,没有任何执行单元保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有持有者, 那么需要自旋等待该锁的保持者释放了锁。

在ETAS的AUTOSAR中,实现Spinlock的两个基本操作获取锁xx_GetLockInternal()和释放锁xx_ReleaseLockInternal()。

对于获取锁接口,其内部的实现原理如下:

第一步先判断是哪个核上的任务正在使用xx_GetLockInternal();

判断锁是否已经被同当前核获取过但没有释放,如果是的话,就进行锁嵌套累加, 继续执行代码,如果没有被当前核获取过再进行下一步判断;

挂起正在使用xx_GetLockInternal()的当前核的中断,确保当前任务不被切换,也就是说不被高优先级任务或者中断任务打断;

测试锁的状态,该才做必须以原子操作访问Spinlock的锁标志。

如果锁状态被本核占用则进行锁嵌套,如果是其他核占用则首先释放该核中断, 然后重复执行上面两步测试锁的状态,直到其他核释放了锁。如果锁状态为空闲, 则设置其为占用状态,这就成功地抢占了锁。

对于释放锁接口,其内部的实现原理如下:

首先判断是哪个核上的线程正在使用xx_ReleaseLockInternal();

判断当前锁是否被该核占用,如果不是说明接口调用不匹配则复位,如果是则进行 下一步的判断;

判断锁是否被本核嵌套, 如果是则嵌套次数减减, 如果没有则清除锁的状态;

释放该核的中断。

02.

Spinlock使用原则

所有临界区代码都需要加锁保护,否则就达不到保护效果。也就是,访问共享资源的多个任务需要协同工作共同加锁才能保证不出错。在实际写代码时,有时会忘掉这个,导致出现各种稀奇古怪的问题,并且很难排查。

Spinlock保护的代码执行时间要尽量短, 因为临界区太大,持有时间太长,其他任务可能面临长时间等待,降低了系统性能。

Spinlock 所保护的代码在执行过程中不能睡眠, 任务在持有自旋锁时如果进入 Sleep状态,则可能导致死锁。








审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17144

    浏览量

    351156
  • AUTOSAR
    +关注

    关注

    10

    文章

    362

    浏览量

    21577
  • 车载控制系统

    关注

    0

    文章

    6

    浏览量

    8094

原文标题:ETAS AUTOSAR中Spinlock学习笔记

文章出处:【微信号:eng2mot,微信公众号:汽车ECU开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AUTOSAR通信对自动驾驶的影响 AUTOSAR通信与嵌入式系统设计

    AUTOSAR通信与嵌入式系统设计紧密相连,共同推动着自动驾驶技术的发展。 AUTOSAR通信对自动驾驶的影响 提高通信效率和可靠性 AUTOSAR通信协议栈通过标准化的接口和协议,实现
    的头像 发表于 12-17 15:09 268次阅读

    AUTOSAR通信与网络安全 AUTOSAR通信在车辆的应用

    随着汽车行业的发展,车辆的电子化和智能化水平不断提高,这使得车辆的通信系统变得日益复杂。AUTOSAR(AUTomotive Open System ARchitecture)是一个全球性的汽车软件
    的头像 发表于 12-17 15:06 239次阅读

    AUTOSAR通信实现的常见问题

    AUTOSAR(Automotive Open System Architecture)汽车开放系统架构旨在实现汽车电子的软硬件分离,降低ECU软件开发的复杂度,提高软件可重用性。 一、通信协议栈
    的头像 发表于 12-17 15:03 288次阅读

    AUTOSAR通信堆栈的配置 AUTOSAR通信模块测试方法

    )的开发和生产。通信堆栈是AUTOSAR架构的关键组成部分,负责处理ECU之间的通信。 AUTOSAR通信堆栈的配置 通信模型 : AUTOSA
    的头像 发表于 12-17 15:01 246次阅读

    AUTOSAR通信框架的优势 AUTOSAR通信实例与应用场景

    AUTOSAR通信框架的优势 AUTOSAR(AUTomotive Open System ARchitecture)是一个全球性的汽车软件架构合作伙伴计划,旨在创建并建立一个开放的标准化软件架构
    的头像 发表于 12-17 14:58 231次阅读

    AUTOSAR通信与CAN协议的关系

    AUTOSAR通信模型: AUTOSAR定义了一个分层的软件架构,其中包括应用层、基础软件层和微控制器抽象层。在这些层,通信模型是实现ECU之间通信的关键部分。
    的头像 发表于 12-17 14:57 176次阅读

    AUTOSAR通信组件介绍 AUTOSAR通信层功能分析

    实现汽车电子控制单元(ECU)的软件设计和开发。这个架构包括多个层,其中通信层是AUTOSAR架构的关键组成部分之一。 1. 通信组件概述 AUTOSAR通信组件主要负责ECU之间的
    的头像 发表于 12-17 14:55 209次阅读

    AUTOSAR通信协议解析 如何实现AUTOSAR通信

    AUTOSAR(Automotive Open System Architecture)即汽车开放系统架构,该架构支持汽车电子控制单元(ECU)之间的通信,实现了高度模块化和可重用性。AUTOSAR
    的头像 发表于 12-17 14:54 468次阅读

    中科创达受邀参加ETAS Connections 2024

    日前,ETAS Connections 2024德国斯图加特圆满举办。中科创达作为ETAS重要合作伙伴受邀参会,与宝马、博世、大众、Arm等国际知名企业代表共同探讨智能汽车软件前沿技术话题。同时
    的头像 发表于 11-14 11:36 331次阅读

    AUTOSAR解决方案 — INTEWORK-EAS-AP

    经纬恒润自主研发的Adaptive AUTOSAR平台产品, 遵循AUTOSAR Adaptive R19-11和R22-11规范, 使用C++11、C++17语言开发。可通过极易上手的自研工具配置,实现
    的头像 发表于 11-06 16:11 653次阅读
    <b class='flag-5'>AUTOSAR</b>解决方案 — INTEWORK-EAS-AP

    TI SoC上集成AUTOSAR:基础知识

    电子发烧友网站提供《TI SoC上集成AUTOSAR:基础知识.pdf》资料免费下载
    发表于 10-11 11:50 0次下载
    <b class='flag-5'>在</b>TI SoC上集成<b class='flag-5'>AUTOSAR</b>:基础知识

    Vector AUTOSAR的TISCI服务器集成

    电子发烧友网站提供《Vector AUTOSAR的TISCI服务器集成.pdf》资料免费下载
    发表于 08-30 11:16 0次下载
    Vector <b class='flag-5'>AUTOSAR</b><b class='flag-5'>中</b>的TISCI服务器集成

    AUTOSAR MCAL驱动程序与演示程序的Libraries的驱动程序有什么不同之处?

    1.关于 AUTOSAR MCAL 驱动程序 与演示程序的 Libraries 的驱动程序 有什么不同之处? 2.AUTOSAR MCAL 驱动程序
    发表于 05-17 06:55

    freertos里是否有spinlock或者类似的接口?

    目前在用STM32做开放,使用freertos,请问一下,freertos里是否有spinlock或者类似的接口?
    发表于 05-13 06:59

    AUTOSAR Builder—符合AUTOSAR(CPAP)的嵌入式系统设计工具

    AUTOSAR Builder是达索旗下一款基于Eclipse并使用Artop的可扩展工具套件。Artop是由AUTOSAR成员和合作伙伴共同推动的开放的AUTOSAR工具环境。它使用户能够构建自己
    的头像 发表于 01-08 18:06 578次阅读
    <b class='flag-5'>AUTOSAR</b> Builder—符合<b class='flag-5'>AUTOSAR</b>(CPAP)的嵌入式系统设计工具