Presentation is loading. Please wait.

Presentation is loading. Please wait.

嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008.

Similar presentations


Presentation on theme: "嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008."— Presentation transcript:

1 嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn 助教:毛熠璐、吴昊 Spring 2008

2 RTEMS 的启动和初始化

3 xlanchen@2008.3.21Embedded Operating Systems3 Start16.s ( pc386 ) 关中断 装载 GDT 表 进入保护模式 装载正确的段描述符 调用 start.s

4 xlanchen@2008.3.21Embedded Operating Systems4 Start.s ( pc386 ) 1. 关中断 2. 装载各个段寄存器 1. 装载 Gdt 和 Idt 2. 通过 ljmp 装载全新的 CS ,并且清空指令 cache 等 3. 装载 ss 、 ds 、 es 、 fs 、 gs 3. 重新设置 8259 4. 建立堆栈 5. BSS 段清 0 6. 检查 CPU 信息 7. 调用 boot_card

5 xlanchen@2008.3.21Embedded Operating Systems5 Main.c : boot_card 1. 缺省初始化 Cpu_table 2. 复制配置表 3. 调用 bsp_start 4. 调用 rtems_initialize_executive_early 5. 调用 main (一旦从 main 退出执行到这里,就说明系统运行结 束) 6. 调用 bsp_cleanup

6 xlanchen@2008.3.21Embedded Operating Systems6 Bspstart.c : bsp_start 1. 校正时间 2. 为 printk 进行初始化 3. 空闲内存起始地址初始化 rtemsFreeMemStart 4. 初始化 Cpu_table 5. 对齐空闲内存起始地址 6. 设置 BSP_Configuration 中 workspace 的起始地址参数 7. 空闲内存起始地址指向 workspace 之后 8. 为 console 保留资源 9. 初始化 rtems 的中断管理 10. 初始化 rtems 的异常管理

7 xlanchen@2008.3.21Embedded Operating Systems7 RTEMS 第一阶段初始化 rtems_initialize_executive_early 初始化各个模块 在合适的位置执行各项扩展 bsp 的多任务启动前扩展、驱动初始化前扩展、驱动初 始化后扩展 API 扩展的驱动初始化前扩展、驱动初始化后扩展 初始化设备驱动 创建 idle 线程

8 xlanchen@2008.3.21Embedded Operating Systems8 Bsp 的 main 1. 调用 rtems_initialize_executive_late 进行第二 阶段的初始化,并进入实际运行阶段 rtems_initialize_executive_late 若返回,则说明系统运行已经结束 2. 返回 0

9 xlanchen@2008.3.21Embedded Operating Systems9 RTEMS 第二阶段初始化 rtems_initialize_executive_late 1. 启动多任务(从 bsp 上下文切换到线程后继运行) 一旦从多任务返回,则系统运行结束 2. ……

10 xlanchen@2008.3.21Embedded Operating Systems10 Hello 任务的运行 RTEMS 应用的启动程序,名为 init 通过配置表的方式传递给 RTEMS 的初始化管理器 rtems_initialization_tasks_table Initialization_tasks[] ={{…, init, …}}Initialization_tasks rtems_api_configuration_table Configuration_RTEMS_API = {…, Initialization_tasks} rtems_configuration_table Configuration ={…}

11 xlanchen@2008.3.21Embedded Operating Systems11 在初始化第一阶段 调用 _RTEMS_API_Initialize 初始化 API 相关内容 调用 _RTEMS_tasks_Manager_initialization 初始化任务 管理器  添加 API 扩展 _RTEMS_tasks_API_extensions 包含 _RTEMS_tasks_Initialize_user_tasks 作为 postdriver _API_extensions_Run_postdriver 中被调用

12 xlanchen@2008.3.21Embedded Operating Systems12 在 RTEMS 初始化的第二阶段,上下文切换到 调度后继 这个调度后继,永远指向当前最应该运行的任务 在初始化刚刚完成时,通常就是 init


Download ppt "嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008."

Similar presentations


Ads by Google