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

    文章

    17002

    浏览量

    350324
  • AUTOSAR
    +关注

    关注

    10

    文章

    350

    浏览量

    21479
  • 车载控制系统

    关注

    0

    文章

    6

    浏览量

    8091

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

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

收藏 人收藏

    评论

    相关推荐

    ETAS获得亚马逊智能汽车授权的集成测试实验室认证

    日前,ETAS自豪地宣布其获得亚马逊智能汽车授权的集成测试实验室认证,用于安全测试服务。这一备受瞩目的认可强调了ETAS致力于提供符合亚马逊严格标准的高质量测试解决方案的承诺,这些标准适用于集成亚马逊智能汽车功能的设备。
    的头像 发表于 11-26 15:54 76次阅读

    中科创达受邀参加ETAS Connections 2024

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

    AUTOSAR解决方案 — INTEWORK-EAS-AP

    经纬恒润自主研发的Adaptive AUTOSAR平台产品, 遵循AUTOSAR Adaptive R19-11和R22-11规范, 使用C++11、C++17语言开发。可通过极易上手的自研工具配置,实现
    的头像 发表于 11-06 16:11 554次阅读
    <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

    是德科技与ETAS携手提供了一个综合车载网络安全解决方案

    ETAS 模糊测试软件“ESCRYPT CycurFUZZ”嵌入是德科技车载网络安全测试平台
    的头像 发表于 05-14 16:27 457次阅读

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

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

    ETAS推出Time-Triggered Scheduling (TTS)的确定性调度解决方案

    2024年2月26日,ETAS推出了名为“Time-Triggered Scheduling (TTS)”的确定性调度解决方案。
    的头像 发表于 04-25 16:56 2243次阅读
    <b class='flag-5'>ETAS</b>推出Time-Triggered Scheduling (TTS)的确定性调度解决方案

    ETAS与芯驰科技推出基于车规MCU的HSM网络安全解决方案

    3月29日,全球领先的软件定义汽车全方位服务解决方案提供商ETAS与芯驰科技共同宣布,ETAS CycurHSM网络安全方案支持芯驰E3系列MCU最新产品E3119F8/E3118F4同步首发。
    的头像 发表于 03-29 11:14 567次阅读

    TC387配置Autosar OS后主核跑飞了怎么解决?

    使用TC387芯片配置Autosar OS发现主核跑飞了,其他核正常运行OS任务切换,PC指针指向_IF_CONST区域,D[4]寄存器为1,D[15]寄存器为4,根据这两个寄存器用计算规则计算出的TCN和TIN好像有问题,Trap
    发表于 03-06 08:24

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

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

    AUTOSAR架构复杂驱动设计

    复杂驱动(Complex Driver,CDD)是一种不受 AUTOSAR 标准化约束的软件实体,它可以通过 AUTOSAR 接口和/或基础软件模块 API 进行访问 AUTOSAR 组件或者被
    的头像 发表于 12-21 10:13 4239次阅读
    <b class='flag-5'>AUTOSAR</b>架构<b class='flag-5'>中</b>复杂驱动设计

    ETAS和曦华科技蓝鲸MCU成功完成AUTOSAR适配

    蓝鲸CVM014xMcal 基于AutoSAR Classic Platform 4.2.2开发,完整支持微控制器驱动(MicrocontrollerDrivers), 存储器驱动
    发表于 12-14 10:23 571次阅读
    <b class='flag-5'>ETAS</b>和曦华科技蓝鲸MCU成功完成<b class='flag-5'>AUTOSAR</b>适配

    ETAS RTA-BSW平台成功适配曦华蓝鲸CVM014x系列车规级MCU芯片

      近日,曦华科技与ETAS共同宣布,ETAS RTA-BSW平台成功适配曦华蓝鲸CVM014x系列车规级MCU芯片,这一合作成果将为汽车行业带来更加高效、安全的软件开发与整车集成应用,为双方共同
    的头像 发表于 12-04 09:07 1063次阅读