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

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

3天内不再提示

空间隔离操作系统?C/OS-MPU中段的定位

麦克泰技术 ? 来源:麦克泰技术 ? 2023-01-04 14:07 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

介绍

本应用笔记描述了使用 GCC 环境时,数据段的定位实现。

?C/OS-MPU介绍

?C/OS-MPU基于 ?C/OS-II,增加了内存保护扩展,这种保护称为“空间保护”,隔离 ?C/OS-II 内核与任务。基于?C/OS-MPU,为任务提供了一个受保护的运行环境,其他任务不会干扰或损坏任务的内存,避免非法访问。

· 空间保护

空间保护旨在保护应用程序的内存不被其他任务破坏。下图展示了一个包含三个进程的系统,以说明空间保护的实现。

b3713fc2-8bf4-11ed-bfe3-dac502259ad0.jpg

通常,?C/OS-II 内部变量和线程(任务)放到进程#0。进程#1包含 2个线程。进程#2包含 3个线程,线程可以访问共享内存区域(shared memory)。进程#3是2个线程的集合,并且有权访问共享内存区域。

段的组织

在基于?C/OS-MPU的应用中,进程中的所有全局数据位于同一个段。下图展示了单个段的数据组织:

b3844a0e-8bf4-11ed-bfe3-dac502259ad0.png

在启动阶段,运行环境的启动函数将初始化数据(initialized data)从 ROM 复制到 RAM ,并清零未初始化数据(uninitialized data)。事实上,每个进程都有自己的段,在项目中,该组织结构可能存在多次。

· 未初始化数据

使用宏SP_MEM()放置变量,基于GCC链接器命令文件,将变量放置到段”.sec.bss”中。

示例:全局变量 Task1Stk[] 和 SyncSem 放置到段”sec01”中未初始化数据域。

b38efdaa-8bf4-11ed-bfe3-dac502259ad0.png

将已有代码集成到?C/OS-MPU系统时,可以基于文件放置数据,仅需调整链接命令文件。

示例:基于提供的GCC链接命令文件模板,红色部分的行表示将文件 myfile.c中未初始化数据放置到段”secA0”中的未初始化数据域。

b3a48cf6-8bf4-11ed-bfe3-dac502259ad0.png

在启动阶段,我们需要清零段中未初始化数据域。为了简化实现,系统提供了一些有用的宏SP_INIT_)。

示例:在调用函数 MyInitData()时,段” sec01”和”secA0”中未初始化数据域清零。注意:函数”_zero_init”可能是启动环境外部提供的:

b3ab8056-8bf4-11ed-bfe3-dac502259ad0.png

· 初始化数据

使用SP_MEM()将变量放置在段”.sec.data”中。

示例:全局变量”MyNumber”和”MyValue”放到段” sec01”中的初始化数据域。此外,数据的值被放置在ROM中的数据区域。

b3b3cc20-8bf4-11ed-bfe3-dac502259ad0.png

将已有代码集成到?C/OS-MPU系统时,也可以基于文件放置数据,仅需调整链接器命令文件。

示例:根据提供的GCC链接命令文件模板,红色显示的行表示将文件 myfile.c中的初始化数据放置到段” secA0”中的初始化数据域。

b3c0e694-8bf4-11ed-bfe3-dac502259ad0.png

在启动阶段,我们需要复制段中的初始化数据域。为了简化实现,系统提供一些有用的宏SP_INIT_)。

示例:调用函数 MyInitData()时,段” sec01”和” secA0”中的初始化数据域,将从 ROM 复制到 RAM。

注意:函数"_data_init"可能不是启动环境提供的:

b3c998ac-8bf4-11ed-bfe3-dac502259ad0.png

审核编辑 :李倩

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

    关注

    37

    文章

    7197

    浏览量

    126345
  • GCC
    GCC
    +关注

    关注

    0

    文章

    111

    浏览量

    25605
  • 线程
    +关注

    关注

    0

    文章

    508

    浏览量

    20468

原文标题:空间隔离操作系统?C/OS-MPU中段的定位

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    投入超十亿!四周完成芯片适配!理想宣布开源自研汽车操作系统

    电子发烧友网报道(文/梁浩斌)在最近的2025中关村论坛年会上,理想汽车董事长兼CEO李想宣布,将自研汽车操作系统“理想星环OS”全面开源。过去车企自研操作系统其实也有一些案例,不过确实没有开源
    的头像 发表于 03-30 01:29 ?2445次阅读
    投入超十亿!四周完成芯片适配!理想宣布开源自研汽车<b class='flag-5'>操作系统</b>

    树莓派操作系统:版本、特性及设置完整指南!

    树莓派操作系统是什么?树莓派操作系统是由树莓派基金会专为树莓派开发的官方操作系统。它基于DebianLinux发行版,并针对树莓派的ARM架构进行了专门优化。树莓派操作系统有多个版本,
    的头像 发表于 07-28 18:26 ?282次阅读
    树莓派<b class='flag-5'>操作系统</b>:版本、特性及设置完整指南!

    理想汽车智驾操作系统解读

    [首发于智驾最前沿微信公众号]在智能网联与生成式AI技术深度融合的浪潮下,汽车操作系统已经从最初的简单资源管理平台,演化为承载感知决策、执行控制与安全防护的智能化中枢。理想汽车自主研发的星环OS
    的头像 发表于 05-13 10:54 ?426次阅读
    理想汽车智驾<b class='flag-5'>操作系统</b>解读

    光庭信息推出下一代整车操作系统A?OS

    ,正式推出面向中央计算架构、支持人机协同开发的下一代整车操作系统A?OS(AI × Automotive OS),赋能下一代域控软件解决方案的快速研发,显著提升整车智能化水平。 A?OS
    的头像 发表于 04-29 17:37 ?716次阅读
    光庭信息推出下一代整车<b class='flag-5'>操作系统</b>A?<b class='flag-5'>OS</b>

    中国汽车报:睿赛德携“程翧整车基础软件OS”亮相操作系统年会

    3月29日,开源操作系统年度技术会议(OS2ATC2025)在京召开。2013年至今,OS2ATC已成功举办12届。聚焦本次技术盛会,围绕“智能系统”主题,本次会议汇聚了国内一线
    的头像 发表于 04-01 21:00 ?607次阅读
    中国汽车报:睿赛德携“程翧整车基础软件<b class='flag-5'>OS</b>”亮相<b class='flag-5'>操作系统</b>年会

    理想汽车开源操作系统的特点及优势

    前天,李想官宣了理想自研汽车操作系统「理想星环OS」开源。今天,在2025中国电动汽车百人会论坛上,李想进一步分享了「理想星环OS」的特点及优势。
    的头像 发表于 04-01 16:12 ?504次阅读

    如何在APM32F407开发板上应用uC/OS-III实时操作系统

    最近我开始学习 uC/OS-III 实时操作系统,并着手将其移植到APM32F407 开发板上。在这个过程中,我遇到了许多有趣的挑战和发现,也感受到了操作系统带来的强大功能和灵活性。
    的头像 发表于 04-01 09:39 ?908次阅读
    如何在APM32F407开发板上应用uC/<b class='flag-5'>OS</b>-III实时<b class='flag-5'>操作系统</b>

    SEGGER发布下一代安全实时操作系统embOS-Ultra-MPU

    2025年3月,SEGGER发布满足周期定时分辨率要求的下一代安全实时操作系统embOS-Ultra-MPU,该系统基于成熟的embOS-Classic-MPU和embOS-Ultra
    的头像 发表于 03-31 14:56 ?649次阅读

    国产银河麒麟操作系统V10和星光麒麟V1.0操作系统如何选择?

    国产银河麒麟操作系统和星光麒麟操作系统都是由中国电子旗下科技企业麒麟软件有限公司(简称“麒麟软件”)开发的国产自主可控的操作系统。麒麟软件介绍:麒麟软件以安全可信操作系统技术为核心,面
    的头像 发表于 01-24 09:14 ?2681次阅读
    国产银河麒麟<b class='flag-5'>操作系统</b>V10和星光麒麟V1.0<b class='flag-5'>操作系统</b>如何选择?

    普华车用操作系统与黑芝麻智能武当C1200家族芯片完成适配

    普华灵智安全车控操作系统(AUTOSAR CP)和普华灵思智能驾驶操作系统(AUTOSAR AP)已与黑芝麻智能武当C1200家族芯片完成适配。
    的头像 发表于 01-06 14:16 ?854次阅读
    普华车用<b class='flag-5'>操作系统</b>与黑芝麻智能武当<b class='flag-5'>C</b>1200家族芯片完成适配

    linux是实时系统还是分时操作系统

    大家平时玩单片机基本上对于?C/OS、FreeRTOS、ThreadX这些操作系统非常熟悉了,他们都属于实时操作系统(RTOS),在工业领域比较广泛;然而对于linux这样的基于时间片
    的头像 发表于 11-11 11:43 ?1278次阅读

    新手学操作系统(第一周)

    1.介绍计算机、OS与应用程序之间的关系,计算机的硬件是底层的基础,操作系统在其之上管理硬件资源,应用程序则通过操作系统来实现其功能;2.推荐参考学习书籍;3.实践环境的介绍
    的头像 发表于 10-08 11:33 ?534次阅读
    新手学<b class='flag-5'>操作系统</b>(第一周)

    龙蜥社区引领开源操作系统新纪元:Anolis OS 23发布,装机量破800万

    在8月30日盛大举行的第二届龙蜥操作系统大会上,领先的开源操作系统根社区——龙蜥社区宣布了一项振奋人心的里程碑成就:其旗舰产品Anolis OS及其衍生版本在全球范围内的装机量已成功突破800万套
    的头像 发表于 08-30 15:09 ?995次阅读

    为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS

    管理器 接口层(C标准库) 接口层为操作系统内核向外核提供的基本功能。通过libc和libmusl可选,实现基本的标准库,方便开发者直接移植代码或者适配应用app。 内核层 内核层则为核心领域业务。每
    发表于 08-30 14:57

    为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS

    、gpio、i2c、spi驱动等 系统移植教程 作者本人及团队自制的开源掌机FunKey所采用的操作系统就是基于Linux内核和YiYiYa OS,YiYiYa
    发表于 08-27 10:08