文档库

最新最全的文档下载
当前位置:文档库 > MTK系统学习笔记

MTK系统学习笔记

MTK系统学习笔记

D

一.LCD驱动函数理解

PUBLIC ERR_LCD_E LCD_Init(void);

PUBLIC void LCD_Close(void);

LCD_GetInfo

获取LCD的基本信息。具体参考LCD_INFO_T的定义。上层调用此函数,可获取LCD 的信息,如bits-per-pixel以及LCD的BUFFER指针,从而可以实现对LCD的直接操作。PUBLIC ERR_LCD_E LCD_GetInfo(

LCD_ID_E lcd_id,

LCD_INFO_T*lcd_info_ptr );

对点主屏上点(x,y)写入颜色0X0F0F的实现如下:

(假定lcd_info_ptr-> bits_per_pixel = 16)

LCD_GetInfo(MAIN_LCD_ID, lcd_info_ptr);

uint16 *buf_ptr = (uint16 *)lcd_info_ptr-> lcdbuff_ptr;

uint16 lcd_width = lcd_info_ptr->lcd_width;

uint16 lcd_height=lcd_info_ptr->lcd_height;

*(uint16 *)(buf_ptr + y*lcd_width + x) = 0x0f0f;

然后根据需要调用LCD_Invalidate或者LCD_InvalidateRect函数刷新LCD有关区域。

LCD_InvalidateRect

刷新LCD 的某一矩形区域。该函数将LCD BUFFER中的颜色值写入到指定的区域中,如果该指定的区域超出了指定LCD的范围,则该函数将只刷新该指定区域与LCD区域的重叠部分,即LCD范围外的区域无效。

PUBLIC ERR_LCD_E LCD_InvalidateRect(

LCD_ID_E lcd_id,

uint16 left,

uint16 top,

uint16 right,

uint16 bottom

);

PUBLIC ERR_LCD_E LCD_Invalidate(

LCD_ID_E lcd_id

);

PUBLIC ERR_LCD_E LCD_EnterSleep(

LCD_ID_E lcd_id,

BOOLEAN is_sleep

);

PUBLIC ERR_LCD_E LCD_SetContrast(

LCD_ID_E lcd_id,

uint16 contrast

);

typedef struct lcd_info_tag

{

uint32 r_bitmask;

uint32 g_bitmask;

uint32 b_bitmask;

uint16 bits_per_pixel;

uint16 lcd_width;

uint16 lcd_height;

uint16 contrast_min;

uint16 contrast_max;

uint16 contrast_defaut;

void *lcdbuff_ptr;

} LCD_INFO_T;

typedef enum

{

MAIN_LCD_ID = 0,

SUB_LCD_ID,

MAX_LCD_ID

} LCD_ID_E;

typedef enum

{

ERR_LCD_NONE = SCI_SUCCESS,

ERR_LCD_FUNC_NOT_SUPPORT,

ERR_LCD_PARAMETER_WRONG,

ERR_LCD_POINTER_NULL,

ERR_LCD_OPERATE_FAIL,

ERR_LCD_NOT_FOUND

} ERR_LCD_E;

Sleep in

?当手机在待机状态时,为了节约功耗,要把lcd进入睡眠模式

?设置相关的寄存器

/* Power control 1 set SLP bit = 1*/

LCD_DRV_WRITE_COMM(0x0010, 0x1a0e);

Command!!

1、new

功能:全新开始构建整个工程的ARM版,包括图片、声音、字符串等资源都要重做。在构建工程过程中,清除所有的目标文件,库文件,日志文件等。New指令还会自动创建必要的目录、移除临时文件和中间脚本、更新日志文件。

过程简要说明:new->cleanall->sysgen->ckscatter->mmi_feature_check->asngen->codegen->asnregen->operator_chec k_lit->$(BTLD_BIN_FILE)->update。

依赖指令:new依赖的其他指令最多,其中包括cleanall,sysgen,ckscatter,mmi_feature_check,asngen,codegen,asnregen,operator_check_lite,update.

用途:new指令是最彻底也是耗时最长的一个动作,一般得到一个新的MTK发布版本后由项目负责人要做一次。

使用示例:C: BIRD25_GEMINI_07BRelease>make BIRD25_GEMINI_07B gprs new。

2、update

功能:update是重新更新整个工程的ARM版,该动作会扫描工程中文件和库的依赖关系,若依赖关系有变化会建立新的依赖关系,随后根据新的依赖关系重新编译链接有改动的部分。Update指令不依赖cleanall指令,所以它不会删除目标文件和库文件,也不会去更新日志文件和创建目标目录,这一点和remake相像,这也是为什么执行时间比new短的原因。

过程简要说明:update->cleanlog->cleanbin->mcddll_update->codegen->resgen->cksydrv->remake。

依赖指令:cleanlog,cleanbin,mcddll_updata,codegen,resgen,cksydrv,remake。

用途:update是耗时较长的一个指令,一般在增加或删除一些驱动或应用情况下使用。

使用示例:C: BIRD25_GEMINI_07BRelease>make BIRD25_GEMINI_07B gprs update。3、remake

功能:remake是重新编译整个工程的ARM版,该动作只是简单的重新编译链接有改动的部分。它不检查依赖关系.不扫描资源,只扫描代码的改变,有改变的重编,资源和无改变的代码不编。

过程简要说明:remake->mcp_check->cleanlog->cleanbin->genverno->libs->$(BTLD_BIN_FIKE)->cmmgen->done。

依赖指令:mcp_check,cleanlog,cleanbin,genverno,libs,$(BIN_FIKE),cmmgen,done。其中最重要的两个指令是libs,$(BIN_FIKE)。Libs调用编译器和连接器将各个模块目录下的C 文件编译连接为独立的库。$(BIN_FIKE)是将各个模块编译连接的库和mtk_lib目录下的库一起连接起来得到一个映像文件,然后使用ADS的工具fromelf将映像文件生成以变量BIN_FILE 命名的二进制文件,该文件可以下载到硬件板上运行。

用途:remake是耗时最短的一个动作,也是最常用的动作。

使用示例:C: BIRD25_GEMINI_07BRelease>make BIRD25_GEMINI_07B gprs remake。4、clean

功能:清除所有的目标文件,临时文件,库文件,可执行文件,更新日志文件。还可以用于某个模块相关的清除工作。

过程简要说明:check build root、target folder、comp、lib、comp log folder->clean bin folder、elf、lis、htm、log files、tst database files、obj,lib files。

依赖指令:cleanlog,cleanbin,cleanmod,cleancodegen等。

用途:作为其它命令所依赖的指令,还有就是清除工程或者指定模块对象的类库。

使用示例:C: BIRD25_GEMINI_07BRelease>make BIRD25_GEMINI_07B gprs clean,C: BIRD25_GEMINI_07BRelease>make BIRD25_GEMINI_07B gprs clean Init。

5、其他命令介绍

new_modis:是全新构建整个工程的PC模拟版,其调用VC的编译器和链接器得到一个可以在windows上运行的PC模拟版。MMI应用软件工程师可以在没有硬件板的情况下在PC上检查和调试自己写好的应用。

codegen_modis:产生modis需要的trace文件的datebase。

gen_modis:产生vc工程文件。

remake_modis:重新编译整个工程的PC版。

Codegen:创建TST数据库。它依赖的指令有:cleancodegen,asngen,[umts_gen],codegen,asnregen,cleanbin,mcddll_update,done。

Cleancodegen:删除codegen.lis。

Resgen:生成MMI资源。它依赖的指令有:code_generate,cleancodegen,asngen,codegen,asnregen,cleanbin,mcddll_update,done。

Cmmgen:生成CMM文件。

Sysgen:生成内存映射文件,并放在CUSTOMER文件夹里面。

Emigen:生成flash_opt.h,custom_EMI.h,custom_EMI.c和custom_switchclock.c文件。

Emiclean:清除EMI设置。

Mmi_feature_che ck:根据MMI_features.h和MMI_features_switch.h中宏定义的不同来产生info.log文件。

Operator_check:检查customer的宏是否被修改,如果修改产生相应log文件。

Fota:生成FOTA二进制文件。

Bootloader:生成bootloader二进制文件。

Ckscatter:检查scatter文件

Mmi_obj_check:检查运行时间值,e.g,联合体元素的大小等。

Med_mem_check:检查media memory。该指令依赖gencustominfo gen_infolog nvram_auto_gen。

Dummy_data_check:检查虚拟数据。

Viewlog:查看日志文件。

Cksysdrv:检查系统驱动是否为满。

Genverno:生成verno.c/h。

Mcddll_update:生成和更新tst mcddll.dll文件。

Gen_bl_verno:生成bootloader版本号。

Del_fota:删除fota二进制文件和elf,lis,sym,htm.*.log文件。