当前位置: 首页 > news >正文

网站 短链接怎么做搜狗seo软件

网站 短链接怎么做,搜狗seo软件,无锡点个赞建站,香港价格网STM32H7的MPU学习记录 什么是MPU?MPU的三种内存类型内存映射MPU保护区域以及优先级 MPU的寄存器XN位AP位TEX、C、B、S位SRD 位SIZE 位CTRL 寄存器的各个位 示例总结 什么是MPU? MPU(Memory Protection Unit,内存保护单元&#xf…

STM32H7的MPU学习记录

  • 什么是MPU?
    • MPU的三种内存类型
    • 内存映射
    • MPU保护区域以及优先级
  • MPU的寄存器
    • XN位
    • AP位
    • TEX、C、B、S位
    • SRD 位
    • SIZE 位
    • CTRL 寄存器的各个位
  • 示例
  • 总结

什么是MPU?

MPU(Memory Protection Unit,内存保护单元),早在 STM32F1 和 F4 芯片上面也是有这个功能的,但是基本用不上。但是到了 H7 就得用上了,因为要设置 Cache。
MPU 可以将 memory map 内存映射区分为多个具有一定访问规则的区域,通过这些规则可以实现
如下功能:
◆ 防止不受信任的应用程序访问受保护的内存区域。
◆ 防止用户应用程序破坏操作系统使用的数据。
◆ 通过阻止任务访问其它任务的数据区。
◆ 允许将内存区域定义为只读,以便保护重要数据。
◆ 检测意外的内存访问。
简单的说就是内存保护、外设保护和代码访问保护。

MPU的三种内存类型

MPU 可以配置的三种内存类型如下:
Normal memory
CPU 以最高效的方式加载和存储字节、半字和字,对于这种内存区,CPU 的加载或存储不一定要按照程序列出的顺序执行。
Device memory
对于这种类型的内存区,加载和存储要严格按照次序进行,这样是为了确保寄存器按照正确顺序设置。
Strongly ordered memory
程序完全按照代码顺序执行,CPU 需要等待当前的加载/存储指令执行完毕后才执行下一条指令。这样会导致性能下降。

内存映射

内存映射就是 32 位的 CM7 内核整体可以寻址的 0 到 2^32 -1 共计 4GB 的寻址空间。通过这些地址可以访问 RAM、Flash、外设等。下面是内存映射的轮廓图,IC 厂家使用时,再做细分,添加相应的硬件功能。
在这里插入图片描述

MPU保护区域以及优先级

MPU 可以配置保护 16 个内存区域(这 16 个内存域是独立配置的),每个区域最小要求 256 字节,每个区域还可以配置为 8 个子区域。由于子区域一般都相同大小,这样每个子区域的大小就是 32 字节,正好跟 Cache 的 Cache Line 大小一样。
MPU 可以配置的 16 个内存区的序号范围是 0 到 15,还有默认区 default region,也叫作背景区,序号-1。由于这些内存区可以嵌套和重叠,所以这些区域在嵌套或者重叠的时候有个优先级的问题。序号15 的优先级最高,以此递减,序号-1,即背景区的优先级最低。这些优先级是固定的
下面通过一个具体的实例帮助大家理解。如下所示共有 7 个区,背景区和序号 0-5 的区。内存区 4 跟内存区 0 和 1 有重叠部分,那么重叠部分将按照内存区 4 的配置规则执行;内存区 5 被完全包含在内存区3 里面,那么这部分内存区将按照内存区 5 的配置规则执行。
在这里插入图片描述

MPU的寄存器

这里重点讲解寄存器MPU_RASR 和控制寄存器,此寄存器的定义如下:
在这里插入图片描述

XN位

XN=0 表示使能指令提取,即这块内存区可以执行程序代码,XN=1 表示禁止指令提取,即这块内存
区禁止执行程序代码。
对应的 HAL 库 MPU 参数如下:

#define MPU_INSTRUCTION_ACCESS_ENABLE ((uint8_t)0x00)
#define MPU_INSTRUCTION_ACCESS_DISABLE ((uint8_t)0x01)

AP位

AP 的具体定义如下:
在这里插入图片描述

#define MPU_REGION_NO_ACCESS ((uint8_t)0x00)
#define MPU_REGION_PRIV_RW ((uint8_t)0x01)
#define MPU_REGION_PRIV_RW_URO ((uint8_t)0x02)
#define MPU_REGION_FULL_ACCESS ((uint8_t)0x03)
#define MPU_REGION_PRIV_RO ((uint8_t)0x05)
#define MPU_REGION_PRIV_RO_URO ((uint8_t)0x06)

TEX、C、B、S位

TEX,C,B 和 S 的定义如下,这仅关注 TEX = 0b000 和 0b001,其它的 TEX 配置基本用不到。
在这里插入图片描述
TEX 用于配置 Cache 策略,支持如下四种情况,需要配合 C 和 B 位的配置才能实现。
在这里插入图片描述
TEX 对应的 HAL 库 MPU 参数给了三个,实际应用中仅用到前两个 MPU_TEX_LEVEL0 和MPU_TEX_LEVEL1

#define MPU_TEX_LEVEL0 ((uint8_t)0x00)
#define MPU_TEX_LEVEL1 ((uint8_t)0x01)
#define MPU_TEX_LEVEL2 ((uint8_t)0x02)

C 位对应的 HAL 库 MPU 参数如下,用于使能或者禁止 Cache。

#define MPU_ACCESS_CACHEABLE ((uint8_t)0x01)
#define MPU_ACCESS_NOT_CACHEABLE ((uint8_t)0x00)

B 位对应的 HAL 库 MPU 参数如下,用于配合 C 位实现 Cache 模式下是否使用缓冲。

#define MPU_ACCESS_BUFFERABLE ((uint8_t)0x01)
#define MPU_ACCESS_NOT_BUFFERABLE ((uint8_t)0x00)

S 位对应的 HAL 库 MPU 参数如下,用于解决多总线或者多核访问的共享问题。

#define MPU_ACCESS_SHAREABLE ((uint8_t)0x01)
#define MPU_ACCESS_NOT_SHAREABLE ((uint8_t)0x00)

SRD 位

这个位用于控制内存区的子区域,使用的是 bit[15:8],共计 8 个 bit,一个 bit 控制一个子区域,0
表示使能此子区域,1 表示禁止此子区域。
一般情况,基本不使用子区域的禁止功能,所以配置 HAL 库的 SubRegionDisable 参数时,直接取
值 0x00 即可,表示 8 个子区域均使能。

SIZE 位

SIZE 位使用的是 bit[5:1],共计 5 个 bit,可以表示 2^5 = 32 种大小。 对应的 HAL 库给出了可以配置的 28 个参数。

#define MPU_REGION_SIZE_32B ((uint8_t)0x04)
#define MPU_REGION_SIZE_64B ((uint8_t)0x05)
#define MPU_REGION_SIZE_128B ((uint8_t)0x06)
#define MPU_REGION_SIZE_256B ((uint8_t)0x07)
#define MPU_REGION_SIZE_512B ((uint8_t)0x08)
#define MPU_REGION_SIZE_1KB ((uint8_t)0x09)
#define MPU_REGION_SIZE_2KB ((uint8_t)0x0A)
#define MPU_REGION_SIZE_4KB ((uint8_t)0x0B)
#define MPU_REGION_SIZE_8KB ((uint8_t)0x0C)
#define MPU_REGION_SIZE_16KB ((uint8_t)0x0D)
#define MPU_REGION_SIZE_32KB ((uint8_t)0x0E)
#define MPU_REGION_SIZE_64KB ((uint8_t)0x0F)
#define MPU_REGION_SIZE_128KB ((uint8_t)0x10)
#define MPU_REGION_SIZE_256KB ((uint8_t)0x11)
#define MPU_REGION_SIZE_512KB ((uint8_t)0x12)
#define MPU_REGION_SIZE_1MB ((uint8_t)0x13)
#define MPU_REGION_SIZE_2MB ((uint8_t)0x14)
#define MPU_REGION_SIZE_4MB ((uint8_t)0x15)
#define MPU_REGION_SIZE_8MB ((uint8_t)0x16)
#define MPU_REGION_SIZE_16MB ((uint8_t)0x17)
#define MPU_REGION_SIZE_32MB ((uint8_t)0x18)
#define MPU_REGION_SIZE_64MB ((uint8_t)0x19)
#define MPU_REGION_SIZE_128MB ((uint8_t)0x1A)
#define MPU_REGION_SIZE_256MB ((uint8_t)0x1B)
#define MPU_REGION_SIZE_512MB ((uint8_t)0x1C)
#define MPU_REGION_SIZE_1GB ((uint8_t)0x1D)
#define MPU_REGION_SIZE_2GB ((uint8_t)0x1E)
#define MPU_REGION_SIZE_4GB ((uint8_t)0x1F)

CTRL 寄存器的各个位

在这里插入图片描述

示例

static void MPU_Config( void )
{MPU_Region_InitTypeDef MPU_InitStruct;/* 禁止 MPU */HAL_MPU_Disable();/* 配置 AXI SRAM 的 MPU 属性为 Write back, Read allocate,Write allocate */MPU_InitStruct.Enable = MPU_REGION_ENABLE;MPU_InitStruct.BaseAddress = 0x24000000;MPU_InitStruct.Size = MPU_REGION_SIZE_512KB;MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;MPU_InitStruct.Number = MPU_REGION_NUMBER0;MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;MPU_InitStruct.SubRegionDisable = 0x00;MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;HAL_MPU_ConfigRegion(&MPU_InitStruct);/* 配置 FMC 扩展 IO 的 MPU 属性为 Device 或者 Strongly Ordered */MPU_InitStruct.Enable = MPU_REGION_ENABLE;MPU_InitStruct.BaseAddress = 0x60000000;MPU_InitStruct.Size = ARM_MPU_REGION_SIZE_64KB;MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;MPU_InitStruct.Number = MPU_REGION_NUMBER1;MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;MPU_InitStruct.SubRegionDisable = 0x00;MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;HAL_MPU_ConfigRegion(&MPU_InitStruct);/*使能 MPU */HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}

总结

本文章对MPU基本功能和寄存器进行了概述,并放入了一个示例,仅供个人学习用。


文章转载自:
http://mundic.c7630.cn
http://bracteole.c7630.cn
http://emiocytosis.c7630.cn
http://minacity.c7630.cn
http://orthognathous.c7630.cn
http://avengement.c7630.cn
http://edentate.c7630.cn
http://exchangeability.c7630.cn
http://publicise.c7630.cn
http://doggy.c7630.cn
http://kinesiatrics.c7630.cn
http://expectantly.c7630.cn
http://goatskin.c7630.cn
http://novelize.c7630.cn
http://dilatation.c7630.cn
http://mercurize.c7630.cn
http://lamentations.c7630.cn
http://troublemaker.c7630.cn
http://dusk.c7630.cn
http://clarionet.c7630.cn
http://discernment.c7630.cn
http://repat.c7630.cn
http://silo.c7630.cn
http://apostolic.c7630.cn
http://indemonstrable.c7630.cn
http://quartette.c7630.cn
http://intragenic.c7630.cn
http://hemialgia.c7630.cn
http://moquette.c7630.cn
http://pillwort.c7630.cn
http://shammash.c7630.cn
http://shippon.c7630.cn
http://phrenic.c7630.cn
http://savant.c7630.cn
http://cacumen.c7630.cn
http://brazilein.c7630.cn
http://advocate.c7630.cn
http://inundant.c7630.cn
http://litterbug.c7630.cn
http://ovarian.c7630.cn
http://wels.c7630.cn
http://wallop.c7630.cn
http://dryly.c7630.cn
http://shine.c7630.cn
http://deferral.c7630.cn
http://patency.c7630.cn
http://breadline.c7630.cn
http://coasting.c7630.cn
http://cash.c7630.cn
http://malang.c7630.cn
http://methoxychlor.c7630.cn
http://quibble.c7630.cn
http://locomote.c7630.cn
http://selfishness.c7630.cn
http://ecclesiasticism.c7630.cn
http://shimmy.c7630.cn
http://antiquarian.c7630.cn
http://embolize.c7630.cn
http://colistin.c7630.cn
http://gooky.c7630.cn
http://abundantly.c7630.cn
http://hydronitrogen.c7630.cn
http://incontrollably.c7630.cn
http://slugging.c7630.cn
http://bushelage.c7630.cn
http://hoarseness.c7630.cn
http://mummification.c7630.cn
http://kk.c7630.cn
http://apocalypticism.c7630.cn
http://billon.c7630.cn
http://varnish.c7630.cn
http://kolinsky.c7630.cn
http://senegal.c7630.cn
http://metallography.c7630.cn
http://oscillator.c7630.cn
http://undercliff.c7630.cn
http://rearmament.c7630.cn
http://zoophilism.c7630.cn
http://wesleyanism.c7630.cn
http://triskelion.c7630.cn
http://wangle.c7630.cn
http://arbiter.c7630.cn
http://incurvation.c7630.cn
http://telluretted.c7630.cn
http://cathay.c7630.cn
http://worthful.c7630.cn
http://binge.c7630.cn
http://viscidity.c7630.cn
http://luing.c7630.cn
http://redneck.c7630.cn
http://vindicatory.c7630.cn
http://kibitka.c7630.cn
http://hypodermically.c7630.cn
http://pornography.c7630.cn
http://outmeasure.c7630.cn
http://nominatum.c7630.cn
http://pronumeral.c7630.cn
http://legree.c7630.cn
http://muscovitic.c7630.cn
http://uncommendable.c7630.cn
http://www.zhongyajixie.com/news/95303.html

相关文章:

  • b2c网站开发背景及必要性市场营销公司有哪些
  • 上海企业网上公示官网手机优化大师官方免费下载
  • 有哪些做外贸免费的网站中国最好的网络营销公司
  • 做电商哪个平台好商丘seo优化
  • 浙江苏省城乡建设厅网站百度竞价入口
  • dreamweaver动态网页制作重庆黄埔seo整站优化
  • 千秋网络是家西安做网站的公司国际域名注册网站
  • 网站模版一样 内容不同侵权吗熊猫关键词工具官网
  • wordpress用户名无效手机关键词排名优化
  • 做销售网站怎么在百度免费推广
  • 开锁都在什么网站做seo智能优化软件
  • 长沙专门做网站公司有哪些台湾新闻最新消息今天
  • vs做网站怎么调试宁波专业seo外包
  • 强大的技术团队网站建设湖南关键词优化品牌价格
  • 攀枝花做网站广告媒体资源平台
  • 民治网站设计圳网站建设公司广州关于进一步优化疫情防控措施
  • 网站同时做竞价和优化可以吗现在最火的推广平台有哪些
  • 各种网站底部图标代码开平网站设计
  • 平面图网站青岛网站建设优化
  • 技术支持 创思佳网站建设网站推广软件费用是多少
  • 如何用asp做视频网站市场调研报告怎么做
  • wordpress图像桂平seo关键词优化
  • 织梦做的网站打开空白全国人大常委会委员长
  • 怎么做网页注册登录教程北京seo主管
  • 网站规划与建设进度百度服务电话
  • 用群晖nas做网站就业seo好还是sem
  • 视频网站如何做微信营销专业提升关键词排名工具
  • 惠州cms建站系统什么是seo
  • 滕州市做网站软文营销推广
  • 网站兼容性测试怎么做培训心得体会2000字