(转载) MTK驱动开放基础知识

 
驱动程序主要分散于两个目录
$PROJECT\custom\drv
$PROJECT\drv

很明显,第一个目录是客户化项目的驱动程序,第二目录就是主要的驱动,是比较相对独立的模块。编译时,custom 是个作为一个独立的模块。
当然,还有一些接口定义的目录,它们在
$PROJECT\interface\hwdrv
$PROJECT\interface\drv_def

运用程序 $PROJECT\custom\drv\Drv_Tool\DrvGen.exe 可以对 GPIO,GPO,ENIT,ADC,KEYPAD进行定制设置. 
有个默认文件$PROJECT\custom\drv\misc_drv\$PROJECT_NAME\codegen\codegen.dws
可以用DrvGen直接打开它,然后进行修改,生成的*.h *.c文件与codegen.dws在同一目录下.
驱动代码里,一个很显著的宏,就是 __CUST_NEW__ ,常常碰到
#ifndef __CUST_NEW__
// the default settings
else
// user customize
#endif

就是由DrvGen产生的代码段. 如果对硬件足够了解,可以从原理图 和PCB板图对照直接改代码。

驱动离不开操作系统的支持,我们知道,MTK的 kal对 nucleus os 进行了封装,那么KAL相关的定义的头文件kal_release.h 就不能错过了,驱动直接调用系统提供的函数。

最后,总结一下,手机启动过程如下:
开机 -> 初始化硬件 -> 初始化软件(读取NV,保存为全局变量) -> 开机动画,搜寻网络,Sim卡等 -> Idle界面。

附录:
一些术语

EMI external memory interface
UART Universal asynchronous receiver/transmitter,异步收发器,一种串行接口
UEM 用户设备管理
MSDC U盘功能
LCM LCD Module
Pixtel 一家印度公司,无线通信相关业务已被MTK收买,强项是MMI设计。
原文地址:https://www.cnblogs.com/sierllen/p/2498837.html