- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EOS嵌入式操作系统第四部分嵌入式软件讲述
运行过程 —— 系统引导 信息与软件工程学院 * 选择:根据需要分别进入系统软件引导阶段或系统升级阶段 —— 测试通信端口数据或判断特定开关 系统引导阶段: RAM启动 系统软件从NorFlash中读出并加载到RAM中运行:运行速度较快;软件可压缩存储在Flash中 NorFlash启动 系统软件直接在NorFlash上运行 外存启动 软件中读取出来加载到RAM中运行:成本低 系统升级阶段: 远程升级:通过网络;支持TFTP、FTP、HTTP等方式 本地升级:使用超级终端或特定的升级软件进行。 运行过程 —— 系统初始化 信息与软件工程学院 * 操作系统等系统软件运行必需的初始化工作,如根据系统配置 初始化数据空间 初始化系统所需的接口和外设 ...... 需要按特定顺序进行 首先完成内核的初始化 完成网络、文件系统等的初始化 最后完成中间件等的初始化工作 运行过程 —— 应用初始化 信息与软件工程学院 * 应用软件运行必需的初始化工作,如 应用任务的创建 信号量的创建 消息队列的创建 应用相关的其它初始化 ...... 运行过程 —— 多任务系统运行 信息与软件工程学院 * 系统进入多任务状态 操作系统按照已确定的算法进行任务的调度 各应用任务分别完成特定的功能 运行过程 —— 程序代码示意 信息与软件工程学院 * RomStart() SysInit() UsrInit() UsrKernelInit() KernelInit() UsrRoot() RomInit() BootLoad() 板级初始化 系统初始化 运行过程 —— 函数 信息与软件工程学院 * RomInit():romInit.s,上电初始化 RomStart():bootInit.c,程序代码调入RAM启动执行 SysInit():sysALib.s,类似romInit.s,但不再初始化SDRAM UserInit():bootConfig.c,启动操作系统内核必须的初始化,C代码 BootLoad():bootConfig.c,加载操作系统映像(vxWorks) UsrKernelInit():usrKernel.c,初始化内核可选组件 KernelInit():usrKernel.c,初始化多任务环境,启动内核 usrRoot(): usrConfig.c,产生usrRoot根任务,初始化I/O系统、驱动器、设备等 VxWorks启动过程 信息与软件工程学院 * RTOS的引导模式 信息与软件工程学院 * 需要Boot Loader的引导模式 采用高性能RAM的系统;由于RAM空间的限制 不需要Boot Loader的引导模式 对需要快速启动的系统;时间效率要求较高,空间限制较少。 - 方法:直接在NorFlash或ROM等非易失性 主存介质中运行,启动速度快 基本启动过程 信息与软件工程学院 * 示例:ROM中引导VxWorks 信息与软件工程学院 * 示例:ROM中引导VxWorks(2) 信息与软件工程学院 * 存储运行模式 写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks 原因 VxWorks在ROM中运行主要是为了节省RAM空间,使应用程序有更大的空间运行 优缺点 ROM中运行的VxWorks优点是启动速度快,缺点是运行速度慢 示例:RAM中引导VxWorks 信息与软件工程学院 * 可装入映像的入口程序:功能类似于romInit 示例:RAM中引导VxWorks(2) 信息与软件工程学院 * 存储运行模式 写入ROM或Flash中的BootROM Image或VxWorks Image是压缩的,需要先拷贝、解压所有的text和data到RAM的RAM_LOW_ADRS中,然后运行VxWorks 优缺点 RAM中运行的VxWorks优点是运行速度快,但启动速度偏慢 板级初始化 信息与软件工程学院 * 板级初始化(Boot)的主要内容 信息与软件工程学院 * 处理函数:romInit(),上电后执行的第一个函数 处理过程:以vxWorks为例 关中断 设置哑堆栈(dummy stack) 保存启动类型(冷启动和热启动)到堆栈上 清Cache 初始化CPU内的寄存器 硬件初始化,主要是初始化SDRAM接口 调用romStart() romInit()示例 信息与软件工程学院 * …… // 定义等 cli /* 关中断 */ movl SP_ARG1(%esp),%ebx /* esp+SP_ARG1的值给ebx:开始类型 */ jmp warm // 段内相对跳转到warm /* 切换到保护模式 */ mov %
文档评论(0)