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