- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PC体系结构嵌入式操作系统实现
基于PC体系结构嵌入式操作系统实现
【摘要】文章介绍了一个基于PC体系结构的嵌入式操作系统,从CPU的16位实模式切换到32位保护模式,包括中断控制器、系统时钟等在内的系统硬件初始化过程,全局描述符表、中断描述符表等内核运行环境的建立,进程的定义以及调度算法,进程切换方面介绍了一个具备基本功能的嵌入式操作系统。
【关键词】PC;嵌入式操作系统;CPU保护模式
当前,嵌入式操作系统已经获得非常广泛的应用,涉及的领域包括通信、军事、航空航天、以及生活等方方面面。目前市场上比较有名且占有一定市场分额的操作系统有VxWork、uLinux、uC/OS-II、eCos等,他们有各自的优点,VxWork经过了长时间的发展和实际应用的考验,在关键应用领域仍是一支独秀。uLinux则可以利用广泛的Linux资源,便于开发等等。
由于操作系统的基本功能是硬件无关的,因此这部分可以使用C语言进行开发,而平台相关的部分只需要使用汇编语言,但是只要设计好代码框架,就可以做到方便移植。选择了PC作为最初的目标平台,是因为x86体系结构应用范围越来越广,而且可以在开发x86版本后再移植到其他平台。
一、操作系统简介
操作系统在功能上主要是负责管理计算机的资源,这些资源包括CPU、内存、外部存储器、还有一些其他的外设。
从结构上则分为单一内核和微内核结构,单一内核的代表就是UNIX、Linux,这类操作系统的内核是一个整体,功能都包含在内核里面,有点“大杂烩”的味道,其优点就是由于功能都包含在内核中,因此内核很紧凑,且效率较高。而且带来的缺点就是当一个功能模块需要修改时,就必须将内核全部编译一次。微内核结构的代表就是windows系列,其内核提供的功能很少,仅有一些基本的功能,其他的功能全部作为扩展模块连接进入核心,这样的好处就是各个功能模块在接口不变的时候,可以很方便的更新而不影响系统,给系统提供了最大的灵活性。带来的缺点是结构不够紧凑,造成一定的资源浪费,同时也对运行效率产生一定影响。本系统采用的是单一内核结构。
操作系统的开发通常是在UNIX、Linux下使用GNU Compiler Collection(GCC)进行开发编译。一般认为不能在Windows下开发,并且认为微软提供的开发工具不能进行此类开发。但是本操作系统是在Windows下开发使用Microsoft Visual C/C++ 6(VC6)进行开发。
二、CPU保护模式初始化
PC在通电后运行于16位实模式,其寻址能力为64K,而嵌入式系统的配置范围非常广泛,仅仅考虑16位的寻址范围显然不适合当前的发展要求。而i386及其以上的CPU的寻址能力都达到了4G,因此需要设计能支持4G内存的操作系统。
在系统引导时,首先建立一个临时的全局描述符表(GDT),这个全局描述符表中有5个描述符,第一个必须设为0,这是x86处理器规定的,称为哑描述符。其中两个是16位保护模式代码段和数据段的描述符,用于在切换CPU运行模式的时候,保证初始化代码仍然能够正常运行。另外两个是32位保护模式下的代码段和数据的描述符,用于CPU内核运行。
由于CPU在复位时是处于16位实模式,所以初始化代码是16位实模式下的代码,这部分的代码的作用是为切换到16位保护模式准备运行环境,主要的工作是设置GDT。具体地做法是根据当前的段寄存器计算GDT中相应段描述符的值。
再设置好GDT后,就可以将CPU切换到保护模式下运行。将CPU切换到保护模式的方法是,将cr0寄存器的0位设置为1,代码为:
……
mov eax,cr0
or eax,1
mov cr0,eax
……
再切换到保护模式运行后,由于CPU有指令预取机制,所以在指令队列中已经存在了下一跳指令,而且需要刷新代码段寄存器,为了防止运行出错,必须刷新指令队列已近代码段寄存器。由于需要在一条指令中同时刷新段寄存器和指令队列,所有需要手动构造一条段间转移指令。代码为:
……
db0eah
dwoffset init
dwtemp_code_sel
init:
……
完成后CPU即进入16位保护模式运行。
三、建立内核运行环境
进入内核后,首先必须建立运行环境,对于INTEL的CPU来说,就是建立两个系统表,一个是全局描述符表(GDT),一个是中断描述符表(IDT)。
(一)全局描述符表初始化
在CPU由16位实模式切换到32位保护模式的时候,建立了一个临时的GDT。但是进入内核后,需要一个真正的描述符表,不能在继续使用这个临时的
您可能关注的文档
最近下载
- 2025年广西民族印刷包装集团有限公司招聘14人考前自测高频考点模拟试题(浓缩500题)附答案详解(.docx VIP
- 英语资料:100个句子搞定3500词.docx VIP
- 滨水绿地规划设计—滨水绿地详细设计(园林规划设计课件).pptx
- 滨水景观绿地设计的原则.PPT
- 地面35kV预制舱变电站安装工程(劳务部分).doc VIP
- 景观规划设计(第3版)课件:滨水景观生态设计.pptx VIP
- 河道保洁服务文明作业保障措施.docx VIP
- 滨水景观案例.ppt VIP
- 严重多发伤处理的欧洲共识(2025)解读PPT课件.pptx VIP
- 景观规划设计(第3版)课件:滨水景观文化设计.pptx VIP
原创力文档


文档评论(0)