菜鸡笔记

菜鸡一名,记录一下收获,以便自己整理以及日后查看。
一、ARM Coretx M(32位)的寄存器组:
1、R0~R12为通用寄存器,R13为SP(堆栈指针寄存器),R14为保存返回地址的一个寄存器(起初CPU的设计就是增设寄存器来保存返回地址的,后来因为函数的嵌套调用等原因,才出现了堆栈的设计。在程序初次跳转的时候,由它Link Register来保存返回地址),R15为PC指针寄存器。
此外,设置2个R13(SP寄存器)是为了在能跑操作系统的高阶产品服务的,分为主堆栈和辅堆栈。在这里插入图片描述
在这里插入图片描述
2、xPSR为程序状态寄存器,其中APSR为对PSR的高4位进行访问,IPSR保存中断发生时的中断号。EPSR中的T记录是否发生了异常及中断。

二、中断
1、由硬件触发,CPU自动调用的1个函数,无返回值,无传入参数。
2、在CPU暂停当前任务,去执行中断以前,会先将部分寄存器中的值压栈保存,在处理完中断以后,再出栈该部分数据赋给原来的寄存器,继续执行。压栈保存哪些寄存器的值,由查询手册得知,用到了该部分以外的寄存器,需要编程者手动压栈。
3、中断向量表保存在存储器的起始部分。

三、复位、时钟、总线、存储器
1、时钟是整个系统的“心脏”。
2、时钟可以由外部晶体振荡器提供,也可以由片内的时钟源提供。
3、使用锁相环技术,能提高时钟频率。
在这里插入图片描述
4、上电以后,存储器中中断向量表的第0个单元中保存的是堆栈的默认地址,为SP寄存器赋一个初值,第1个单元保存的是入口程序的地址,PC指针寄存器由此进入入口程序,在入口程序结束时,跳进main函数内。接下来是一段中断向量表,不可更改。然后是1段ROM,保存程序代码及一些常量,断电不丢失。然后是RAM(数据存储器),保存一些变量,作为栈(stack)及堆(heap)断电会丢失。最后有一些地址对应的是外设寄存器。与CPU的内部寄存器不同,内部寄存器可以用指令直接访问,而外设寄存器需要通过地址访问。
注:由于地址总线是32位的,所以有一些地址是多余的,通过这些地址什么也访问不到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值