1487|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

ARM编程的编程模式和一些概念理解的地方 [复制链接]

1、ARM的编程模式和7种工作模式


(1)ARM的基本设定


         ARM采用的是32位的架构


         ARM约定:  BYTE:8bit,


      HalfWord:16bit,(2bytes)


      Word      :32bit,(4bytes)


(2)大部分ARM core提供:


        ARM指令集(32bit)    Thumb指令集(16bit)   Thumb2指令集(16 & 32bit)


Thumb指令集都是16位的,CPU汇编指令集是010101的序列


这个指令本身是16位


ARM指令集是32位才可以代表一个符号语言。


16位的指令就无法完成一些32位异常处理的指令


2、ARM处理器工作模式:


1、USER:非特权模式,大部分任务执行在这种模式


2、FIQ:当一个高优先级(FAST)中断产生时将会进入这种状态


3、IRQ:当一个低优先级(normal)中断产生时会进入这种模式


4、Superisor:当复位或软中断指令执行将会进入这种模式


5、Abort:当存取异常将会进入这种模式


6、Undef:当执行未定义指令会进入这种模式


7、System:使用和Uesr模式相同寄存器的特权模式。






各种模式的切换,可以是程序员通过代码主动切换的(通过写CPSR寄存器),


也可以在CPU在某些情况下自动切换。


各种模式下权限和可以访问的寄存器不同。


3、CPU为什么需要这些模式?


CPU是硬件,OS是软件,软件的设计要依赖硬件的特性,硬件的设计


要考虑软件需要,便于实现软件特性。


操作系统有安全级别要求,因此CPU设计多种模式是为了方便操作系统


的多种角色安全等级需要。






硬件和软件是互相依赖的。


一跑操作系统就有意义了。


SVC模式:BootLoader的之间的才开始跑的。


3、ARM37个寄存器的详解:


这些模式可以帮助CPU实现权限管控。


ARM的37个通用寄存器。


特殊功能寄存器是外设的寄存器。


对ARM CPU本身编程的东西,


是一种IO和内存统一编址的,特殊功能寄存器


通用寄存器没有地址,但是每一个寄存器都有一个名字。


1、ARM总共有37个寄存器,但是每一种模式下最多只能看到18个寄存器,


其他寄存器虽然名字相同但是在当前模式不可见。


2、对R14这个名字来说,在ARM中共有6个名叫R14(SP)寄存器,


但是在每种特定处理器下,只有一个R14是可见了。


其他的R14必须切换到他的对应模式下才能看到,这种设计叫影子寄存器banked register


3、你只要自己去切换模式就可以了,不需要写代码去操作的。


(1)USER模式下面有R0-R12 ,R13(SP),R14(LR),R15(PC)


         CPSR的寄存器


(2)FIQ模式下面有R0-R7, 自己特有的R8-R14寄存器,但是所有的PC指针


和CPSR都是一样的,因为,这个是指定CPU的运行的,是唯一的存在的。


(3)SPSR是为了存放前一种状态的PC的指针的,为了运行完这些异常状态


然后返回的指针的依据。

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表