【嵌入式】位带操作+咬尾中断+晚到中断 解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 位带操作 什么是位带操作? 对32MB SRAM 别名区的访问映射为对1MB SRAM的bit-band 区的访问。 对32MB 外设别名区的访问映射为对1MB 外设bit-band 区的访问。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

位带操作

什么是位带操作?

  1. 对32MB SRAM 别名区的访问映射为对1MB SRAM的bit-band 区的访问。
  2. 对32MB 外设别名区的访问映射为对1MB 外设bit-band 区的访问。

即下图:

image.png

以SRAM区的映射为例:
image.png

总结来说cortex-M3内核的位带映射就两块:

  • 0x20000000 左右的,位带映射的基址地址是0x22000000
  • 0x40000000 左右的,位带映射的基址地址是0x42000000

位带操作计算

公式:

$$ bit\_word\_addr = bit\_band\_alias\_base + (byte\_offset×32) + (bit\_number×4) $$

怎么计算?来看个具体例子:

地址? 的别名字映射为0x200FFFFF的bit-band字节的位0
$?=0x22000000+0xFFFFF*32+0*4$
结果为 0x23FFFFE0
注意事项:
  • *32:可以先转为二进制表示,再左移五位,再重新转为十六进制
  • 所有数必须化为相同进制去算

位带操作有什么用?

课程参考答案:

  • 方便对串行接口器件的操作。尤其是对硬件I/O 密集型的底层程序,如GPIO接口的bit位控制。

(想要修改时,不需要读取寄存器里的值,修改,然后再送回去;只需要读取别名区的值然后改)

  • 简化跳转的判断

(大致原理同上)

  • 并发控制

(个人的一点碎碎念:其实我看上面那个图,感觉是把小小的一块映射到了一块更大的地址空间去,有种扩充对有限空间的利用的意味吧,不知道我有没有理解错)

中断的两种处理方式

  • 本质上是两个中断接连到来,两者优先级不同,但前者已经准备或正在被响应,此时应该怎么处理后者的问题。

咬尾中断

系统正在处理当前中断,后到的中断优先级不如先到的,它需要等待前者被执行后才执行。

原本前后衔接的过程是需要先出栈,再入栈。但实际上这出栈又入栈的是同一批寄存器等,很耗时,所以就省掉了这一步,称为“咬尾”(后者咬掉了前者留下的小尾巴直接继续)。

image.png

晚到中断

系统正打算处理当前中断(已经入好栈准备保护现场了),后到的优先级更高,因此这次的入栈就相当于是为后者准备的,先响应后者的中断。

后者虽然晚到,但它的待遇是不差的,其他的得为它让路。

  • 注意:如果后者来得太晚,中断服务程序(ISR)已经开始执行,那就按普通的抢占处理。
相关文章
|
6月前
|
SQL 存储 数据库
数据库开发表操作案例的详细解析
数据库开发表操作案例的详细解析
39 0
|
4月前
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
|
5月前
|
存储 算法 搜索推荐
深入解析String数组的操作与性能优化策略
深入解析String数组的操作与性能优化策略
|
4月前
|
存储 数据管理 数据库
CRUD操作实战:从理论到代码实现的全面解析
【7月更文挑战第4天】在软件开发领域,CRUD代表了数据管理的四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这四个操作构成了大多数应用程序数据交互的核心。本文将深入讲解CRUD概念,并通过一个简单的代码示例,展示如何在实际项目中实现这些操作。我们将使用Python语言结合SQLite数据库来演示,因为它们的轻量级特性和易用性非常适合教学目的。
372 2
|
5月前
|
监控 关系型数据库 分布式数据库
PolarDB时间范围内PCU用量统计:深度解析与操作指南
了解PolarDB云原生数据库的PCU计费至关重要,1PCU相当于1核2GB资源。文章详述如何统计指定时间内PCU用量:登录控制台,查看集群监控,导出数据分析,或使用API接口获取信息。统计结果有助于分析数据库负载、优化资源使用和成本控制。通过对比不同时间段的PCU用量,用户可做出扩展或优化决策。未来,PolarDB有望提供更强大的统计工具。
|
4月前
|
传感器 芯片
嵌入式通信协议全解析:SPI、I²C、UART详解(附带面试题)
通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说,通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。在出现电波传递通信后,通信被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。通信方式包括利用“电”来传递消息的电信,这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用。
964 0
|
4月前
|
存储 算法 搜索推荐
深入解析String数组的操作与性能优化策略
深入解析String数组的操作与性能优化策略
|
4月前
|
JavaScript
js 解析和操作树 —— 获取树的深度、提取并统计树的所有的节点和叶子节点、添加节点、修改节点、删除节点
js 解析和操作树 —— 获取树的深度、提取并统计树的所有的节点和叶子节点、添加节点、修改节点、删除节点
120 0
|
5月前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
58 0
|
5月前
|
Java 数据处理 索引
JAVA中的插入操作:深入解析与实现
JAVA中的插入操作:深入解析与实现
84 1

推荐镜像

更多