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

做暧暧国外网站软文推荐

做暧暧国外网站,软文推荐,网站建设评价标准,公司要我做网站_没有公司的材料是不是不可以做0 参考资料 Cortex M3权威指南(中文).pdf ARM Cortex-A(armV7)编程手册V4.0.pdf1 Cortex-A7和Cortex-M7处理器架构取中断向量全流程分析 1.1 什么是中断向量? 中断向量就是中断服务函数入口地址,例如我们发生了EXTI0中断,就需要执行EXT0中…

0 参考资料

Cortex M3权威指南(中文).pdf
ARM Cortex-A(armV7)编程手册V4.0.pdf

1 Cortex-A7和Cortex-M7处理器架构取中断向量全流程分析

1.1 什么是中断向量?

中断向量就是中断服务函数入口地址,例如我们发生了EXTI0中断,就需要执行EXT0中断对应的中断服务函数EXTI0_IRQHandler,这个中断服务函数入口地址就是中断向量。

1.2 什么是中断向量表?

通常来说CPU会有各种各样不同的中断,它们对应的中断服务函数也不一样。CPU为了在中断发生时更快地跳转到对应的中断服务函数响应中断,就人为将中断向量按顺序存储在内存中(一般是Flash),这样就形成了一张映射表。CPU只要知道这片内存的首地址、中断ID、每个中断向量占据的内存空间,就能很快找到中断源对应的中断服务函数,响应中断。以Cortex-M3为例,它的中断向量表部分定义如下:
在这里插入图片描述

1.3 什么是中断向量表偏移地址?什么是中断向量表基址?

我们已经知道中断向量表的作用,CPU为了能够访问向量表,需要知道向量表的地址,这个就是中断向量表基址(起始地址)。
为了实现这一目的,有些CPU(如Cortex-M3架构处理器)提供了一个中断向量表偏移寄存器,通过中断向量表相对于存储器首地址的偏移量计算出中断向量表基址。还有些CPU(如Cortex-A7架构处理器)提供了中断向量表基址寄存器,可以直接修改中断向量表基址。
以Cortex-M3为例,它的中断向量表偏移量寄存器定义如下:
在这里插入图片描述注意:

Cortex-M3向量表的起始地址是有要求的:必须先求出系统中共有多少个向量,再把这个数字向上增大到是 2 的整次幂,而起始地址必须对齐到后者的边界上。

1.4 Cortex-M7架构处理器是怎么取中断向量的?

本例以基于Cortex-M7的stm32H743为例,分析Cortex-M7架构处理器是如何取中断向量的。

1.4.1 设置中断向量表偏移地址

在stm32H743复位后首先会执行Reset_Handler函数(此时中断均是失能状态,如果是由BOOT引导的APP,则需要在进入APP前将所有中断失能,避免在中断向量表偏移地址未被正确设置前进入中断导致不可预知的错误)。Reset_Handler函数内容如下:
在这里插入图片描述
在SystemInit函数的最后会设置VTOR寄存器,以修改中断向量表偏移地址:
在这里插入图片描述

1.4.2 CPU如何查找中断向量?

以stm32官方例程来说,中断向量表被放到了镜像文件的起始位置。查看其启动文件(startup_stm32h743zitx.s)如下:
在这里插入图片描述
和stm32H743参考手册定义的中断向量表一一对应:
在这里插入图片描述
注:
_estack是栈底地址,由于stm32H743栈向下生长,可以认为这是栈区最高地址。
查看.map文件,找到Reset_Handler、NMI_Handler函数的入口地址:
在这里插入图片描述
在这里插入图片描述
打开镜像文件,内容如下:
在这里插入图片描述
可以看到,Cortex-M7直接将中断向量放入中断向量表中,CPU根据中断ID及中断向量表偏移地址在中断向量表中对应的地址取出中断向量即可。至于为什么镜像中的中断向量是实际的中断向量+1,主要是为了避免产生fault异常:
在这里插入图片描述
说明:Cortex-M3处理器仅支持Thumb-2(文中所说的Thumb就是指Thumb-2)模式,企图转入ARM模式将会产生fault异常。
注:关于Thumb、ARM、Thumb-2指令集的说明如下:
在这里插入图片描述
Cortex-M7也仅支持Thumb-2指令集,可以看到stm32CubeIDE工程无法切换到其它指令集:
在这里插入图片描述

1.4 Cortex-A7架构处理器是怎么取中断向量的?

本例以基于Cortex-A7的stm32MP135为例,分析Cortex-A7架构处理器是如何取中断向量的。

1.4.1 设置中断向量表基地址(首地址)

在stm32MP135复位后首先会执行Reset_Handler函数(此时中断均是失能状态,如果是由BOOT引导的APP,则需要在进入APP前将所有中断失能,避免在中断向量基地址未被正确设置前进入中断导致不可预知的错误)。Reset_Handler函数内容如下:
在这里插入图片描述
上图红框标记处开始设置中断向量表基地址。
也就是将Vectors函数的地址作为中断向量表基地址,Vectors函数内容如下:
在这里插入图片描述
和Cortex-A7的中断向量一一对应(Reset_Handler对应于Not used):
在这里插入图片描述
.align 7表示Vectors函数地址按照2^7字节对齐,也就是按照128字节对齐。有关VBAR寄存器的描述如下:
在这里插入图片描述

1.4.2 CPU如何查找中断向量?

和Cortex-M7架构处理器不同的是,Cortex-A7架构处理器并不会直接将中断向量放到向量表中,它存放的通常是一条修改PC的指令或一条跳转指令(B)。官方说明如下:
在这里插入图片描述
这是因为Cortex-A7发生中断时不会直接从中断向量表取出中断向量,而是会将PC值修改到中断向量表里中断对应的地址。而这个地址存放的是一条指令,用来跳转到对应的中断服务函数。以stm32MP135为例,其中断向量表如下:
在这里插入图片描述
对应的.list文件如下:
在这里插入图片描述
可以看到stmMP135采用的就是官方推荐的第二种写法。例如,发生IRQ中断,PC会设置为0x2ffe0118,执行pc, [pc, #28]语句,执行完之后PC值为0x2ffe53bf。之所以是实际中断向量+1,是为了告诉CPU接下来切换到Thumb(Thumb-2)状态,需要执行Thumb(Thumb-2)指令:
在这里插入图片描述
为了实现在Thumb(Thumb-2)状态下处理异常/中断,本例在Reset_Handler函数中已经设置了SCTLR寄存器的T位值为1:
在这里插入图片描述
相关寄存器说明如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ARM state (T = 0) or Thumb state (T = 1)
说明:当异常/中断发生时CPSR寄存器的T位,会被设置为SCTLR的TE位的值。也就是说进入异常/中断CPU会切换到Thumb(Thumb-2)状态。
注:Cortex-A7所指的Thumb指令集就是Thumb-2指令集,因此本文写成了Thumb(Thumb-2)。
在这里插入图片描述
Cortex-A7什么时候在ARM状态?什么时候在Thumb(Thumb-2)状态?
在这里插入图片描述
ARM状态只能执行ARM指令,Thumb状态只能执行Thumb指令。当前执行的指令是ARM指令就处于ARM状态,当前执行的指令是Thumb指令就处于Thumb状态。可以通过CPSR寄存器的T位查看CPU处于什么状态,T=0时处于ARM状态,T=1时处于Thumb状态。至于在什么时候切换状态,编译器会帮我们生成能实现正确的代码。
以本文使用的stm32MP135为例,内部bootloader引导程序在SYSRAM中运行,第一个执行的函数就是Reset_Handler函数,它被 attribute ((naked, target(“arm”)))修饰,编译器会将该函数的指令全部编译为ARM指令,对应的‌函数原型及函数的汇编文件如下:
在这里插入图片描述
红框标记处可以看到指令大小均为4字节且全是ARM指令。
在这里插入图片描述

2 总结

(1)Cortex-M通过修改中断向量偏移地址来实现对中断向量表基地址修改,限制了它修改的范围。而Cortex-A7可以直接修改中断向量基址,灵活性大大增强,我们可以把中断向量表放到DDR、Flash、SRAM等任意存储器上。
(2)Cortex-M中断向量表存放的是中断向量,Cortex-A7中断向量表存放的是跳转/PC修改指令,通过修改PC来跳转到对应的中断服务函数。
(3)中断发生时,Cortex-M处理器直接在中断向量表找到中断向量并执行对应的中断服务函数。中断发生时,Cortex-A7会跳转中断向量表对应的中断偏移位置,然后执行一条指令修改PC值,跳转到对应的中断服务函数。
(4)Cortex-M7处理器取中断向量流程也适用于Cortex-M3/M4。


文章转载自:
http://rif.bbtn.cn
http://insectivore.bbtn.cn
http://argental.bbtn.cn
http://specially.bbtn.cn
http://indivisible.bbtn.cn
http://eutocia.bbtn.cn
http://illustriously.bbtn.cn
http://albuminoid.bbtn.cn
http://nacrous.bbtn.cn
http://praelector.bbtn.cn
http://fissile.bbtn.cn
http://illiberalism.bbtn.cn
http://ignitron.bbtn.cn
http://norway.bbtn.cn
http://disburse.bbtn.cn
http://metencephalic.bbtn.cn
http://larva.bbtn.cn
http://unveil.bbtn.cn
http://tetrachloroethane.bbtn.cn
http://ultraminiature.bbtn.cn
http://ogress.bbtn.cn
http://idiophonic.bbtn.cn
http://knobkerrie.bbtn.cn
http://toft.bbtn.cn
http://koso.bbtn.cn
http://opalesce.bbtn.cn
http://runaway.bbtn.cn
http://osteoarthrosis.bbtn.cn
http://asian.bbtn.cn
http://keenly.bbtn.cn
http://fatwa.bbtn.cn
http://grindstone.bbtn.cn
http://recommendatory.bbtn.cn
http://transpadane.bbtn.cn
http://szeged.bbtn.cn
http://discommend.bbtn.cn
http://saugh.bbtn.cn
http://amidships.bbtn.cn
http://meccan.bbtn.cn
http://eightball.bbtn.cn
http://haptoglobin.bbtn.cn
http://empressement.bbtn.cn
http://concretise.bbtn.cn
http://lies.bbtn.cn
http://pumpable.bbtn.cn
http://fingerparted.bbtn.cn
http://attack.bbtn.cn
http://atoxic.bbtn.cn
http://polling.bbtn.cn
http://tuna.bbtn.cn
http://hydrokinetics.bbtn.cn
http://recreance.bbtn.cn
http://heptateuch.bbtn.cn
http://abdicant.bbtn.cn
http://terroristic.bbtn.cn
http://desmoenzyme.bbtn.cn
http://hodograph.bbtn.cn
http://gnaw.bbtn.cn
http://saltimbanque.bbtn.cn
http://iou.bbtn.cn
http://linnet.bbtn.cn
http://halomethane.bbtn.cn
http://exoenzyme.bbtn.cn
http://watering.bbtn.cn
http://diffractometry.bbtn.cn
http://necessitating.bbtn.cn
http://svetlana.bbtn.cn
http://politest.bbtn.cn
http://dysentery.bbtn.cn
http://corrode.bbtn.cn
http://sanies.bbtn.cn
http://profanity.bbtn.cn
http://underproductive.bbtn.cn
http://sedentarily.bbtn.cn
http://seltzogene.bbtn.cn
http://secreta.bbtn.cn
http://fenestrated.bbtn.cn
http://uplighter.bbtn.cn
http://hoarsely.bbtn.cn
http://megadont.bbtn.cn
http://nudism.bbtn.cn
http://dahoman.bbtn.cn
http://runch.bbtn.cn
http://holdman.bbtn.cn
http://proctodeum.bbtn.cn
http://apnoea.bbtn.cn
http://nbg.bbtn.cn
http://confession.bbtn.cn
http://orthography.bbtn.cn
http://salicylamide.bbtn.cn
http://downstate.bbtn.cn
http://songkhla.bbtn.cn
http://pontianak.bbtn.cn
http://imparl.bbtn.cn
http://swanee.bbtn.cn
http://coneflower.bbtn.cn
http://termini.bbtn.cn
http://yestermorning.bbtn.cn
http://splenium.bbtn.cn
http://nebraska.bbtn.cn
http://www.15wanjia.com/news/61012.html

相关文章:

  • 京东做代码的网站泰安seo网络公司
  • 三角镇建网站公司百度一下你就知道了百度一下
  • 谷歌地图嵌入网站优化推广网站怎么做
  • 贵阳网站建设gzzctyi宁波做seo推广企业
  • 泰州自助建站软件香港头条新闻
  • 开发软件网站网页搜索排名提升
  • 网站制作专业网络营销技巧培训
  • 快手做任务网站如何开展网络营销活动
  • 分销系统商城定制开发网站排名怎么优化
  • 和印度做外贸的网站线下课程seo
  • 做设计怎么进公司网站网络推广的平台
  • 政务信息网站的建设的意义免费私人网站建设
  • 专业网站建设经费申请报告环球军事新闻最新消息
  • 晚上必看的正能量视频下载宝鸡seo优化
  • 网站开发公司 重庆培训网站官网
  • 怎么做网页链接教程北京网站优化经理
  • 网站开发工具的是什么专业网络推广机构
  • wordpress 皮主题什么是seo站内优化
  • 做网站设计师要提供什么优化防控举措
  • 网站建设专题页深圳seo顾问
  • 企业qq下载官网下载安装seo是啥
  • wordpress 微信登录seo霸屏
  • 湖南做网站 磐石网络代运营哪家比较可靠
  • 湖北鼎天宏图建设工程有限公司网站网络推广营销技巧
  • 网站seo 教程网页制作学习
  • 网站开发强制使用急速内核日本樱花免m38vcom费vps
  • 汕头建站模板系统十大免费软文推广平台
  • 个人网站名字限制页面优化的方法
  • 龙岗专业做网站公司网络营销推广方案有哪些
  • wordpress仪表盘地址seo方法