http://blog.csdn.net/shevsten/article/details/7676397

Cortex M3 Bit-banding简介

分类: ARM MCU2012-06-19 14:30 1369人阅读 评论(0) 收藏 举报
存储byte语言ioc
bit-band是Cortex-M3内核中针对某一段区域进行位和字映射的机制,对于位操作,如IO控制LED,相比传递的C语言的位操作,提供了很大的方便.
bit-band 区域将存储器别名区(bit-band alias region)的一个字映射为 bit-band区的一个位. 处理器存储器映射包括两个 bit-banding 区域, 它们分别为 SRAM 和外设存储区域中的最低的 1MB.
下图是处理器的地址空间映射,包含了(bit-banding区域的映射)

Cortex-M3 存储器映射有2个32MB别名区,它们被映射为两个1MB的bit-band 区:

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


映射公式显示如何将别名区中的字与 bit-band 区中的对应位或目标位关联,映射公式如下:
bit_word_offset = (byte_offset x 32) + (bit_number x 4)
bit_word_addr = bit_band_base + bit_word_offset

这里:

  • Bit_word_offset 为bit-band存储区中的目标位的位置
  • Bit_word_addr为别名存储区中映射为目标位的字的地址
  • Bit_band_base 是别名区的开始地址
  • Byte_offset 为bit-band 区中包含目标位的字节的编号
  • Bit_number 为目标位的位位置(0-7)

下图显示了 SRAM bit-band 别名区和 SRAMbit-band 区之间的 bit-band 映射的例子:

  • 地址 0x23FFFFE0 的别名字映射为 0x200FFFFF 的bit-band 字节的位 0:
    0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4
  • 地址 0x23FFFFFC 的别名字映射为 0x200FFFFF 的bit-band 字节的位 7: 
    0x23FFFFFC=0x22000000+(0xFFFFF*32)+7*4
  • 地址 0x22000000 的别名字映射为 0x20000000 的bit-band 字节的位 0:
    0x22000000=0x22000000+(0*32)+0*4
  • 地址 0x220001C 的别名字映射为 0x20000000 的bit-band 字节的位 0:
    0x2200001C=0x22000000+(0*32)+7*4

向别名区写入一个字与在 bit-band 区的目标位执行读-修改-写操作具有相同的作用.
写入别名区的字的位0决定了写入bit-band 区的目标位的值。将位 0 为1的值写入别名区表示向 bit-band 位写入1, 将位0 为0 的值写入别名区表示向bit-band 位写入 0.
别名字的位[31:1]在 bit-band 位上不起作用。写入 0x01 与写入 0xFF 的效果相同, 写入0x00 与写入0x0E 的效果相同.
读别名区的一个字返回 0x01 或0x00, 0x01 表示 bit-band 区中的目标位置位, 0x00 表示目标位清零。位[31:1]将为 0。 
注:采用大端格式时,对 bit-band 别名区的访问必须以字节方式。否则访问值不可预知。

以下是一个根据bit-band区域地址和目标位来计算bit-band alias region映射的对应字节的宏(来源于Atmel ASF的bit-banding Example):

[cpp] view plaincopy
  1. /**
  2. *  \brief Calculate bit band alias address.
  3. *
  4. *  Calculate the bit band alias address and return a pointer address to word.
  5. *
  6. *  \param addr The byte address of bitbanding bit.
  7. *  \param bit  The bit position of bitbanding bit.
  8. *  \callergraph
  9. */
  10. #define BITBAND_ALIAS_ADDRESS(addr, bit) \
  11. ((volatile uint32_t*)((((uint32_t)(addr) & 0xF0000000) + 0x02000000) \
  12. +((((uint32_t)(addr)&0xFFFFF)*32)\
  13. +(  (uint32_t)(bit)*4))))

Cortex M3 Bit-banding简介相关推荐

  1. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  2. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  3. cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等

    cortex m3 开源 您好,开放游戏迷! 在本周的版本中,我们将了解Steam的1.25亿活跃帐户和Game Developers Conference,这是一个开源增强现实头戴设备,Linux游 ...

  4. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  5. cortex m3/m4处理器的复位设计

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...

  6. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  7. stm32 cortex M3 汇编指令集 英文详解

    这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...

  8. Cortex‐M3的Faults异常究竟是什么?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 有许多朋友在学习,或者开发STM32时都遇到过HardFault_Handler的情 ...

  9. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 有啥区别

    ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...

最新文章

  1. IPCC气候变暖最新报告:不要眼见,要“远见”
  2. 组合数取模 Lucas定理
  3. 使用代码创建具有organization unit的opportunity
  4. yolo opencv_如何使用Yolo,SORT和Opencv跟踪足球运动员。
  5. bluecam连接步骤说明_厂家详解旋片式真空泵使用说明
  6. LeetCode 2094. 找出 3 位偶数
  7. python list tuple 消耗_Python list 和 tuple 使用小记
  8. 东芝宣布时域神经网络技术:要让低功率物联网设备也能深度学习
  9. 通过蓝牙连接进行ActiveSync同步
  10. 互联网在线地图平台对比分析
  11. 【PX4自动驾驶用户指南】距离传感器
  12. 【Python编程:从入门到实践】第十六章练习题
  13. 小米有品开出全球首家商业旗舰店:加速新零售扩张
  14. python深度学习include框架_《用Python实现深度学习框架》上市
  15. 科林明伦杯哈尔滨理工大学第六届程序设计团队赛-Team模拟
  16. 牛客AI模拟面试1测开岗
  17. vs2017开发ActiveX(主讲OCX)(七)、方法
  18. pcmcia oracle vm vitualbox 虚拟机,virtualbox中调整虚拟机的硬盘大小 与 CentOS卡在进度条启动缓慢进不去解决办法...
  19. 云展网 课件 图片 下载
  20. 如何在 Linux 系统中配置 firewalld 防火墙策略

热门文章

  1. HTTPSConnectionPool(host=‘music.163.com‘, port=443): Max retries exceeded with url: /weapi/comment/
  2. 支持Micro USB安卓接口与iphone 8手机的5W无线充电芯片|无线快充芯片小封装SOP8外围简单精简
  3. CSS3无限滚动(无线循环滚动)
  4. pandas数据处理:常用却不甚了解的函数,pd.read_excel()
  5. 如何分析和判断中国经济大势
  6. 哈氏合金C276钢带、C22带钢、254SMO薄带精密箔带需求增速
  7. 2019年软件QA与测试八大关键词
  8. 机器学习一百天 数据预处理
  9. 区块链技术与应用-----区块链概念
  10. 中e管家投资理财需了解的基础知识