




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
pSOSystem 操作系统1. 概述pSOSystem 操作系统是一个高性能、高度模块化的实时操作系统,他完整的提供了基于开放系统标准的多任务环境,被广泛应用于嵌入式微处理器程序开发。pSOSystem实时多任务操作系统内核是以库文件方式存在,他有用于不同CPU的不同OS版本。提供给我们的编程语言接口是C/C+和汇编。像其他操作系统一样,pSOSystem操作系统有它的系统调用,让上层应用使用系统的功能。pSOSystem 操作系统的交插开发环境工具(包括编辑、编译和调试)可以驻留在UNIX或DOS主机上,他们通过串口或以太网同目标机建立通讯链接。2. 系统结构 pSOSystem操作系统是一个模块化高度可配置的操作系统,整个系统的结构如上图:pSOSystem的内核及各个模块都是硬件独立的,不依赖于具体的硬件,不对硬件作假设。由用户提供或配置OS提供的具体的硬件相关的驱动程序或接口程序。在上图的整个系统中,深灰框内是系统内核及系统模块,只需对其按要求进行配置或为其提供驱动程序。在浅灰色框内的部分包括:用户任务(User Task)、中断处理程序(Interrupt Handlers)、设备驱动程序(Drivers)。这三个部分是由用户来做的,做BSP程序主要是编写中断处理程序和设备驱动程序,而编写上层应用程序是编写各个任务(Tasks)。宏观上多个Task是可以并行执行的,也就是说,一个Task在执行过程中可以被另一个Task所打断,存在多个Task都在执行,但是都未结束的情况。当然在微观上多个Task是串行的(对单个CPU)。在什么情况下会发生Task切换呢?只有在发生某一个系统事件的时候,pSOS+便检查现在该哪个Task运行了,如果不是当前Task,便会发生Task 切换。一般只有发生系统调用时才可能发生系统事件。BSP(Board-Support Package)板级支持包,是完成用户硬件板功能的程序包,他包括目标系统硬件初始化代码、设备驱动程序和中断处理例程。在BSP里都是以原码(Full Source Code) 存放仅仅与板子硬件相关的程序,与上层有何应用毫无关系。这也是我们把程序加入BSP的一个准则,如果某个程序仅仅与硬件相关,与上层有何应用没有关系,就可以把这个程序放入BSP中。BSP中为上层应用提供了操作硬件的驱动程序及功能函数,BSP提供给上层应用的接口都是相同的,只是对不同的BSP它们的实现不同而已,这样有利于上层应用程序在不同的板间移植。l pSOS+ 实时单处理器多任务操作系统内核模块作为监控软件来提供应用程序要求的系统服务、调度、管理和资源分配,并且协调各种同步和异步操作。pSOS+的特点是小、快、完全可抢占、可重入。pSOS+将应用程序抽象为:任务、I/O设备驱动程序和中断服务程序ISRs。pSOS+采用了基于优先级的、可抢占的和基于时间片的调度策略,并且每个任务可以有自己特殊的调度策略。pSOS+是完全与硬件无关的,使得用户能在自己的硬件上使用pSOSystem。l pSOS+m 实时多处理器多任务操作系统内核模块是对pSOS+一些特性的扩展,使pSOSystem支持多处理器的操作,处理器间采用的是主从结构。l pNA+ TCP/IP协议堆栈模块是一个完全的TCP/IP协议组,包括网关路由协议、UDP、ARP和IGMP等。pNA+使用标准的socket接口,包括Stream、Datagram和Raw Socket。l pRPC+ 远端过程调用库模块提供了与SUN兼容的RPC和XDR服务,允许用户用熟悉的远程调用来构造分布式应用。l pHILE+ 文件系统管理模块可以通过它有效地访问各种不同的存储设备,支持四种文件格式:MS-DOS文件系统、CD-ROM文件系统、pSOSystem特有的快速文件系统、NFS的Client和Server端l pREPC+ 标准C库模块l pROBE+ 调试/分析器3. 开发方式嵌入式开发环境主要可以分为两部分,宿主机上的工具和目标机上的软件映像。假如我们的目标板采用的是MPC860作为CPU,它本身不具有自开发能力,即我们无法在MPC860下开发运行在它之上的软件,只有借助PC机(x86)来开发软件。这种开发方式被称为嵌入式开发。不具有自开发能力的、待开发的机器(MPC860)叫做目标机(Target),把所借助的PC机叫做宿主机(Host)。我们所能用的编辑器、编译器、调试器等工具都在HOST上。首先利用集成开发环境上的编辑器写源代码,其中要根据目标板的功能特性对BSP部分做不同的改动;然后编译自己的源文件和BSP部分,链接OS等不能改动的库文件(操作系统部分是目标代码,是以库文件的方式存放的)形成一个可以在Target上运行的IMAGE;最后用运行在Host之上的调试器把代码下载到Target上,进行调试。结合上图我们所要开发的有如下几块部分:操作系统部分是目标代码,是以库文件的方式存放的,无法修改;I/O Drivers(仅提供标准的系统调用接口)实际上也是固定部分,不需改动;只有嵌入式应用部分和BSP是我们要为目标板定做的。4. 嵌入式应用部分结合ATM和IP的经验嵌入式应用部分由支撑软件模块和应用软件模块构成。支撑软件模块又是由以下几个子模块组成:调度系统,定时系统,通讯系统,内存管理,监控系统,控制系统,告警系统,诊断系统,文件和装载系统。应用软件模块可根据具体的应用来分解。5. BSP4.1初始化上电是指从加电或复位后的第一条指令,到操作系统举起的过程。Boot的初始化可分为三级:1. CPU的初始化,如Cache、寄存器的设置。2. 板级初始化,指内存的自检、Flash的刷新等。3. 系统初始化,为操作系统的运行准备数据结构、配置表等。4.2驱动程序驱动程序是包含I/O操作的子函数,是指目标板上所有硬件的驱动程序。对每个设备,都提供了六种操作的驱动程序:init、open、close、read、write和control。驱动程序必须由上层调用,其调用方式有三种:1. 在任务中直接调用设备驱动程序。2. 任务调用内核中的设备驱动程序,由内核根据设备号再调用相应的驱动程序。3. 在任务中调用了某个服务,而该服务需要设备驱动程序的支持,如网卡。这些驱动程序也可抽象为三个层:1. 常规操作包括:l I/O编址方式,即三种寄存器CR、DR、SR的编址l 如何设置寄存器中的值2. 与内核接口是指:l I/O管理l 操作的规整性,定义了六种标准操作l 参数的规整性,每个函数的参数个数、类型是固定的3. 与模块接口要符合接口标准,例如:l 通过NI与TCP/UDP通讯的drivers要符合NI的参数要求l 通过KI与多处理器通讯的drivers要符合KI的参数要求我们开发具体硬件的BSP就是编写有关处理器初始化和设备驱动程序的函数,所以必须要了解处理器的硬件结构。在购买的系统上,带有BSP的模板,可以指导用户如何编写自己的BSP程序。4.3引导和加载(ATM & IP) 用户板加电或复位,首先运行ROM里的引导程序,该引导程序按以下次序处理:CPU初始化、板级初始化和运行OS内核,并把控制权交给pSOS内核。pSOS内核运行我们的应用程序(root任务,类似于main),在ROM里的版本程序包括了我们的支撑系统、文件管理应用和版本加载应用,进行RAM版本加载过程(该版本为OS+APP)。这当中要校验FLASH中的版本文件,如没有则要和后台进行同步,校验通过后将该版本加载到RAM中指定地址空间里后硬跳转到该地址处运行。ROM里存放引导程序和版本加栽程序(OS+APP)。FLASM RAM是用户板上的电子盘,掉电可保存数据在其上建立了我们的文件系统。RAM中存放我们的运行程序(OS+APP)。6. 技术细节和难点l 引导和装载(boot & load):FLASM ROM,DPRAM,FLASM RAM对版本的组织和内存的规划。l ISRs的使用,主要是与task的接口:l BSP软件包的开发:7. 内存规划和有关内存的系统调用接口由于用户目标板上软、硬件各部份是可定制的,这给我们带来了许多灵活性同时也带来了许多困难。目标单板上的内存组织有以下几点需要注意。(bsp.h、sys_conf.h、memory.bk),partition和region有什么区别?1 pSOS的内存划分从内存资源和版本文件的角度来看我们可将内存分成ROM和RAM(版本为rom.hx和ram.hx,他们只需在配置文件中做修改即可,memory.bk),这我主要想说明一下RAM。假设物理内存有32M,OS如何得到并使用他呢?RG#0是运行版本(OS+APP)的内存区(包括代码段、数据段和堆栈段等),也即系统使用的内存区,该区域的大小是可配置的他由SC_RAM_SIZE和KC_RN0USIZE x 32767决定(sys_conf.h),取其中最小的。KC_RN0USIZE是系统内存RG#0的每个unit的大小,单位是字节。如果系统有32MB的内存,应设为0x400(32KB 0x400 = 32MB);如果有64MB的物理内存,应设为0x800。SC_RAM_SIZE(sys_conf.h)指出系统使用的最大RAM内存大小,当指定出的SC_RAM_SIZE小于KC_RN0USIZE x 32767系统只能访问BSP_RAM_BASE(bsp.h)到BSP_RAM_BASE + SC_RAM_SIZE 1这段内存,BSP_RAM_BASE + SC_RAM_SIZE可以做别的用,通常给应用程序做内存区用。在做BOOTROM程序时,一般把SC_RAM_SIZE 设为0x60000,这样BOOTROM程序只使用00x60000-1内存来存放数据。0x60000以上的保留给RAM程序使用,我们在链接ram程序时,一定要链接到0x60000以上,不要和BOOTROM程序的数据冲突。2 pSOS的内存使用pSOS在给应用提供可分配的动态内存资源时是将系统内存管理成partition和region。在partition中又可分出许多个buffers,每个buffer的大小是2的幂次方这样就不受unit大小限制;而region中可分出许多个segments,每个segment的大小由unit大小决定,每次调用rn_getseg从指定region动态分配内存的时候,系统以unit为单元进行分配,如unit大小为0x400,哪怕你只需要分配一个字节,系统也是给你一个unit,即0x400个字节。为了合理利用系统内存资源,我们必须自己管理内存。pSOS在内存操作上极不安全也没有边界保护检查,这也是我们必须自己管理内存的原因之一。我的想法是在一个region里面申请一个比较大的segment,在该segment中进行内存管理(划分成小的内存块)和保护性检查。3 pSOS的内存系统调用l The rn_create, 从指定的起始地址处,创建指定大小的内存区(region)。l The rn_ident, 获得内存区标识。l The rn_delete, 删除指定的内存区。l The rn_getseg, 从内存区中申请一个内存段。l The rn_retseg, 释放内存段到内存区中。l The pt_create, 创建一个内存缓冲分区(partition)。l The pt_ident,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纸张使用指南
- 化学废水排放监管制度执行执行
- 考研中的挑战与应对之策
- 代码管理规定
- 服装制作工艺方案
- 2025浙江嘉北街道招聘公益性岗位1人(第1号)笔试备考试题及答案解析
- 物业资产管理与财务审计要点
- 皮草设计原理分析报告
- 2025下半年浙江省海洋开发研究院招聘紧缺高层次人才2人笔试备考题库及答案解析
- 矿山开采权评估方案
- 110kV变电站初步设计与规划方案指南
- 公司人才认定管理办法
- 理解当代中国 大学英语综合教程1(拓展版) B1U1课件 Unit1 Youth on the rise
- 养老护理员全套培训课件
- JJF 2250-2025 数字化交流电能表型式评价大纲
- 河北计算机单招数学试卷
- DB11T 751-2025 住宅物业服务标准
- 2025至2030全球及中国两轮组合仪表行业产业运行态势及投资规划深度研究报告
- 2024公路运营领域重大事故隐患判定标准解读学习课件
- 耕地保护培训课件
- 文化设计符号解析-洞察及研究
评论
0/150
提交评论