介绍
本应用笔记描述了使用 GCC 环境时,数据段的定位实现。
µC/OS-MPU介绍
µC/OS-MPU基于 µC/OS-II,增加了内存保护扩展,这种保护称为“空间保护”,隔离 µC/OS-II 内核与任务。基于µC/OS-MPU,为任务提供了一个受保护的运行环境,其他任务不会干扰或损坏任务的内存,避免非法访问。
· 空间保护
空间保护旨在保护应用程序的内存不被其他任务破坏。下图展示了一个包含三个进程的系统,以说明空间保护的实现。
通常,µC/OS-II 内部变量和线程(任务)放到进程#0。进程#1包含 2个线程。进程#2包含 3个线程,线程可以访问共享内存区域(shared memory)。进程#3是2个线程的集合,并且有权访问共享内存区域。
段的组织
在基于µC/OS-MPU的应用中,进程中的所有全局数据位于同一个段。下图展示了单个段的数据组织:
在启动阶段,运行环境的启动函数将初始化数据(initialized data)从 ROM 复制到 RAM ,并清零未初始化数据(uninitialized data)。事实上,每个进程都有自己的段,在项目中,该组织结构可能存在多次。
· 未初始化数据
使用宏SP_MEM(
示例:全局变量 Task1Stk[] 和 SyncSem 放置到段”sec01”中未初始化数据域。
将已有代码集成到µC/OS-MPU系统时,可以基于文件放置数据,仅需调整链接命令文件。
示例:基于提供的GCC链接命令文件模板,红色部分的行表示将文件 myfile.c中未初始化数据放置到段”secA0”中的未初始化数据域。
在启动阶段,我们需要清零段中未初始化数据域。为了简化实现,系统提供了一些有用的宏SP_INIT_
示例:在调用函数 MyInitData()时,段” sec01”和”secA0”中未初始化数据域清零。注意:函数”_zero_init”可能是启动环境外部提供的:
· 初始化数据
使用SP_MEM(
示例:全局变量”MyNumber”和”MyValue”放到段” sec01”中的初始化数据域。此外,数据的值被放置在ROM中的数据区域。
将已有代码集成到µC/OS-MPU系统时,也可以基于文件放置数据,仅需调整链接器命令文件。
示例:根据提供的GCC链接命令文件模板,红色显示的行表示将文件 myfile.c中的初始化数据放置到段” secA0”中的初始化数据域。
在启动阶段,我们需要复制段中的初始化数据域。为了简化实现,系统提供一些有用的宏SP_INIT_
示例:调用函数 MyInitData()时,段” sec01”和” secA0”中的初始化数据域,将从 ROM 复制到 RAM。
注意:函数"_data_init"可能不是启动环境提供的:
审核编辑 :李倩
-
操作系统
+关注
关注
37文章
6535浏览量
122681 -
GCC
+关注
关注
0文章
105浏览量
24776 -
线程
+关注
关注
0文章
501浏览量
19576
原文标题:空间隔离操作系统µC/OS-MPU中段的定位
文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
在Flexible Safety RTOS安全应用中集成X-CUBE-STL的步骤
![在Flexible Safety RTOS安全应用中集成X-CUBE-STL的步骤](https://file1.elecfans.com/web2/M00/C4/7A/wKgZomXzzEyAZ6PUAAAgoAqS3Ig386.png)
联想今年将发布AI OS操作系统
航天宏图推出新一代卫星操作系统PIESAT-OS 1.0版
![航天宏图推出新一代卫星<b class='flag-5'>操作系统</b>PIESAT-<b class='flag-5'>OS</b> 1.0版](https://file1.elecfans.com/web2/M00/BB/65/wKgaomWUzT2ARB5hAAAyZPAkGy8057.png)
从芯片到操作系统,手机厂商的操作系统混战卷到了智能手表
![从芯片到<b class='flag-5'>操作系统</b>,手机厂商的<b class='flag-5'>操作系统</b>混战卷到了智能手表](https://file1.elecfans.com/web2/M00/AF/E9/wKgaomVcgfqAYzZPAA1MZ7LaDKA114.png)
AUTOSAR OS操作系统功能特性
嵌入式实时操作系统μC/OS-Ⅱ在LPC1788上的移植及应用
![嵌入式实时<b class='flag-5'>操作系统</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS</b>-Ⅱ在LPC1788上的移植及应用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论