xlanchenustc edu cn Spring 2008 xlanchen2008 3 21

  • Slides: 12
Download presentation
嵌入式操作系统 陈香兰 xlanchen@ustc. edu. cn 助教:毛熠璐、吴昊 Spring 2008 xlanchen@2008. 3. 21 Embedded Operating Systems

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

RTEMS的启动和初始化 xlanchen@2008. 3. 21 Embedded Operating Systems

RTEMS的启动和初始化 xlanchen@2008. 3. 21 Embedded Operating Systems

Start 16. s(pc 386) l l l 关中断 装载GDT表 进入保护模式 装载正确的段描述符 调用start. s xlanchen@2008.

Start 16. s(pc 386) l l l 关中断 装载GDT表 进入保护模式 装载正确的段描述符 调用start. s xlanchen@2008. 3. 21 Embedded Operating Systems 3

Start. s(pc 386) 1. 2. 关中断 装载各个段寄存器 1. 2. 3. 4. 5. 6. 7.

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

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

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

Bspstart. c:bsp_start 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 校正时间 为printk进行初始化

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

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

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

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

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

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

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

l 在初始化第一阶段 l 调用_RTEMS_API_Initialize初始化API相关内容 l 调用_RTEMS_tasks_Manager_initialization初始化任务 管理器 § l 添加API扩展_RTEMS_tasks_API_extensions 包含_RTEMS_tasks_Initialize_user_tasks 作为postdriver _API_extensions_Run_postdriver中被调用 xlanchen@2008.

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