ARM屏蔽指令介绍

本文档深入浅出地介绍了ARM处理器中用于隔离的指令,旨在帮助读者更好地理解和应用这些汇编指令,促进技术交流和学习。

注:该文档是参考网上资料整理出来,以通俗的方式讲解,方便大家理解,如有不懂,可以私下讨论,共同进步。

1.屏蔽指令的介绍

1.1.屏蔽指令简介
DMB :全称 Data Memory Barrier,仅当所有在它前面的存储器访问都执行完毕后,才执行它后面的存储器访问动作(注意只对存储器访问敏感);


DSB:全称Data Synchronous Barrier,比DMB严格:仅当所有在它前面的存储器访问都执行完毕后,才执行它在后面的指令(亦即任何指令都要等待) ;


ISB:全称 Instruction Synchronous Barrier,最严格: 清洗流水线,以保证所有它前面的指令都执行完毕之后,才执行它后面的指令。
 
DMB与DSB的区别:
DMB作用的范围比DSB小,DSB比DMB严格,DSB牺牲的性能比DMB大,DMB只对存储器访问的指令敏感,而DSB是对所有的指令都敏感,所以说它
宁可错杀也不漏网 ,对于新手来说更加保险,只有大虾才会使用DMB。


1.2.ARM官方文档介绍
数据内存屏障指令、数据同步屏障指令和指令同步屏障指令。


语法
DMB{cond} {option}
DSB{cond} {option}
ISB{cond} {option}
其中:
cond
是一个可选的条件代码(请参阅条件执行)。
option
对提示操作的可选限制。


用法
这些是提示指令。 是否实现这些指令是可选的。 只要其中任何一个指令未实现,则与 NOP 效果相同。


DMB
数据内存屏障可作为内存屏障使用。 它可确保会先检测到程序中位于 DMB 指令前的所有显式内存访问指令,然后再检测到程序中位于 DMB 指令后的显式内存访问指令。它不影响其他指令在处理器上的执行顺序。


option 的允许值为:


SY
完整的系统DMB 操作。 这是缺省情况,可以省略。


DSB
数据同步屏障是一种特殊类型的内存屏障。 只有当此指令执行完毕后,才会执行程序中位于此指令后的指令。 当满足以下条件时,此指令才会完成:


位于此指令前的所有显式内存访问均完成。


位于此指令前的所有缓存、跳转预测和 TLB 维护操作全部完成。


允许的值为:


SY
完整的系统 DSB 操作。 这是缺省情况,可以省略。


UN
只可完成于统一点的DSB 操作。


ST
存储完成后才可执行的DSB 操作。


UNST
只有当存储完成后才可执行的DSB 操作,并且只会完成于统一点。


ISB


指令同步屏障可刷新处理器中的管道,因此可确保在 ISB 指令完成后,才从高速缓存或内存中提取位于该指令后的其他所有指令。这可确保提取时间晚于 ISB 指令的指令能够检测到 ISB 指令执行前就已经执行的上下文更改操作的执行效果,例如更改ASID 或已完成的 TLB 维护操作,跳转预测维护操作以及对 CP15 寄存器所做的所有更改。


此外,ISB 指令可确保程序中位于其后的所有跳转指令总会被写入跳转预测逻辑,其写入上下文可确保 ISB 指令后的指令均可检测到这些跳转指令。这是指令流能够正确执行的前提条件。


option 的允许值为:


SY
完整的系统DMB 操作。 这是缺省情况,可以省略。


体系结构
这些 ARM 和 32 位 Thumb 指令可用于 ARMv7。


这些指令均无 16 位 Thumb 版本。




1.3.其他文档对屏蔽指令的相关描述
在《Cortex-M3权威指南》中对屏蔽指令的描述很具代表性,而且通俗易懂,故摘录如下。
屏蔽指令
Cortex-M3,这种内核支持许多屏蔽指令。在下一个指令或者事件开始执行以前,这些屏蔽指令常常用于确保必然事件执行完成。
在处理器内部,指令同步屏蔽(ISB)刷新流水线;以致于这个指令执行完以后,紧接着从缓存或者存储器取出指令表。这个表会改变这个系统,例如MPU立即生效。
数据同步屏蔽(DSB)指令作为一种特殊的存储器屏蔽指令。访问外部存储器操作完成之前,执行完成数据同步屏蔽指令(DSB)。执行数据同步屏蔽指令,在该指令没有完成以前不再执行任何指令——换句话说,执行完成所有的挂起操作。
数据存储屏蔽(DMB)指令作为一种存储器屏蔽指令。数据存储屏蔽(DMB)指令和数据同步屏蔽(DSB)指令有微小的差别。数据存储屏蔽(DMB)指令确保:数据同步屏蔽(DSB)指令执行完成之前,访问任意存储器;执行数据同步
<think>嗯,用户现在想了解LiteOS的操作系统特点和应用场景,尤其是和海思芯片的关系。首先,我需要回顾之前的对话,确保信息的一致性。之前提到过海思芯片支持多种操作系统,包括LiteOS,现在用户需要更详细的信息。 用户引用了三个资料,其中引用[1]详细说明了LiteOS的特点,比如轻量级、低功耗、互联互通和安全能力,适用于IoT领域。引用[3]提到了Hi3861芯片连接华为物联网平台的操作方法,这可能与LiteOS在具体硬件上的应用相关。而引用[2]则概述了海思芯片的优势,强调高性能和低功耗,这和LiteOS的特点相契合。 接下来,我需要整理LiteOS的主要特点,比如内核大小、启动时间、功耗管理、安全特性等,结合引用中的信息。同时,应用场景方面,用户可能关心智能家居、穿戴设备、车联网等,这些在之前的回答中也有涉及,需要再次确认。 关于与海思芯片的相关性,需要具体说明哪些型号的芯片支持LiteOS,比如Hi3861、Hi3516D V300,以及它们如何结合使用,比如在智能摄像头或物联网终端中的应用。此外,用户可能想知道开发工具和生态支持,比如华为物联网平台和开发框架,这些信息在引用[3]中提到过。 要确保回答结构清晰,分点列出特点和场景,并强调与海思芯片的结合点。同时,注意用户可能需要的实际案例或开发资源,比如小熊派开发板的例子,这样可以帮助开发者快速上手。最后,生成的相关问题要引导用户深入了解更多技术细节或应用实例,比如开发工具或安全机制。</think>### Huawei LiteOS 操作系统特点及与海思芯片的协同应用 #### 一、LiteOS 核心特点 1. **轻量级内核** - 内核体积小于 $10\,\text{KB}$,内存占用低至 $1\,\text{KB}$,适用于资源受限的嵌入式设备[^1] - 支持多任务调度,提供优先级抢占机制,满足实时性需求 2. **低功耗设计** - 采用动态功耗管理(DPM)技术,空闲任务自动进入休眠模式 - 典型场景下功耗可降低 $30\%$ 以上,适合电池供电设备[^1] 3. **互联互通能力** - 内置协议栈支持 $\text{CoAP/MQTT/LwM2M}$,兼容华为云 IoT 平台 - 提供端云协同框架,例如海思 Hi3861 芯片可通过 LiteOS 快速接入华为云[^3] 4. **安全机制** - 支持 $\text{DTLS/TLS}$ 加密传输,提供内存保护单元(MPU)隔离 - 通过芯片级安全启动与可信执行环境(TEE)结合,如海思 Hi3516 系列的安全启动流程[^1] 5. **开发友好性** - 提供 LiteOS Studio 集成开发环境,支持一键式编译烧录 - 兼容 POSIX 接口,降低跨平台移植成本 #### 二、LiteOS 与海思芯片的典型应用场景 | 芯片型号 | 应用领域 | 技术方案 | |----------------|--------------------|--------------------------------------------------------------------------| | **Hi3861** | 物联网终端 | LiteOS + Wi-Fi 模组,实现智能家居设备云端接入(参考小熊派开发板案例)[^3] | | **Hi3516D V300** | 智能摄像头 | LiteOS 驱动 ISP 图像处理单元,支持人脸识别算法部署 | | **Hi2115** | 可穿戴设备 | 低功耗心率监测 + BLE 数据传输,续航时间达 30 天 | | **Hi3731** | 工业控制器 | 实时任务调度 + Modbus 协议栈,响应延迟小于 $1\,\text{ms}$ | #### 三、海思芯片适配关键技术 1. **硬件加速集成** - 海思 NNIE(神经网络推理引擎)与 LiteOS 任务调度协同,实现端侧 AI 推理 - 示例:Hi3519AV100 芯片通过 LiteOS 调用 NPU 完成视频结构化分析 2. **通信协议优化** - 海思 Wi-Fi/BLE 双模芯片与 LiteOS 轻量协议栈深度适配,传输效率提升 $40\%$ 3. **安全启动链** $$ \text{BootROM} \rightarrow \text{LiteOS Secure Bootloader} \rightarrow \text{应用固件} $$ 通过芯片 OTP 存储根证书,确保固件完整性校验[^1] #### 四、开发资源与生态 1. **工具链** - HiSilicon LiteOS SDK:包含芯片专用 HAL 库、调试工具 - 华为物联网平台:提供设备管理、OTA 升级服务 2. **典型开发框架** ```c void main() { los_init(); // 初始化 LiteOS 内核 hi_i2c_init(); // 调用海思芯片 I2C 驱动 create_task(sensor_task); // 创建传感器数据采集任务 los_start(); // 启动调度器 } ``` 3. **开源社区支持** - 小熊派 BearPi-HM_Nano 开发板提供 Hi3861 + LiteOS 的完整示例(如快速接入华为云)[^3] --- ### 相关问题 1. LiteOS 如何实现与海思 NPU 的协同计算? 2. 在海思芯片上移植 LiteOS 需要修改哪些底层驱动? 3. LiteOS 的安全启动机制如何与海思 TEE 技术配合?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值