嵌入式操作系统内核原理和开发(cpu的那些事)

嵌入式操作系统内核原理和开发(cpu的那些事)

ID:5329999

大小:291.38 KB

页数:3页

时间:2017-12-08

嵌入式操作系统内核原理和开发(cpu的那些事)_第1页
嵌入式操作系统内核原理和开发(cpu的那些事)_第2页
嵌入式操作系统内核原理和开发(cpu的那些事)_第3页
资源描述:

《嵌入式操作系统内核原理和开发(cpu的那些事)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本文由长春治疗白癜风医院http://www.hspfbyy.com/收集,转载请注明出处嵌入式操作系统内核原理和开发(cpu的那些事)cpu是数字处理系统中的一个重要环节。在我看来,单片机、微处理器、dsp都可以称作是cpu,只是它们的侧重点有所不同罢了。具体来说,传统意义上的单片机更偏重于嵌入式的计算,比如说我们经常使用的51、avr、arm芯片中不仅仅含有了运算和控制功能,它还涵盖了定时器、串口、并口、usb、i2c总线等外部资源。dsp呢,cpu一般只是作为dsp的一个核存在,它通常还会包

2、含另外一个核,专门用于数字信号的处理工作。而微处理器,也就是我们经常说的pc上的处理器,它的工作比较单一,专注于计算和控制功能的处理,因此一般来说在这方面的性能上面,单片机和dsp都是不能和它相比的,有了南桥芯片和北桥芯片的帮助,pc的微处理器就可以专注于自己的本职工作了,效率上面也会有一个很大的提高。对于朋友们来说,生活中遇到的最多的cpu其实是x86的cpu。当然,如果有哪位朋友喜欢apple之类的玩具,也会知道一些arm的相关事情。剩下的就是一些专用领域的cpu了,比如说在通信行业用到的比较

3、多的powerpc芯片,在高性能服务器用的到的sunsparc芯片,在科学计算领域使用到的mips芯片。所以,无论遇到什么芯片,对于应用层开发的朋友都是一样的,只是在一些小地方需要还有一些注意的地方。比如说,(1)数据的对齐方式(2)数据的字节序问题(3)函数参数的压栈问题(4)cpu的乱序执行问题(5)cpu中cache和内存一致性的问题当然,如果我们所要思考只是简单的应用层设计,考虑到这些内容本身已经实属不易了。然而,我们考虑的是如何设计嵌入式操作系统的问题,所以接下来还要看看一般cpu下面都

4、包含了那些内容。这样,只要熟练掌握了一款cpu的设计和实现,对其他cpu的知识也会触类旁通了。任何一款cpu,不管是完成的功能是什么样的,通常都会有这样一些基本设计:本文由长春治疗白癜风医院http://www.hspfbyy.com/收集,转载请注明出处本文由长春治疗白癜风医院http://www.hspfbyy.com/收集,转载请注明出处(1)寄存器堆栈寄存器pc寄存器状态寄存器运算寄存器寄存器是cpu内部的基本资源。不管cpu的代码执行到什么时候,这些资源都是共享的,所以在cpu发生中断、

5、函数调用、线程切换的时候,都需要对这些寄存器进行保护,常用的基本措施就是把把它们保存到临时堆栈当中去。堆栈寄存器记录了当前堆栈使用到了什么地方,pc寄存器则记录当前代码跑到了什么地方,下一条指令在什么地方等。状态寄存器则保存了当前cpu的执行情况,包括计算有没有溢出、中断是关还是开、有没有o除数异常等等。至于运算寄存器就因cpu而异了,有的cpu寄存器比较少,比如说x86的寄存器;有的cpu寄存器就比较多,比如说powerpc。运算寄存器的用途很多,比如说数据访问、计算、移位、返回计算结果等等。(

6、2)指令集寻址指令数学运算指令逻辑运算指令软中断指令跳转指令远程调用指令io访问指令栈操作指令指令集在某种程度上直接决定了某一种cpu的类型。就像intel和amd生产的cpu虽然有差别,但是它们的cpu使用的都是x86的指令集,而marwell、samsung和高通生产的cpu当然也不同,但是它们的指令集都是arm指令集。所以,如果软件在marwell上跑,一般来说也可以在Samsung上跑起来。指令集很复杂,内容很多。但是通常来说,上面这些内容都是cpu所必须要完成的几种指令。当然重中之重的还

7、是中断和栈处理指令。本文由长春治疗白癜风医院http://www.hspfbyy.com/收集,转载请注明出处本文由长春治疗白癜风医院http://www.hspfbyy.com/收集,转载请注明出处(3)中断、异常处理机制不管是什么cpu,中断部分的内容都是少不了的。试想一想,如果一颗cpu只知道不停地运行,那么它的执行效率实际上是很低的。拥有了中断的cpu不仅使得cpu可以和更多的外设io打交道,还能极大地提高自身运行的效率。不同的cpu处理中断的方法其实都差不多,在整个cpu的地址空间里面,

8、通常在低地址区域会有一张中断向量表,表中每一项记录了每一个中断对应的处理函数。所以,只要中断发生时,cpu就会首先将下一条pc地址压入堆栈,然后跳转到中断向量表中对应的中断地址处执行的相应的处理函数。这个过程是cpu自动完成的,不需要我们关心。这样对我们来说,它和cpu中的函数调用其实没有什么区别。等待中断处理结束后,我们使用ret指令返回到之前压入的那个ip地址处,继续下面的代码。整个过程就好像中断根本没有发生过一样。所以,对于cpu的了解其实主要就是对寄存器、指令集和中断的了解

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。