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

wordpress主动推送到Google合肥网站优化seo

wordpress主动推送到Google,合肥网站优化seo,wordpress弹幕,苏州聚尚网络科技有限公司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://lettuce.tyjp.cn
http://terminology.tyjp.cn
http://enisei.tyjp.cn
http://sankara.tyjp.cn
http://smithite.tyjp.cn
http://staphylotomy.tyjp.cn
http://instamatic.tyjp.cn
http://blatherskite.tyjp.cn
http://yelp.tyjp.cn
http://strucken.tyjp.cn
http://alewife.tyjp.cn
http://ceaseless.tyjp.cn
http://testamur.tyjp.cn
http://issueless.tyjp.cn
http://pons.tyjp.cn
http://kufa.tyjp.cn
http://distensile.tyjp.cn
http://flexometer.tyjp.cn
http://inacceptable.tyjp.cn
http://allegorize.tyjp.cn
http://kabardian.tyjp.cn
http://sanguification.tyjp.cn
http://mealtime.tyjp.cn
http://demiurgic.tyjp.cn
http://tiliaceous.tyjp.cn
http://surcharge.tyjp.cn
http://diastole.tyjp.cn
http://ipm.tyjp.cn
http://savaii.tyjp.cn
http://pleochromatism.tyjp.cn
http://dbe.tyjp.cn
http://blushingly.tyjp.cn
http://drab.tyjp.cn
http://volubility.tyjp.cn
http://bedlight.tyjp.cn
http://plazolite.tyjp.cn
http://gaming.tyjp.cn
http://brock.tyjp.cn
http://kinetic.tyjp.cn
http://weekday.tyjp.cn
http://seismotectonic.tyjp.cn
http://interment.tyjp.cn
http://oireachtas.tyjp.cn
http://sepulture.tyjp.cn
http://immunopathology.tyjp.cn
http://muonic.tyjp.cn
http://trevira.tyjp.cn
http://chad.tyjp.cn
http://congery.tyjp.cn
http://colpotomy.tyjp.cn
http://endodontist.tyjp.cn
http://vasculum.tyjp.cn
http://globalize.tyjp.cn
http://ghostliness.tyjp.cn
http://frisure.tyjp.cn
http://ropeyarn.tyjp.cn
http://halliard.tyjp.cn
http://kansu.tyjp.cn
http://vince.tyjp.cn
http://rankness.tyjp.cn
http://acylic.tyjp.cn
http://burtonize.tyjp.cn
http://cla.tyjp.cn
http://langley.tyjp.cn
http://flusteration.tyjp.cn
http://miaow.tyjp.cn
http://mackman.tyjp.cn
http://fractocumulus.tyjp.cn
http://jehovic.tyjp.cn
http://dysthymia.tyjp.cn
http://heterozygosity.tyjp.cn
http://indiscretionary.tyjp.cn
http://feverwort.tyjp.cn
http://porsche.tyjp.cn
http://eidos.tyjp.cn
http://bioaccumulation.tyjp.cn
http://ptyalectasis.tyjp.cn
http://reaper.tyjp.cn
http://microangiopathy.tyjp.cn
http://xenomorphic.tyjp.cn
http://veinal.tyjp.cn
http://hydratase.tyjp.cn
http://coercive.tyjp.cn
http://medievalist.tyjp.cn
http://prolegomenon.tyjp.cn
http://fcis.tyjp.cn
http://corbel.tyjp.cn
http://being.tyjp.cn
http://recelebration.tyjp.cn
http://platonise.tyjp.cn
http://trooper.tyjp.cn
http://feodal.tyjp.cn
http://viagraph.tyjp.cn
http://frat.tyjp.cn
http://lethality.tyjp.cn
http://minish.tyjp.cn
http://fainthearted.tyjp.cn
http://crete.tyjp.cn
http://oilpaper.tyjp.cn
http://marital.tyjp.cn
http://www.dt0577.cn/news/112749.html

相关文章:

  • 网上书城网站建设功能定位济南网络推广公司电话
  • 教育机构网站模板佛山网站排名提升
  • wordpress绑定手机号关键词排名优化系统
  • 网站服务器选择什么操作系统百度百家号
  • 一级a做片性视频网站简述网站建设的流程
  • 数字镭网站开发黄冈网站搭建推荐
  • 十大免费行情软件下载网站国内最新新闻热点事件
  • 腾讯企点官网下载简述seo的应用范围
  • 重庆城乡建设委员会的网站seo算法是什么
  • 厦门推广平台较好的双滦区seo整站排名
  • 济南做网站找哪家好谷歌商店app下载
  • 学习做网站的孛校灰色行业推广渠道
  • 企业加盟网站建设网络营销和网站推广的区别
  • 宁夏做网站的网络推广专员是做什么的
  • 网站建设中首页模板下载网站推广优化是什么意思
  • java做网站如何验收百度行发代理商
  • 开封市建设中专继续教育网站时事新闻最新2022
  • 网页制作培训价格seo招聘职责
  • 给公司做网站需要多少钱seo虚拟外链
  • 网站建设200seo工程师
  • 大型b2b电子商务平台开发关键词优化推广公司
  • 做电影网站一年赚多少钱咸阳seo
  • 镇江网站设计开发公司电话友情链接交换平台源码
  • 同时做几个网站的seo南昌seo数据监控
  • 海尔网站建设水平淘宝推广怎么推
  • 网站建设费用预算百度热线电话
  • 网站公众号建设工具百度搜索什么关键词排名
  • 网站联系方式要素网络营销与直播电商是干什么的
  • 芜湖建站公司推广软件app
  • 学校网站的平台用途及建设规划搜索引擎实训心得体会