bit band

news2024/12/27 12:32:15

位带(bit band)

简介:

在嵌入式系统和微控制器中,位带是一种特殊的内存映射技术. 它允许程序员像访问普通内存一样直接访问和修改特定寄存器的单个位.

使用bit band技术,可以通过内存映射的方式,将特定的位操作转换位对整个字的操作,从而实现对单个位的读写.

作用:

  1. 提高位操作的效率:

    在传统的微控制器编程中,修改一个寄存器的单个位通常需要先读取整个寄存器的值,修改其中的特定位,然后再将整个寄存器的值写回。这种方法在处理大量位操作时显得效率低下。位带技术通过直接将每个位映射到独立的内存地址,使得程序员可以直接对这些地址进行读写,从而大大提高了位操作的效率。

  2. 简化编程:

    使用位带技术,程序员无需记住复杂的位操作指令或位掩码,而是可以直接通过内存地址来操作特定位,这简化了编程过程,减少了出错的可能性。

  3. 降低功耗:

    由于位带操作减少了不必要的整个寄存器的读写,因此也降低了系统的功耗。

  4. 直接位访问:

    每个位都可以通过其独特的位带地址进行直接访问,使得对单个位的读写变得像访问普通内存一样简单

  5. 位操作原子性:

    在某些微控制器中,位带操作可以保证原子性,这意味着在多任务环境中,对单个位的操作不会被其他任务打断,从而确保了数据的一致性和完整性.

  6. 支持多种操作:

    位带不仅支持读和写操作,还支持切换(toggle)等操作,提供了更加灵活的控制方式

工作原理

位带的工作原理依赖于微控制器的内存映射机制. 在支持位带的微控制器中,内存会被划分成普通的内存区域和bit band区域. 对于每个bit band区域的每个位,都会被映射到一个对应的bit band别名地址. 这个映射是透明的,对程序员来说,他们只需要知道每个位对应的位带地址,就可以直接对这些地址进行读写操作.

具体地,位带地址通常是通过一定的算法计算出来的,这个算法将原始的寄存器地址和需要操作的位的索引结合起来,生成一个唯一的位带地址. 当程序员对这个位带地址进行读写的时候,微控制器内部的硬件逻辑会确保只有目标位被修改,而其他位保持不变.

例子

下面以AT32F421为例,对此做出详细介绍

AT32F421提供了两个位带区:SRAM最低1M字节空间和外设区间的最低1M字节空间.

这两个区中的地址,除了可以像普通存储器一样访问外,还可以通过他们各自的位带别名区来快捷访问这两个区中任意地址的任意比特位,位带别名区将位带区每个比特膨胀成一个32位的字. 当你访问位带别名区的一个地址时,等同于直接访问位带区的一个比特位.

名称地址范围
SRAM位带区0x2000 0000 ~0x200F FFFF.
SRAM位带别名区0x2200 0000 ~ 0x23FF FFFF.
外设位带区0x4000 0000 ~ 0x400F FFFF.
外设位带别名区0x4200 0000 ~ 0x43FF FFFF

如图所示:
在这里插入图片描述

那么位带区中某个特定的比特,我需要怎样得到他的别名区的地址呢?

以SRAM区为例:

假设该区某个字节地址为A,它的第n比特的别名区地址为(0 ≤ \le n ≤ \le 7):

AliaAddress = 0x2200 0000 + 32 × \times × (A - 0x2000 0000) + 4 × \times × n

外设区的式子基本相同,唯一需要改动的就是位带区的起始地址和位带别名区的起始地址.即

AliaAddress = 0x4200 0000 + 32 × \times × (A - 0x4000 0000) + 4 × \times × n
.即

AliaAddress = 0x4200 0000 + 32 × \times × (A - 0x4000 0000) + 4 × \times × n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1831923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git 如何撤销已经 push 的 merge

今天在合并代码时, 发现自己失误把另外一个分支 B 的代码合并到了自己分支 C, 于是想到要撤销这次 merge 一般地, 如果我们想要撤销某次 commit 可以 git revert <commit-id>. 然而, 对于 merge 类型的 commit 不能直接 git revert <commit-id> 这里举个例子: 我…

Pytorch构建vgg16模型

VGG-16 1. 导入工具包 import torch.optim as optim import torch import torch.nn as nn import torch.utils.data import torchvision.transforms as transforms import torchvision.datasets as datasets from torch.utils.data import DataLoader import torch.optim.lr_…

优思学院|IT行业学习六西格玛的价值

提到六西格玛&#xff08;Six Sigma&#xff09;&#xff0c;很多人可能首先想到的是制造业。六西格玛确实在制造业中有着广泛的应用和显著的效果&#xff0c;如提高产品质量、降低缺陷率、减少浪费等。那么&#xff0c;六西格玛在信息技术&#xff08;IT&#xff09;行业是否同…

Android11 以Window的视角来看FallbackHome的启动

在WMS中&#xff0c;使用WindowState代表着一个Window并维护着一个Window的"层级树"&#xff0c;每个Window需要按照"层级"的规则进行排列。对于FallbackHome&#xff0c;其Window是挂载在home task上&#xff0c;而home task挂载在DefaultTaskDisplayArea…

IconWorkshop中文版安装包下载及安装教程

​IconWorkshop官方版是一款使用起来非常简单便捷的可以让用户朋友根据自己的需求制作LOGO图标的工具&#xff0c;不管您是在生活中还是软件制作中遇到了需要原创LOGO的机会&#xff0c;通过最短的时间对logo图标进行细节制作&#xff0c;添加各类效果&#xff0c;设置等高线&a…

LabVIEW的热门应用

LabVIEW是一种图形化编程语言&#xff0c;因其易用性和强大的功能&#xff0c;在多个行业和领域中广泛应用。介绍LabVIEW在以下五个热门应用领域中的使用情况&#xff0c;&#xff1a;工业自动化、医疗设备与生物医学工程、科学研究与实验室自动化、能源管理与智能电网、航空航…

跟TED演讲学英文:Entertainment is getting an AI upgrade by Kylan Gibbs

Entertainment is getting an AI upgrade Link: https://www.ted.com/talks/kylan_gibbs_entertainment_is_getting_an_ai_upgrade Speaker: Kylan Gibbs Date: April 2024 文章目录 Entertainment is getting an AI upgradeIntroductionVocabularySummaryTranscriptAfterwor…

Linux下的crontab命令

文章目录 目录 文章目录 前言 一、crond和crontab 二、命令文档 三、命令使用 总结 前言 crontab命令是用于在Unix和类Unix操作系统中安排定期执行的任务的命令。crontab命令允许用户创建、编辑、显示和移除他们的crontab文件。通过在crontab文件中定义任务和执行时间&#xf…

【刷题】LeetCode刷题汇总

目录 一、刷题题号1&#xff1a;两数之和 二、解法总结1. 嵌套循环2. 双指针 一、刷题 记录LeetCode力扣刷题 题号1&#xff1a;两数之和 双循环&#xff08;暴力解法&#xff09;&#xff1a; class Solution {public int[] twoSum(int[] nums, int target) {int[] listne…

光伏工程开发的详细步骤

光伏工程作为可再生能源领域的重要组成部分&#xff0c;其开发过程涉及多个环节&#xff0c;包括开发、测绘、设计、施工和运维等。下面将详细介绍这些步骤。 一、开发阶段 1、前期调研&#xff1a;对目标地区进行能源政策、市场需求、资源条件等方面的调研&#xff0c;评估项…

spring boot接入nacos 配置中心

再接入nacos配置中心时&#xff0c;需要确认几点&#xff1a; 1. spring boot 版本 (spring boot 2.x ) 2. nacos 配置中心 服务端 版本 (1.1.4) 3. nacos client 客户端版本 (1.1.4) 方式一 1. 启动 nacos 服务端&#xff0c;这里不做解释 在配置中心中加入几个配置 2. 在…

【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt系统相关 | Qt事件 | 事件的介绍及基本概念 文章编号&#xff1a;Qt…

FPGA的基础仿真项目--七段数码管设计显示学号

一、设计实验目的 1&#xff0e; 了解数码管显示模块的工作原理。 2&#xff0e; 熟悉VHDL 硬件描述语言及自顶向下的设计思想。 3&#xff0e; 掌握利用FPGA设计6位数码管扫描显示驱动电路的方法。 二、实验设备 1. PC机 2.Cyclone IV FPGA开发板 三、扫描原理 下图所…

夏季家里粉尘螨虫满天飞?一招搞定!好用家用空气净化器品牌分享

每到夏季&#xff0c;是家中尘螨滋生的高发期。夏季无论是开窗通风还是关窗开空调&#xff0c;都很容易造成空气中的浮尘堆积&#xff0c;不注意卫生清洁&#xff0c;容易滋生细菌、尘螨。 易过敏、体质弱的人群长时间在空气污染环境中&#xff0c;很容易就会过敏或者发生其他…

在矩池云快速使用ChatTTS,文本转语音太酷了

ChatTTS 最新的一款文本转语音模型&#xff0c;目前支持英文和中文两种语言&#xff0c;面向对话场景的转化则更为精准&#xff0c;在汉语的语音韵律方面超越了以往很多同类模型&#xff0c;此外它还支持细粒度控制&#xff0c;允许在文字中加入笑声、停顿、语气词等&#xff0…

一道全等三角形证明题

接着上次那道题 一道初中一年级几何题解析&#xff0c;再来做一道初中一年级下半学期几何题目&#xff1a; 傍晚丢垃圾散步时看到小小的学生学习群里丢了这个题目&#xff0c;想到一个解法。实在构造不出契合题干阅读材料结论的三角形&#xff0c;索性先根据这结论做一个推论…

openh264 帧间预测编码过程源码分析

openh264 OpenH264 是一个开源的 H.264 编码和解码器&#xff0c;由思科系统开发并维护。它专为实时应用程序如 WebRTC 设计&#xff0c;提供了从基础到高级特性的广泛支持。OpenH264 的编码器支持从 Constrained Baseline Profile 到 5.2 级别&#xff0c;允许任意分辨率的编…

硕士毕业论文《基于磁纹理的磁化动力学研究》

前言 本文是博主的硕士毕业论文&#xff0c;应该也是“自旋电子学&#xff08;微磁学&#xff09;”博客专栏的最后一篇博客&#xff0c;该毕业论文预设排版的PDF版本见下载链接&#xff1a;https://download.csdn.net/download/qq_43572058/89447526。若该博客专栏对读者您的…

一分钱不花!本地部署Google最强开源AI大模型Gemma教程

谷歌发布了轻量级开源系列模型Gemma&#xff0c;其性能强大&#xff0c;可与主流开源模型竞争。通过Ollama可轻松部署Gemma模型&#xff0c;并使用JANAI美化UI界面。显卡在AIGC应用中至关重要&#xff0c;推荐选择性能强、显存大的NVIDIA系列显卡。 半个月前&#xff0c;谷歌搞…

验证药品综合稳定性试验箱的挑战与解决方案

在药品研发和生产过程中&#xff0c;药品的稳定性是一个至关重要的因素。为了确保药品在储存和运输过程中保持其质量和疗效&#xff0c;药品综合稳定性试验箱被广泛用于模拟各种环境条件下的药品稳定性。然而&#xff0c;在实际应用中&#xff0c;药品综合稳定性试验箱的验证面…