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

建设网站选什么地方的主机王也踏青图是哪一集

建设网站选什么地方的主机,王也踏青图是哪一集,商业网站开发的实训小结怎么写,旅游网站营销10 ARM 体系 ARM体系1、基本概念1.1 常见的处理器1.2 ARM7三级指令流水线1.3 初识PC寄存器 2、 ARM核的七种工作模式3、ARM核七种异常 ARM体系 1、基本概念 1.1 常见的处理器 PowerPC处理器#xff1a;飞思卡尔MPC系列 DSP:TI达芬奇系列 FPGA#xff1a;Xilinx赛灵思的ZYN… 10 ARM 体系 ARM体系1、基本概念1.1 常见的处理器1.2 ARM7三级指令流水线1.3 初识PC寄存器 2、 ARM核的七种工作模式3、ARM核七种异常 ARM体系 1、基本概念 1.1 常见的处理器 PowerPC处理器飞思卡尔MPC系列 DSP:TI达芬奇系列 FPGAXilinx赛灵思的ZYNQ系列 ARM:消费类电子高通华为全志 汽车电子飞思卡尔 网络博通Mavell 工控Atmel 单片机:51,msp430,stm32(低端ARM处理器) 1.2 ARM7三级指令流水线 概念 流水线目的提高运算处理的能力 指令给CPU下发的命令CPU根据不同的命令做不同的数据运算存在于编译好的二进制可执行文件中并且是一条一条指令堆积而成如果将二进制可执行文件下载到内存中运行那么每条指令必然有对应的内存存储地址例如tftp 0x48000000 shell.bin,那么第一条指令的起始地址就是0x48000000 问后续的指令例如第二条指令他们的地址分别是多少呢 答这与ARM处理器的工作状态有关系ARM有两种工作状态 ARM状态每条指令的长度是4字节大小也就是说将来每条指令占用4字节内存大小所有后续的指令地址依次加4例如第二条指令的首地址就是0x48000004 Thumb状态每条指令的长度是2字节大小也就是说将来每条指令占用2字节内存大小所有后续的指令地址依次加2例如第二条指令的首地址就是0x48000002 所以每当go 0x48000000,那么CPU就会跑到0x48000000这个地址取出每条指令挨个运行所谓的三级指令流水线就是CPU核处理一条指令不会一次性处理完毕而是分成三步骤来处理三步骤 取指FCPU核内部的取指器硬件单元从内存中获取指令解码D由CPU核内部的解码器硬件单元对指令进行翻译翻译成CPU能够识别的命令执行ECPU核正式处理该指令 1.3 初识PC寄存器 PC寄存器是ARM核内部的一个寄存器,也是用来暂存数据, 此寄存器永远只能存储当前要取的那条指令的内存地址 例如前提是ARM核处于ARM状态 内存存储地址 指令 0x8000 add加法指令 0x8004 sub减法指令 0x8008 and位与指令 注意CPU核处理是从上往下跑 当取add这条指令时,PC寄存器的值0x8000 问当add指令执行的时候,PC寄存器的值0x8008 2、 ARM核的七种工作模式 工作模式切换场景SVC管理模式系统复位或者代码调用swi/svc指令FIQ中断模式外设给CPU核发送FIQ中断电信号IRQ中断模式外设给CPU核发送IRQ中断电信号Abort中止模式取指F失败(指令没有)或者访问M失败(地址无权限)Undef未定义指令模式CPU处理一个不认识的指令例如lisiSystem系统模式/User用户模式一般应用程序正常运行时CPU就是处于User用户模式 ARM寄存器总共有37个每个寄存器大小为32位4字节又细分为31个通用寄存器和6个程序状态寄存器 31个通用寄存器的名称r0,r1,r2…r15不区分大小写 其中 r13又称sp永远只能保存栈指针 r14又称lr永远只能保存返回地址(bl指令和中断) r15又称pc永远只能存储取指器要取的那条指令的内存存储地址 r0,r1…r12剩余寄存器随意存储数据 6个程序状态寄存器又分 1个cpsr保存当前程序运行的状态信息 5个spsr备份cpsr的值,保存cpsr分别是:spsr_svc,spsr_undef,spsr_irq,spsr_fiq,spsr_abort 3、ARM核七种异常 明确异常并不是所有的异常都是不好的有问题的,有些异常非常棒非常好当然了有些异常很糟糕 前提假设CPU一开始在0x48000000这个内存地址运行go 0x48000000,就在此时此刻触发以下异常 异常CPU核要切换到的模式CPU核立马要跳转到的地址触发场景复位异常SVC管理模式0x00系统复位Undef未定义指令异常Undef未定义指令模式0x04CPU核执行一个非法指令软中断异常SVC管理模式0x08代码调用swi/svc指令取指异常Abort终止模式0x0C取指F失败数据处理异常Abort终止模式0x10访存M失败IRQ中断异常IRQ中断模式0x18外设给CPU核发送IRQ中断FIQ中断异常FIQ中断模式0x1C外设给CPU核发送FIQ中断ARM核异常处理的流程明确CPU核一旦触发异常必须立马处理异常前提一开始CPU核很安静的执行一个QT程序,突然CPU核触发了某种异常CPU核一旦触发异常立马开启异常的处理首先CPU核硬件上自动做四件事1.备份当前被打断的QT程序的cpsr到要切换到的模式下的spsr即:spsr_modecpsr2.设置cpsr bit\[4:0\]xxxxx 表示设置CPU核将来要切换到的工作模式对应的模式位的值,实现工作模式的切换 bit\[5\]0,强制CPU核切换到ARM状态 bit\[6\]1,禁止CPU核以后响应FIQ中断信号 bit\[7\]1,禁止CPU核以后响应IRQ中断信号3.保存返回地址到要切换到的工作模式下的lr寄存器中(异常处理完毕将来还要回来的,所以要保存返回地址啊) 即lr_mode pc - 4 (硬件自动将pc的值减4保存到lr_mode中,注mode表示要切换到的工作模式,pc此时还在QT程序中) 问为何pc-4呢 答 此时CPU还在QT中运行对应的汇编代码如下 指令 内存地址 add 0x48000000 sub 0x48000004 and 0x48000008 … … 当CPU核执行add时,触发了某种异常,CPU核势必要处理异常将来处理完毕异常还要进行返回重新返回到QT程序中运行只需要返回到sub指令即可继续向下运行也就是只需将sub指令的地址保存到lr_mode中即可: lr_mode0x48000004pc-40x48000008 - 4 4.设置pc为某个异常处理的入口地址即pc0x00/0x04/0x08/0x0c/0x10/0x18/0x1c 切记只要给pc赋值就是让CPU核立马跑到这个地址去运行指令就是取指运行 例如pc0x1c,就是让CPU核跑到0x1C地址去取指运行指令 pcuart_init(函数名就是函数的首地址)就是让CPU核跑到uart_init函数去执行 只要咱们前期在这些异常的处理入口地址的地方埋伏好相关的代码不就是让CPU核继续执行咱们埋伏好的代码吗这不就是开启了软件进一步处理异常的流程了吗 例如触发一个IRQ中断此时CPU核就会跑到0x18地址去运行埋伏好的代码 开启软件进一步处理异常同样四步骤 1.提前建立异常向量表 问如何在七种异常的入口地址放置(埋伏)或者关联对应的软件代码呢 答目的是将来异常发生,最终让CPU核能够执行处理到对应的异常处理代码关联的方法就是通过链接器(arm…ld)搞定,链接器在链接的时候就是从文件的开头依次向下会给每条指令都指定一个地址见一条指令一个地址见一条指令一个地址 vim start.s .text 告诉链接器代码段从这里开始 .code 32 汇编指令采用的时arm .global _start global声明一个全局函数 _start:b reset b指令的功能不带返回的跳转指令(一去不复返)跳转到reset标签继续运行b undef_functionb svc_functionb fetch_abort_functionb data_abort_functionb . b . 表示死循环b irq_functionb fiq_function reset: reset标签相关代码mov r0, #0... undef_function:mov r1, #1... ... irq_function:mov r0, #0mov r1, #1mov r2, #2bl do_irq ...交叉编译 arm...as -c -o start.o start.s //用汇编器将汇编文件生成目标文件start.o arm...ld ... -Ttext0x00 -o start.elf start.o //链接注代码段从0x00地址开始链接 链接的结果是 地址 指令 0x00 b reset 0x04 b undef_function 0x08 b svc_function 0x0c b fetch_abort_function 0x10 b data_abort_function 0x14 b . 占坑 0x18 b irq_function 0x1c b fiq_function ...例如将来外设UART控制器给CPU核发送一个IRQ中断信号,最终CPU核跑到0x18地址不就是运行咱们埋伏好的代码b irq_function这条指令嘛最终去执行irq_function标签里面的各种代码开启软件处理IRQ中断异常的流程 结论最终形成了8行2列的表格,此表又称异常向量表 2.保护现场 一旦CPU核跑到异常入口地址执行对应的指令(b xxxxx),此指令对应的标签(xxx_function)对应的代码中首先要做保护现场的工作 问为何要保护现场呢 答概念就是将被打断的程序(例如QT程序)使用的ARM寄存器(r0~r15)的数据备份保存到栈(就是内存)中保护现场又称压栈保护(push stack) 举例子阐述为何要备份 一开始CPU核很安静的执行QT程序(运行的地址例如0x48000000)并且QT程序的汇编代码如下 mov r0, #100 mov r1, #101 mov r2, #102 … 此时此刻突然UART控制器给CPU核发送一个IRQ中断信号立马触发IRQ中断异常CPU核最终跑到0x18地址运行: b irq_function这条指令而这条指令最终跳转到irq_function标签继续运行而这个标签里面的汇编代码如下 irq_function: mov r0, #0 mov r1, #1 mov r2, #2 … 显然IRQ中断处理的汇编代码把原先QT程序使用的ARM寄存器值进行了修改将来CPU核再回到QT程序继续运行时势必出错所以CPU核执行irq_function标签的代码的时候首先做的第一件事就是保护现场把QT程序使用的ARM寄存器值r0100…备份到内存中将来IRQ中断处理代码随意修改不怕了反正有备份 最终:irq_function标签的代码如下 irq_function:1.先保护现场然后后面对ARM寄存器为所欲为mov r0, #0mov r1, #1mov r2, #2....3.一旦现场保护完毕软件就可以根据用户需求完成对异常的最终处理 专业叫法调用异常处理函数 例如触发IRQ中断异常实现开关灯操作 irq_function:1.保护现场2.根据用户需求完成开关灯操作例如代码如下mov r0, #0mov r1, #1mov r2, #2....bl led_on 调用开灯函数bl delay 调用延时函数bl led_off 调用关灯函数bl delay 调用延时函数...4.一旦异常处理完毕异常处理函数调用完毕最后让CPU核再回到原先被打断的QT程序继续运行,此过程做三件事恢复现场,程序状态恢复,跳转返回 恢复现场又称出栈恢复,将之前栈用保存的QT数据重新恢复到ARM寄存器中供QT使用 例如r0100,r1101,r2102 程序状态恢复将之前备份到spsr_mode中的QT的cpsr的值重新恢复到cpsr中供QT使用cpsrspsr_mode 跳转返回就是将之前保存的返回地址直接给pc即可让CPU核重新回到QT程序继续运行,pclr_mode至此一次异常处理完毕 例如IRQ中断异常为例其irq_function标签的代码参考如下 irq_function:1.保护现场(QT中的ARM寄存器值保存到栈中)2.根据用户需求完成开关灯操作mov r0, #0mov r1, #1mov r2, #2....bl led_on 调用开灯函数bl delay 调用延时函数bl led_off 调用关灯函数bl delay 调用延时函数....3.软件最后处理三步骤3.1.恢复现场(将栈中保存的数据恢复到ARM寄存器中)供QT使用3.2.状态恢复cpsr spsr_irq供QT使用3.3.跳转返回pc lr_irq QT程序的某个地址至此IRQ中断异常处理完毕CPU核又回到了QT程序继续运行静静地带着下一次异常的触发和处理ARM异常处理流程的终极总结 ARM核硬件上自动做四件事 1.备份cpsrspsr_modecpsr 2.设置cpsr:cpsr[7:0]110xxxxx 3.保存返回地址lr_modepc-4 4.设置pc0x00/0x04/0x08/0x0c/0x10/0x18/0x1c,开启软件的处理四步骤 软件处理的四件事 1.提前建立异常向量表 2.保护现场 3.根据用户需求调用异常处理函数 4.恢复现场状态恢复(cpsrspsr_mode)跳转返回(pclr_mode)
http://www.dnsts.com.cn/news/112856.html

相关文章:

  • 深圳工程建设交易服务中心网站直播app下载汅api免费下载
  • 关于校园网站建设的建议宁波seo做排名
  • 网站ui设计要点html5网站链接标签
  • 贵阳做网站设计天津微网站建设
  • 怎样可以做网站网站 展示
  • 怎么做淘宝联盟网站制作互联网推广平台
  • 郑州网站优化_郑州网站推广_河南网站建设公司_seo外包顾问服务中文小说网站建设与维护
  • 12380 举报网站建设网站建设福建
  • 网站页面构架更换网站ico
  • 宜宾移动网站建设大学网页设计与制作教材
  • 数字媒体应用 网站开发新手如何自学编程
  • 合肥做网站工作室重庆免费网站制作
  • 建网页还是网站好重庆住建厅网站官网
  • 北海建设网站wordpress win8 主题下载
  • win2003服务器网站管理工具网站自适应手机怎么
  • seo网站建设是什么意思咸宁做网站哪家好
  • 专业做网站较好的公司广州成都上市设计公司
  • 做视频网站免费观看爱精神文明建设网站
  • 怎样黑公司的网站做国外网站的零售
  • 行业网站模版html5手机 网站
  • 织梦 网站搬家网页设计代码大全下载
  • 东莞市官网网站建设价格wordpress主页视频
  • 设计wordpress页面模板下载地址长春seo搜索排名
  • 互联网出版中的网站建设策划wordpress付费文章
  • 公司网站备案需要什么材料创意模板
  • 找个做网站的 优帮云哪个购物软件最便宜
  • 变性人做欲网站网站体验提升思路
  • 温州网站建设和推广网站制作接单
  • 做国际贸易用什么网站小规模企业做网站
  • 外贸网站平台是不是很难做外链吧怎么使用