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

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

3天内不再提示

RTOS中的本地存储指针使用

麦克泰技术 来源:麦克泰技术 作者:麦克泰技术 2025-02-28 16:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本地存储指针是RTOS中的一个重要特性,增强了任务管理和数据处理能力。在RTOS上下文中,本地存储是指存储在本地的特定任务或对象的数据。通常与任务本地存储(Task Local Storage,TLS)有关,其中数据存储在任务控制块(TCB)中,允许每个任务具有私有的、特定于任务的变量。

本地存储指针

全局变量通常用于函数间的数据传递。这可能会导致不同的任务修改同一变量,从而导致冲突。为了解决这个问题,通过TLS将全局变量作为任务私有变量使用,确保任务可以独立地存储和检索自己的数据。通过将特定于任务的数据与系统范围的变量分开来提高代码的可重用性,从而使其更易于管理和维护。

示例

考虑一个有多个PI控制器来控制几个过程的系统,每个PI控制器包含一个积分器值,该值必须保存以供下一个控制器步骤计算。图1显示了通过全局变量实现的方法,该方法需要特定的引用来确保每个任务访问正确的数据,从而使实现更加复杂。

44397e78-f581-11ef-9310-92fbcf53809c.png

图1 使用全局变量

图2显示了使用了TLS的相同系统实现。使用TLS,每个任务都可以使用自己的本地存储来引用积分器值。该方式简化了代码,每个任务直接管理自己的数据,使其更容易扩展和维护。

4457072c-f581-11ef-9310-92fbcf53809c.png

图2 使用TLS

SAFERTOS中的本地存储指针

为了允许应用设计人员灵活使用的本地存储接口,SAFERTOS将其实现为一个void类型指针,称为本地存储指针。每个任务(定时器)都可以在任务或定时器控制块中存储自己唯一的数据对象。

SAFERTOS中的void指针允许应用程序设计人员根据任务的需要存储任何类型的数据,无论是简单的数组还是更复杂的数据结构。

数据的存储方式取决于数据长度和应用程序设计。void指针的长度取决于体系结构,在32位体系结构中,void指针的长度为32位或者4个字节。这意味着如果TLS中存储的数据长度为4字节或以下,可以直接保存在存储指针中。如果超过4字节数,通过指针引用预分配的内存块(SAFERTOS不允许动态内存分配)。

本地存储指针在任务或定时器创建时设置,可以使用特定的API函数(pvTaskTLSObjectGet(), pvTimerTLSObjectGet())访问数据。

本地存储指针为SAFERTOS中提供了一种高度灵活的方式来管理特定于任务的数据,从而生成更干净、易于维护的代码。通过TLS,任务可以管理自己的数据,而不必担心全局状态,从而减少冲突的风险,提高应用程序的整体效率。

麦克泰技术是安全预认证操作系统SAFERTOS在中国的代理商,具有超过20年嵌入式实时操作系统和功能安全软件服务的市场、服务和培训经验,联系info@bmrtech.com。

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

    关注

    114

    文章

    17638

    浏览量

    190165
  • 嵌入式
    +关注

    关注

    5186

    文章

    20142

    浏览量

    328643
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66812
  • 指针
    +关注

    关注

    1

    文章

    484

    浏览量

    71669
  • RTOS
    +关注

    关注

    25

    文章

    862

    浏览量

    122569

原文标题:RTOS中的本地存储指针使用

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RTOS信号量、队列通信原理

    有深入理解RTOS原理,或阅读过RTOS源码的同学应该知道:RTOS实现任务间通信通常是由一系列指针进行操作实现的。
    发表于 08-16 10:07 2124次阅读

    RTOS的定时功能

    RTOS
    橙群微电子
    发布于 :2023年02月27日 09:42:16

    RTOS存储器选择

    当系统运行了一个嵌入式实时操作系统时(RTOS),操作系统通常都是使用非易失的存储器来运行软件以及采集数据。存储器的选择面很广阔,其中包括电池供电的SRAM(静态随机访问储存器),各种各样的闪存以及串口EEPROM(电可擦的,可
    发表于 06-28 08:29

    k8s volume本地存储和网络存储

    八 、 k8s volume 本地存储和网络存储
    发表于 03-25 08:44

    C编程指针:什么是指针,它做什么?

    了所有指针,那么其他工程师将更容易理解您的代码。指针做什么?它指出。更具体地说,它指向另一个变量的数据,或者指向存储在内存但未与变量关联的数据。我们通常认为变量是
    发表于 09-08 23:30

    指数指针的相关知识

    虽然数组与指针数组存储的都是数据,但还是有细微的差别。数组存储的是相同类型的字符或数值,而指针数组存储的是相同类型的
    的头像 发表于 09-14 13:59 3804次阅读
    指数<b class='flag-5'>指针</b>的相关知识

    为什么使用指针?C++的“指针

    为什么使用指针?因为在操作大型数据和类时,指针可以通过内存地址直接访问数据,可避免在程序复制大量的代码,因此指针的效率最高。一般来说,指针
    的头像 发表于 10-04 10:33 5648次阅读

    本地存储与云存储的区别介绍

    尽管云存储已经成熟,但企业IT部门仍然需要权衡本地存储和云存储的风险和好处,特别是在涉及到组织最关键的数据时。在许多企业看来,云存储是有利有
    的头像 发表于 03-02 11:25 7305次阅读

    本地对象存储可以做什么用

    其实本地对象存储不仅适用于辅助存储,很多存储管理人员仍主要从辅助存储角度看待它
    发表于 03-22 17:08 6002次阅读

    C语言固件中指针的使用方法

    有两个与指针关联的值。第一个是存储指针本身存储地址,第二个是存储在该
    的头像 发表于 09-26 11:38 1943次阅读
    C语言固件中<b class='flag-5'>指针</b>的使用方法

    一文知道32位指针内部区域寻址

    32位指针用于I、Q、M、L数据块等存储的位、字节、字、双字的寻址,32指针寻址,指针需要使用一个双字的
    的头像 发表于 11-20 17:33 4459次阅读

    二级指针和多级指针的定义形式

    指针变量作为一个变量也有自己的存储地址,而指向指针变量的存储地址就被称为指针指针,即二级
    的头像 发表于 10-18 16:38 2630次阅读

    如何使用函数指针

    在程序定义一个函数,则编译时系统就会为这段代码分配一段存储空间,这段存储空间的首地址称为函数的地址,且函数名代表的就是这个地址。既然是地址就可以使用一个指针变量来
    的头像 发表于 03-30 15:09 1265次阅读

    指针是什么

    ,口语说的指针通常指的是指针变量。 1.2 内存 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内
    的头像 发表于 11-24 15:50 3255次阅读
    <b class='flag-5'>指针</b>是什么

    基于RTOS的应用进程的典型线程

    RTOS的关键因素是最小的中断延迟和最小的线程切换延迟。RTOS的价值在于它的响应速度或可预测性,而不是它在给定时间段内可以执行的工作量。
    发表于 03-05 09:32 1406次阅读
    基于<b class='flag-5'>RTOS</b>的应用进程<b class='flag-5'>中</b>的典型线程