高通驱动程序开发参考(一)
来源:互联网 发布:sql语句中select嵌套 编辑:程序博客网 时间:2024/04/26 17:41
第1章 前言
1.1 文档目的及开发背景
本文为高通平台driver开发的学习文档,对部分概念性的东西进行了学习和总结。由于driver的跨度太大,内容很多,加上本人水平有限。如有不足之处及遗漏地方,麻烦大家多多包涵!希望这份文档能对大家学习高通平台的驱动开发有所帮助!
1.2 参考文献
序号
文档名称
作者
出版单位
1
80-VC881-1&QSC6055&QSC6065 QSC6075 AND QSC6085 SINGLE CHIP DEVICE SPECIFICATION
Qualcomm
--
2
80-VC881-2&QSC6055,QSC6065, QSC6075,QSC6085 SOFTWARE INTERFACE
Qualcomm
3
注:高通提供的文档比较详细,各个模块都有相关文档!因为文档提供比较齐全(需要自己去下,对于初学者是个难题),相对来说他的技术支持不怎么样!有得必有失!
1.3 术语和缩写解释
术语和缩写
解释
DS
DATA Service
SIO
Serial Input&Output
RDM
Runtime Device Mappe
BT
Blue Tooth
PBL
Primary Boot Loader
第2章 综述
2.1 高通平台的硬件架构
目前开发EVDO的手机或模块大部分采用了QSC6085平台。高通QSC系列的平台是高度集成化,它将PMIC、RF相关模块也集成到一块芯片里(其他公司很少做到这点),对硬件来说可以省很多事。除了上述特殊模块之外,当然也包括一般的LCD、KPD、AUDIO CODEC等很多驱动模块!具体如下图所示:
QSC6085处理器采用ARM9核+DSP的架构,一般就不需要再加DSP去处理Audio和图片。它集成这么多,其他硬件厂商的饭碗都被他抢了,不过这也是大势所趋!
2.2 高通平台驱动文件结构
在一般高通工程(60X5系列)目录下有一个Drivers文件夹,在该文件夹下包含了60X5系列平台上所有驱动文件,分门别类!
从上图中我们可以看到,每一个驱动都有独立的文件夹,这样对于新手学习代码来说比较容易找到相关代码。
2.3 ARM相关知识
因为高通处理器采用的ARM内核,遵循ARM指令,我们有必要学习一下ARM的一些基础知识。一般驱动开发中很少涉及到ARM指令,除了BOOT以及flash开发,大部分都在C语言环境中开发。在这部分我讲的不会太深入,如果大家想深入了解ARM架构,可以去看《ARM体系结构与编程》这本书,相当经典!
2.3.1 ARM基本知识
ARM 采用的是32位架构。也就是说ARM CPU内部的总线是32位的,每条ARM汇编指令都是32位的指令。一个CPU时钟周期最多可以处理一条32位指令或者读取一个32位的数据。32位的指令意味着,与8位和16位的CPU相比,在一个时钟周期内,指令可以携带更多的信息。
ARM 有7个基本工作模式:
User:非特权模式,大部分任务执行在这种模式
正常程序执行的模式
FIQ:当一个高优先级(fast)中断产生时将会进入这种模式
高速数据传输和通道处理
IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
通常的中断处理
Supervisor:当复位或软中断指令执行时将会进入这种模式
供操作系统使用的一种保护模式
Abort: 当存取异常时将会进入这种模式
虚拟存储及存储保护
Undef:当执行未定义指令时会进入这种模式
软件仿真硬件协处理器
System: 使用和User模式相同寄存器集的特权模式
特权级的操作系统任务
ARM 有37个32-Bits长的寄存器.
1 个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30 个通用寄存器
当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取:
相应的r0-r12子集
相应的 r13 (the stack pointer, sp) and r14 (the link register, lr)
相应的 r15 ( the program counter, pc)
相应的CPSR(current program status register, cpsr)
特权模式 (除system模式) 还可以存取;
相应的 spsr (saved program status register)
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
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
- 高通驱动程序开发参考(一)
- 高通驱动开发参考(二)
- 高通驱动开发参考
- Linux驱动程序开发快速参考
- 驱动程序开发(一)-概述
- 驱动程序开发学习(一)概述
- 驱动程序开发学习(一)概述
- 高负载高并发服务器开发参考
- 高负载高并发服务器开发参考
- 开发WDM型USB设备驱动程序(一)
- Linux PCI设备驱动程序开发 --- PCI 体系结构(一)
- 开发WDM型USB设备驱动程序(一)
- Linux驱动程序开发 - 设备驱动模型初探(一)
- WindML相关知识和图形设备驱动程序开发(一)
- VxWorks开发板驱动程序学习之文件系统(一)
- 高德地图开发参考01
- Web高性能开发之前端高性能(一)
- DDK开发系列一(最小化的驱动程序)
- socket通道
- 让老板看见你在做事
- xcode4 设置调试错误信息小结
- Target runtime Apache Tomcat v7.0 is not defined.
- 阻碍你成功的五个不良习惯
- 高通驱动程序开发参考(一)
- 挖掘大数据的商业价值
- Java基础:数组Array转成List的几种方法
- apache(wamp) 添加python支持
- 开发者对iOS 6版本与之前版本差异简单总结
- 绩效考核不等同于绩效管理
- C++实现组合模式
- 单链表(有头)
- 四个准备助力绩效面谈成功