资料介绍
cpu是数字处理系统中的一个重要环节。在我看来,单片机、微处理器、dsp都可以称作是cpu,只是它们的侧重点有所不同罢了。具体来说,传统意义上的单片机更偏重于嵌入式的计算,比如说我们经常使用的51、avr、arm芯片中不仅仅含有了运算和控制功能,它还涵盖了定时器、串口、并口、usb、i2c总线等外部资源。cpu一般只是作为dsp的一个核存在,它通常还会包含另外一个核,专门用于数字信号的处理工作。而微处理器,也就是我们经常说的pc上的处理器,它的工作比较单一,专注于计算和控制功能的处理,因此一般来说在这方面的性能上面,单片机和dsp都是不能和它相比的,有了南桥芯片和北桥芯片的帮助,pc的微处理器就可以专注于自己的本职工作了,效率上面也会有一个很大的提高。
对于朋友们来说,生活中遇到的最多的cpu其实是x86的cpu。当然,如果有哪位朋友喜欢apple之类的玩具,也会知道一些arm的相关事情。剩下的就是一些专用领域的cpu了,比如说在通信行业用到的比较多的powerpc芯片,在高性能服务器用的到的sun sparc芯片,在科学计算领域使用到的mips芯片。所以,无论遇到什么芯片,对于应用层开发的朋友都是一样的,只是在一些小地方需要还有一些注意的地方。比如说:
(1)数据的对齐方式
(2)数据的字节序问题
(3)函数参数的压栈问题
(4)cpu的乱序执行问题
(5)cpu中cache和内存一致性的问题
当然,如果我们所要思考只是简单的应用层设计,考虑到这些内容本身已经实属不易了。然而,我们考虑的是如何设计嵌入式操作系统的问题,所以接下来还要看看一般cpu下面都包含了哪些内容。这样,只要熟练掌握了一款cpu的设计和实现,对其他cpu的知识也会触类旁通了。
任何一款cpu,不管是完成的功能是什么样的,通常都会有这样一些基本设计:
1.寄存器
● 堆栈寄存器
● pc寄存器
● 状态寄存器
● 运算寄存器
寄存器是cpu内部的基本资源。不管cpu的代码执行到什么时候,这些资源都是共享的,所以在cpu发生中断、函数调用、线程切换的时候,都需要对这些寄存器进行保护,常用的基本措施就是把它们保存到临时堆栈当中去。堆栈寄存器记录了当前堆栈使用到了什么地方,pc寄存器则记录当前代码跑到了什么地方,下一条指令在什么地方等。状态寄存器则保存了当前cpu的执行情况,包括计算有没有溢出、中断是关还是开、有没有o除数异常等等。至于运算寄存器就因cpu而异了,有的cpu寄存器比较少,比如说x86的寄存器;有的cpu寄存器就比较多,比如说powerpc。运算寄存器的用途很多,比如说数据访问、计算、移位、返回计算结果等等。
2.指令集
● 寻址指令
● 数学运算指令
● 逻辑运算指令
● 软中断指令
● 跳转指令
● 远程调用指令
● io访问指令
● 栈操作指令
指令集在某种程度上直接决定了某一种cpu的类型。就像intel和amd生产的cpu虽然有差别,但是它们的cpu使用的都是x86的指令集,而marwell、samsung和高通生产的cpu当然也不同,但是它们的指令集都是arm指令集。所以,如果软件在marwell上跑,一般来说也可以在Samsung上跑起来。指令集很复杂,内容很多。但是通常来说,上面这些内容都是cpu所必须要完成的几种指令。当然重中之重的还是中断和栈处理指令。
3.中断、异常处理机制
不管是什么cpu,中断部分的内容都是少不了的。试想一想,如果一颗cpu只知道不停地运行,那么它的执行效率实际上是很低的。拥有了中断的cpu不仅使得cpu可以和更多的外设io打交道,还能极大地提高自身运行的效率。不同的cpu处理中断的方法其实都差不多,在整个cpu的地址空间里面,通常在低地址区域会有一张中断向量表,表中每一项记录了每一个中断对应的处理函数。
所以,只要中断发生时,cpu就会首先将下一条pc地址压入堆栈,然后跳转到中断向量表中对应的中断地址处执行的相应的处理函数。这个过程是cpu自动完成的,不需要我们关心。这样对我们来说,它和cpu中的函数调用其实没有什么区别。等待中断处理结束后,我们使用ret指令返回到之前压入的那个ip地址处,继续下面的代码。整个过程就好像中断根本没有发生过一样。
所以,对于cpu的了解其实主要就是对寄存器、指令集和中断的了解。有了对中断和堆栈的深入理解,其实也就没有什么困难的了。在这里我们大家可以考虑一个问题,如何在Windows或者linux下仿真中断完成我们的操作系统开发呢?大家可以自己先思考一下,我们会在随后的博客中继续介绍。整篇文章,我们没有介绍编码的相关内容,其实只要把这里的基本概念弄清楚了,剩下来其实就是一些流程性的工作了。在软件开发中,设计其实是最难的,剩下的才是开发和调试。
(mbbeetchina)
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 嵌入式操作系统
- 介绍几种开源嵌入式操作系统
- ucosII嵌入式实时操作系统实验
- 嵌入式操作系统FreeRTOS的原理实现
- 嵌入式操作系统FREERTOS的移植.
- (完整版)vxworks嵌入式操作系统 0次下载
- 11种基于ARM的嵌入式操作系统介绍资料下载
- 嵌入式教程之嵌入式实时操作系统RTEMS的详细资料介绍 27次下载
- 嵌入式操作系统的介绍和嵌入式操作系统的发展状况和应用前景说明
- 嵌入式Linux开发教程之嵌入式系统介绍资料免费下载
- 32位单片机与嵌入式操作系统的测试复习题和答案资料免费下载 12次下载
- RTEMS嵌入式操作系统的简单介绍 7次下载
- 嵌入式操作系统-李春杰 0次下载
- 嵌入式实时操作系统COS一Ⅱ与VxWORKs
- 嵌入式实时操作系统教程
- 嵌入式操作系统任务的定义、特性及划分 5713次阅读
- 米尔科技嵌入式实时操作系统介绍 2179次阅读
- 基于μC/OS嵌入式操作系统的嵌入式数据管理设计 1178次阅读
- 嵌入式操作系统它有什么特点 2378次阅读
- 基于ARM的嵌入式操作系统该如何设计 1480次阅读
- 该如何正确选择嵌入式操作系统 2707次阅读
- 从嵌入式系统到嵌入式操作系统 698次阅读
- 目前国内在ARM CPU上广泛采用的三种嵌入式操作系统浅析 3894次阅读
- 五种基于STM平台的且满足实时控制要求操作的嵌入式操作系统的介绍 5158次阅读
- 什么是嵌入式操作系统 常见的嵌入式系统有哪些 4w次阅读
- 嵌入式操作系统是什么_嵌入式操作系统有哪些 2w次阅读
- 如何设计一个小型嵌入式操作系统 9350次阅读
- 基于FreeRTOS的嵌入式实时操作系统的原理和实现 6562次阅读
- 概述及汇总ARM的嵌入式操作系统 2951次阅读
- 基于Linux的嵌入式实时操作系统的研究 2298次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多