高通驱动程序开发参考(一)
第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
高通驱动程序开发参考(一)相关推荐
- 高通驱动开发参考(二)
第1章 Driver相关模块介绍 1.1 REX简介 虽说目前QSC60x5平台上采用L4操作系统,REX只是L4上面的一个Task.但高通为了开发的兼容性,提供的API仍然采用老的一套接口(可能内部 ...
- opencv-3.4.3 交叉编译并且移植到高通820开发板(包括Qt 5.11.2部分交叉编译及移植),NEON OpenCV编译
opencv-3.4.3 交叉编译并且移植到高通820开发板(包括Qt 5.11.2部分交叉编译及移植),NEON OpenCV编译 原文我是用有道笔记记录的,下面排版不是很好,可参看有道笔记原文:h ...
- mtk处理器和骁龙对比_高通正在开发全新AR/VR处理器骁龙XR2;骁龙865对比骁龙855 Plus/苹果A13:爆料称性能增加20%...
1.高通正在开发全新AR/VR处理器骁龙XR2 11月13日消息,知名爆料人士Roland Quandt透露,高通公司正在为AR.VR设备开发一种全新的处理器骁龙XR2(SXR2130). 关于该处理 ...
- 基于高通410c开发板,开发android端家庭控制中心APP(1)
家庭控制中心APP运行在android端,通过与服务器通讯控制高通410c开发板. 基本功能如下: 1. 应用分为三个功能模块,包括电动窗帘.智能照明以及烟雾模块. 2. 电动窗帘模块中,包括调整窗帘 ...
- 高通android开发摘要
一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载. 将高通产权的代码放到:vendor/qcom/proprietary 1. 设置bms一些参 ...
- unity+高通vuforia开发增强现实(AR)教程(一)
增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息应用到真实世界, ...
- 使用高通Vuforia开发AR增强现实游戏(开篇)
@废话在前 之前想做暴风魔镜的VR游戏,最后来香港学习设备没带过来就没继续做,现在开始学习研究做一下AR游戏开发,毕竟对设备的要求比较低,很方便,看了不少资料,最后还是选了Vuforia这个经典的AR ...
- unity+高通vuforia开发增强现实(AR)教程(三)
前段时间忙公司的事,好久没到CSDN来了,看到教程有这么多人参考,决心再接再厉,这篇教程就讲讲怎么做video形式的增强现实.(自己做了个案例,少女时代著名的甩大腿舞戳我O(∩_∩)O) 高通的SDK ...
- 美国高通公司开发出了新的指纹识别技术
比年回,大家错指纹辨认手艺曾经视而不见,从iPhon5S公布以来,曾经用到良多款具有指纹辨认才能的手机,但非MWC下的一项3D指纹认证处理计划却不一般,明天带您一探究竟.MWC下,QualcommSn ...
- unity+高通vuforia开发增强现实(AR)教程(二)
1.进入https://developer.vuforia.com选择Resource,我们可以看到高通提供多种版本的开发包,这里我们选择 2.下载好后导入unity,将下载好的识别图的unity包也 ...
最新文章
- linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效
- 飞书在线文档 美誉度国内最佳!一起来围观~
- 【连载】优秀程序员的45个习惯之37——提供有用的错误信息
- 爬取 爱笔智能 招聘职位
- js 中的五种继承方法
- APP-V5.0的Sequencer过程
- mysql自增id获取失败
- java第七章jdbc课后简答题_java学习路线流程
- mysql 日期详解_在MySQL中解析日期
- CentOS 7.5安装部署Jewel版本Ceph集群
- 学习C++项目——数据库知识学习(主从原理,分离配置,远程工具只是了解,都没有实现)
- Python基础语法(if语句)
- Linux驱动开发之触摸驱动
- Unresolveable build extension: Plugin...or one of its dependencies could not be resolved: Failed to
- 计算机底层知识之内存
- stm32 app 连上阿里云
- c语言编程答案,C语言编程答案
- VC知识库的一篇文章
- SPM空间金字塔模型
- 联想Y410pY510p外置显卡Vbios,Y400Y500外置显卡VBIOS, ULTRABAY白名单,卡白名单。
热门文章
- wps里的超链接PDF打不开_PDF转Word都可以怎样操作?
- 文件二维码、社交媒体二维码如何制作?
- 北大软微计算机技术硕士复试,2016北大软微考研复试细节和名单.doc
- JQ 吸顶导航-Demo
- 基于sklearn的西瓜数据集的SVR回归实现
- 深度学习领域最新的技术(CV、NLP)
- 运行Wlmadmin无法访问计算机,网络许可证管理员指引.PDF
- python做生物信息学分析_Python从零开始第五章生物信息学①提取差异基因
- html 中 div 盒子上下垂直居中显示
- Python学习笔记——cmd提示pip不是内部或外部命令解决方法