高通平台Driver开发的参考文档(3)

2019-08-31 10:48

44922004.doc

CPSR寄存器表示当前ARM的工作状态 条件位: N = 1-结果为负,0-结果为正或0 Z = 1-结果为0,0-结果不为0 C =1-进位,0-借位

V =1-结果溢出,0结果没溢出

Q 位:仅ARM 5TE/J架构支持,指示增强型DSP指令是否溢出 J 位:ARM 5TE/J架构支持 J = 1: 处理器处于Jazelle状态 中断禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ.

T Bit: T = 0: 处理器处于 ARM 状态T = 1: 处理器处于 Thumb 状态 Mode位(处理器模式位): 0b10000 User

联想移动产品开发部软件处 - 8 -

44922004.doc

0b10001 FIQ 0b10010 IRQ 0b10011 Supervisor 0b10111 Abort 0b11011 Undefined 0b11111 System

2.3.2 ARM存储器格式

在ARM体系中,每个字单元包含4个字节单元或者两个半字单元;一个半字单元中包含两个字节单元。但是在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式;big_endian格式和little-endian格式。比如一个整型数0x12345678在内存中如下图所示

-----------

| 78 | xxxx_0000 -----------

| 56 | xxxx_0001 -----------

| 34 | xxxx_0002 -----------

| 12 | xxxx_0003 -----------

Little Endian

-----------

| 12 | xxxx_0000 -----------

| 34 | xxxx_0001 -----------

| 56 | xxxx_0002 -----------

| 78 | xxxx_0003 -----------

Big Endian

联想移动产品开发部软件处 - 9 -

44922004.doc

第3章 Driver相关模块介绍

3.1 REX简介

REX只是L4上面的一个Task。虽说目前QSC60x5平台上采用L4操作系统,但高通为了开发的兼容性,提供的API仍然采用老的一套接口(可能内部实现不一样),很容易将老的代码移植到新的架构中。那么我还试必要介绍一下REX。

REX是一个操作系统的名字,它是Real-time Executive的缩写。它是美国的QUALCOMM开发的,REX是一个简单的、高效的、抢占式的、多任务的、嵌入式实时操作系统。它最初是为应用于Intel的80186而设计的,如今它已经被移植到了ARM微处理器上。 下面是它比较重要的几个概念(其实和其他操作系统一样): 1、 Task

REX把任务当作独立运作的实体,每一个任务都有自己独立的堆栈和优先级。每个任务都有一个数REX允许在运行时,据结构,我们称为―任务控制块‖(TCB)。在任何时间动态的创建任意数量的任务。

但是创建的任务越多,REX的性能便稍微递降,这是因为你创建的任务越多,任务列表越长。所以你需要确保你创建的任务数量尽量小。另外,REX任务的负载量还跟你选择的处理器有关。 下面的图描述了REX任务的启动过程:

TCB也是一个比较重要的结构体,各个task都有一个全局变量tcb,这个tcb包含了很多重要信息如,任务优先级、堆栈指针,信号量等,这些有时对查死机问题很有帮助。 2、 任务调度

联想移动产品开发部软件处 - 10 -

44922004.doc

REX总是选择处于就绪态的最高优先级的任务进行调度,如果任务的优先级不是唯一的,REX可能选择任何一个处于就绪态的最高优先级的任务进行调度。被选择的任务会一直执行,直到它自愿挂起或者中断发生而激活了更高优先级的任务。

当被挂起的任务的等待条件得到满足时,该任务就变成了就绪态。如果所有的认为都挂起的时候,那么空闲认为就被执行。

REX提供了一种机制,允许任务可以动态的提高或降低自己或其它任务的优先级。 3、 信号量

信号量是任务之间进行通信和同步的桥梁。信号量是REX提供的一种任务间通信的机制。每个任务都有一套与之相关联的通用信号量,信号量通常作为任务的TCB的一部分,它们被用来通知任务某种事件的发生,任务的信号量可以被任何其它任务或中断设置或清除。 信号量实际上是一种约定机制,在多任务内核中普遍使用,信号量用于: ", 控制共享资源的使用权(满足互斥条件); ", 标志某事件的发生; ", 使2个任务的行为同步。

4、 中断

REX是一个可剥夺的内核。当从中断返回的时候,控制权就被传递给处于最高优先级的就绪任务,而没有必要返回到被ISR中断了的任务处。 一般我们只会挂载GPIO中断,后续会介绍。 5、 定时器

定时器,英文是timer。和其它内核一样,REX要求给用户提供定时时间,来实现超时控制等功能。REX中有些信号是事件触发引起,也可以由timer引起。一旦由于某种原因,等待的事件信号一直等不到,这时可以用timer定时来产生信号量。 关于以上几个概念,高通都提供了相关接口操作,具体参看代码!

3.2 Boot 高通平台系统Memory组成可以分为:NAND+SDRAM和NOR+PSRAM 。两者配置不能并存,这也就决定了有两种boot模式,具体决定采用哪种Boots方式是Boot_mode引脚决定。

联想移动产品开发部软件处 - 11 -

44922004.doc

高通60x5系列采用了Multi-Image-Boot技术,这可以从高通的代码看出,

从上述枚举变量中可以看出,flash中有多个image.其中QCSBL+OEMSBL =SBL,SBL就相当于bootloader, Bootloader主要是在Nand启动方式中起作用!原因后续介绍! 其中每个Image又是由三个部分组成:

联想移动产品开发部软件处 - 12 -


高通平台Driver开发的参考文档(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公路工程建设程序与各阶段工程造价关系知识表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: