共享变量 [RTOS]
Shared variables [RTOS]
简单背景:
运行 我的单片机上的 freeRTOS。
我的项目中的一个功能是处理存储在外部存储器中的参数的库。
基本上在启动时,主函数调用从外部存储器读取所有参数并将它们存储在库中的静态变量(非全局变量)中的函数。
现在,我有几个任务是 运行。一些任务调用参数库中的函数以 read/write from/to 参数。
问题:
当任务调用函数读取参数时,它们最初尝试访问同一个变量。正确的?
这不是每个任务都创建自己的整个库副本吗?
如果情况并非如此,那么我想信号量是实现我的目标的方式,从那里我会没事的。
上传了两张图片:第一张是我认为正确的方式,第二张是错误的。
ps。无法访问任何控制器。因此我在这里问 :)
你的假设是正确的。您必须记住,您仍在编译单个 C 程序。你的 MCU OS 是你程序的一部分,不包含程序加载器或类似的东西,你只有一个 main
.
这实际上意味着您的程序将像任何普通 C 程序一样运行,不会有任何重复变量或隐藏陷阱。唯一奇怪的是OS可以用魔法切换任务
简单背景:
运行 我的单片机上的 freeRTOS。
我的项目中的一个功能是处理存储在外部存储器中的参数的库。
基本上在启动时,主函数调用从外部存储器读取所有参数并将它们存储在库中的静态变量(非全局变量)中的函数。
现在,我有几个任务是 运行。一些任务调用参数库中的函数以 read/write from/to 参数。
问题: 当任务调用函数读取参数时,它们最初尝试访问同一个变量。正确的?
这不是每个任务都创建自己的整个库副本吗?
如果情况并非如此,那么我想信号量是实现我的目标的方式,从那里我会没事的。
上传了两张图片:第一张是我认为正确的方式,第二张是错误的。
ps。无法访问任何控制器。因此我在这里问 :)
你的假设是正确的。您必须记住,您仍在编译单个 C 程序。你的 MCU OS 是你程序的一部分,不包含程序加载器或类似的东西,你只有一个 main
.
这实际上意味着您的程序将像任何普通 C 程序一样运行,不会有任何重复变量或隐藏陷阱。唯一奇怪的是OS可以用魔法切换任务