Symbian OS高级开发篇之系统引导

本文介绍了Symbian智能手机的启动过程,包括NORFlash和NANDFlash的区别、ARM CPU运行模式及其寄存器,以及从硬件Reset到WindowServer启动的五个阶段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在讲述Symbian智能手机引导顺序前,先介绍或重新认识一下相关的基本概念。因为这些基本概念在系统启动过程表述中会经常出现。

 

NOR Flash

NOR FlashIntel 1988年开发的,主要用来存储芯片内执行(XIP, eXecute In Place)程序,这些程序可以被CUP直接读取,而不用复制到RAM中去读取和执行。它与SOCSystem ON Chip)上的静态存储总线连接,可以像RAM一样随机访问。

 

NOR Flash读取速度很快,但在擦除和写入时速度很慢,但是NOR Flash接口简单,容易使用。它的特点决定了它通常被用来存储代码。

 

NAND Flash

NAND flash1989年由东芝公司开发出来的。NAND Flash是基于块的存储技术,它不支持XIP,意味存在其中的程序代码必须复制到RAM 中才能执行,这就要求在使用NAND Flash是还需要额外的RAMNAND Flash写入和擦除的速度非常快,几乎是NOR Flash10倍。但接口较复杂,且稳定性也稍差一些,不过由于其可以大批量生产,所以它的价格比NOR Flash便宜很多。它的特点决定了它通常被用来存储数据。

 

ARM CPU运行模式及寄存器

ARM架构采用堆叠寄存器(Banked Register),并且它是使用固定大小固定地址的向量表来处理异常。它有七种运行模式:

1. User(usr)模式:这是唯一的非特权模式,也就是说特定的指令不能再这种模式下执行,内存管理单元(MMU)会阻止对那些只有特权指令才能访问的内存区域的访问。这种模式是普通应用程序的执行模式。Symbian OS 中除了Kernel、设备驱动及板载支持包(BSP)外其他所有代码都在用户模式下执行。

2. System(sys)模式:系统模式是唯一的具有特权但不能进入异常处理的模式,Symbian OS 不使用系统模式。

3. SupervisorSvc:管理模式是操作系统中的保护模式,当执行一个中断指令或CPU重置都会进入这个模式,所有的Symbian OS Kernel程序都在这个模式下运行。

4. Abort (abt): 数据访问终止模式,是一种特权模式,用以虚拟存储及存储保护,当预取失败或数据失败异常发生会进入这个模式。Symbian OS 很少使用这个模式,仅当少量寄存器被保存后异常切换到管理模式之前时使用。

5. UndefinedUnd:未定义指令终止模式,当一个未定义的异常发生时,进入这个模式。Symbian OS 很少使用这个模式,仅当少量寄存器被保存后异常切换到管理模式之前时使用。

6. Interruptirq:中断处理模式,当处理器接受一个IRQ 中断时进入此特权模式。在Symbian OS 中, 中断服务向量在这么模式中执行。

7. Fast Interruptfiq:快速中断处理,用于高速数据传输和通道处理。当处理器接受一个FIQ中断时进入此模式。Symbian OS 中,FIQ中断服务向量在此模式中运行。

 

这七种运行模式的进入或退出都会写ARM状态寄存器(CPSR),CPSR的低五位决定了当前的运行模式。如下表所示:

 

 

CPSR[4:0]

Mode

Register set

10000

User

PC, R14..R0, CPSR

10001

FIQ

PC, R14_fiq..R8_fiq, R7-R0, CPSR, SPSR_fiq

10010

IRQ

PC, R14_irq, R13_irq, R12-R0, CPSR, SPSR_irq

10011

SVC

PC, R14_svc, R13_svc, R12-R0, CPSR, SPSR_sv

10111

Abort

PC, R14_abt, R13_abt, R12-R0, CPSR, SPSR_abt

11011

Undef

PC, R14_und, R13_und, R12-R0, CPSR, SPSR_und

11111

System

PC, R14..R0, CPSR

 

7中运行模式除用户模式(Usr)外其他模式都是特权模式。ARM体系结构支持16个通用寄存器,从R0R15分别表示这些寄存器。然而并非所有的寄存器在所有模式下都可访问,如下图所示,R0R7,在所有模式下都可访问,且指的都是同一个物理寄存器;R8R14每个寄存器对应不同的物理寄存器。这使得中断处理非常简单。例如,仅仅使用R8R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而使中断处理过程非常迅速。对于R13R14,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式公用,另外5个对应其他5种处理模式。R15为程序计数器(PC)。

 

 

ARM 运行模式及寄存器

 

 

Bootstrap

Bootstrap是一个程序,在手机硬件Reset后运行。它的任务是为系统Kernel的运行准备基本的环境。Symbian OS Bootstrap分为两层,其中之一是平台独立的,供ARM设备来使用,另个层是平台相关的,由手机制造商来实现。

 

系统启动过程

有了以上的基本概念,再来看Symbian智能手机的启动过程就比较简单了。Symbian智能手机的启动过程基本分为五个阶段,硬件Reset后从NOR Flash NAND Flash中加载运行Bootstrap、加载Kernel、文件系统、系统启动、Window ServerUI这五个阶段。如下图所示:

 

 

Symbian OS启动顺序

 

 

阶段1

如果手机采用的是NAND Flash, 那么NAND核心载入器会载入并启动Bootstrap程序。如果是NOR Flash,就可以直接运行存于其中的Bootstrap程序。Bootrom.bin文件就是所谓的Bootstrap程序,这个阶段的系统环境:CPU低速运行,MMU处于禁用状态,PC(R15_svc)的值为0;行为顺序:

1.       切换CPUsvc模式,并屏蔽所有中断

2.       初始化硬件并清理中断

3.       创建一个执行栈,将SPR13_svc)指向这个栈

4.       创建和初始化RAM页分配器

5.       映射基本的内存页面目录及第一页的页表,MMU开始使用虚拟地址

6.       分配线程栈,将SPR13_svc)指向这个栈

7.       切换到基本执行单元执行入口点

 

阶段2

这个阶段的主要是运行EKern.exe,系统环境:CPU全速运行,MMU可以使用;行为顺序:

1.       BSP被初始化

2.       触发BPBaseband Processor)开始执行电话模块(RTOS

3.       加载内核扩展

4.       准备下一阶段的处理

 

阶段3

这个阶段的主要是运行EFile.exe,系统环境:微核(Micro-Kernel)功能正常;行为顺序:

1.       启动文件服务器

2.       挂接第一个文件系统ROMFS

3.       启动线程加载器以提供可执行加载服务

4.       运行EStart进程

5.       EStart运行后,它会加载其他的文件系统,恢复HAL设置如语言、地区等,最后开始系统启动

 

阶段4

这个阶段运行Sysstart.exe程序,系统环境:Symbian Kernel 具有完整的服务功能。行为顺序:

1.       根据配置文件启动系统相关的服务。

2.       准备Window Server进程。

 

阶段5

这个阶段运行Ewsrv.exe程序,行为顺序:

1.       启动Window Server

2.       启动Wsini.ini文件中的进程。

 

至此,整个系统基本就算启动完毕,可以使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值