MTK芯片开发资源添加.docx

上传人:b****1 文档编号:11009430 上传时间:2023-05-28 格式:DOCX 页数:17 大小:188.60KB
下载 相关 举报
MTK芯片开发资源添加.docx_第1页
第1页 / 共17页
MTK芯片开发资源添加.docx_第2页
第2页 / 共17页
MTK芯片开发资源添加.docx_第3页
第3页 / 共17页
MTK芯片开发资源添加.docx_第4页
第4页 / 共17页
MTK芯片开发资源添加.docx_第5页
第5页 / 共17页
MTK芯片开发资源添加.docx_第6页
第6页 / 共17页
MTK芯片开发资源添加.docx_第7页
第7页 / 共17页
MTK芯片开发资源添加.docx_第8页
第8页 / 共17页
MTK芯片开发资源添加.docx_第9页
第9页 / 共17页
MTK芯片开发资源添加.docx_第10页
第10页 / 共17页
MTK芯片开发资源添加.docx_第11页
第11页 / 共17页
MTK芯片开发资源添加.docx_第12页
第12页 / 共17页
MTK芯片开发资源添加.docx_第13页
第13页 / 共17页
MTK芯片开发资源添加.docx_第14页
第14页 / 共17页
MTK芯片开发资源添加.docx_第15页
第15页 / 共17页
MTK芯片开发资源添加.docx_第16页
第16页 / 共17页
MTK芯片开发资源添加.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MTK芯片开发资源添加.docx

《MTK芯片开发资源添加.docx》由会员分享,可在线阅读,更多相关《MTK芯片开发资源添加.docx(17页珍藏版)》请在冰点文库上搜索。

MTK芯片开发资源添加.docx

MTK芯片开发资源添加

1.确定目录结构结构及模块相关文件

既然是在为MMI添砖加瓦,那么我们的程序模块也就放在/plutommi/mmi目录下,取名为FirstApp。

按照规则,我们的模块的目录结构如下:

/plutommi/mmi/FirstApp:

模块总目录;

/plutommi/mmi/FirstApp/FirstAppInc:

模块头文件目录;

/plutommi/mmi/FirstApp/FirstAppSrc:

模块源文件目录。

如图所示。

图FirstApp的目录结构

其中Inc目录下我们需要根据上述代码结构新建4个头文件,分别是FirstAppDef.h,FirstAppGprot.h,FirstAppProt.h,FirstAppTypes.h。

在FirstAppSrc目录下建立FirstApp.c文件,将来程序的实现就完全在该文件中进行描述。

2.将相关文件路径加入plutommi的编译配置文件

下面我们来关注make\plutommi\mmi_app\目录下的3个文件。

1)mmi_app.lis:

该文件用来指明MMI所要编译的具体源文件。

将我们的\plutommi\mmi\FirstApp\FirstAppSrc\FirstApp.c附加在文件末尾。

如图所示。

图mmi_app.lis文件末尾

2)mmi_app.inc:

该文件用来指明源文件所需要的头文件的目录。

将我们的\plutommi\mmi\FirstApp\FirstAppInc目录附加在文件末尾。

3)mmi_app.pth:

该文件用来指明要编译的源文件目录。

将我们的\plutommi\mmi\FirstApp\FirstAppSrc目录附加在文件末尾。

3.为新增模块增加编译开关

在这里,我们推荐开发人员为自己的模块增加一个宏开关,这样在不需要自己的模块的时候,可以关闭它,减少编译后的Bin文件大小,以节省空间。

打开文件\make\Option.mak,在末尾添加宏__MMI_FIRSTAPP__,如图所示。

COM_DEFS+=__MMI_FIRSTAPP__#addbydeveloper1

图在Option.mak文件中增加开关

接下来在FirstApp.c文件写入实现代码。

代码如下:

#include"MMI_features.h"

#include"PixtelDataTypes.h"

#include"Unicodexdcl.h"

#include"gdi_include.h"

#include"wgui.h"

#include"gui.h"

#include"Globaldefs.h"

#include"CustDataRes.h"

#include"wgui_categories.h"

#include"wgui_categories_util.h"

#include"wgui_softkeys.h"

#include"HistoryGprot.h"

#include"OrganizerDef.h"

#include"FirstAppGprot.h"

#include"FirstAppTypes.h"

#include"FirstAppDef.h"

voidExitFirstAppScreen();

voidEntryFirstAppScreen();

voidEntryFirstAppScreen()

{

//SCR_FIRSTAPP_MAIN是屏幕的ID号

EntryNewScreen(SCR_FIRSTAPP_MAIN,ExitFirstAppScreen,NULL,NULL);

entry_full_screen();//全屏幕

clear_screen();//将屏幕清成空白

gui_set_text_color(gui_color(255,0,0));//绘制文本颜色为红色

gui_move_text_cursor(100,100);//设置文本绘值的起始坐标

gui_print_text(L”HelloMTK!

”);//打印字符串

gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);//重绘屏幕

SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP);//注册了右键(KEY_RSK)的响应函数

}

voidExitFirstAppScreen()

{

historycurrHistory;

currHistory.scrnID=SCR_FIRSTAPP_MAIN;

currHistory.entryFuncPtr=EntryFirstAppScreen;

GetCategoryHistory(currHistory.guiBuffer);

pfnUnicodeStrcpy((s8*)currHistory.inputBuffer,(s8*)L"");

AddHistory(currHistory);

}

到此为止,我们新增的程序的骨架已经搭建好。

接下来就是添加资源。

4.添加资源

第1步:

添加文件

需要为我们的模块添加一个资源文件。

目录如下图所示。

其内容将会在接下来的章节进行添加和完善。

将其命名为Res_FirstApp.c,并初步添加如下内容:

图增加资源文件

#include"MMI_features.h"

#include"CustomCfg.h"

#ifdefFIRST_PASS

#include"BuildCfg.h"

#endif

#include"ComposeRingToneDefs.h"

#include"FirstAppDef.h"

#ifdefDEVELOPER_BUILD_FIRST_PASS

#include"PopulateRes.h"

voidPopulateFirstAppRes(void)

{

}

#endif

第2步:

修改makefile文件。

该文件用于资源装载的预编译。

添加刚才我们新增的头文件目录,目录里面包括了与资源文件定义有关的FirstAppDef.h文件。

打开文件\plutommi\Customer\ResGenerator\Makefile,增加下图所示的头文件目录路径,即将刚才我们定义的FirstAppInc目录加入。

如下图所示。

-I"../../MMI/FirstApp/FirstAppInc"\

图增加FirstApp相关目录

第3步:

修改PopulateRes.c文件,打开文件PopulateRes.c,添加刚才我们定义的资源装载函数PopulateFirstAppRes,如图所示。

#ifdef__MMI_FIRSTAPP__

externvoidPopulateFirstAppRes(void);

#endif

图资源加载函数

接着在该文件内找到函数voidPopulateResData(void),添加如下代码。

如图所示。

#ifdef__MMI_FIRSTAPP__

RES_PRINT_INFO("PopulatingFirstAppResources\n");

PopulateFirstAppRes();

#endif

图调用资源加载函数

至此,我们已经为新增的程序模块做好了基本的资源框架。

在进行模块的内部资源ID定义之前,我们还要做一件重要的事情,那就是定义程序的基础ID。

在MMI软件系统中,所有程序的资源ID都是独一无二的,必须保证这些ID不能相互冲突。

因此,我们需要对ID进行一下包装。

1打开文件\plutommi\mmi\inc\MMIDataTypes.h,该文件用于基础ID的统一定义和包装。

将程序模块ID命名为FIRSTAPP,这里的“50”表示程序模块的ID定义不会超过50个,如图所示。

#ifdef__MMI_FIRSTAPP__

RESOURCE_BASE_RANGE(FIRSTAPP,50),

#endif

图定义模块ID范围

2按照源代码的格式,添加如下宏定义,如下图所示。

#ifdef__MMI_FIRSTAPP__

#defineFIRSTAPP_BASE((U16)RESOURCE_BASE_FIRSTAPP)

#defineFIRSTAPPFIRSTAPP_BASE/*bebackwardcompatible*/

#defineFIRSTAPP_BASE_MAX((U16)RESOURCE_BASE_FIRSTAPP_END)

RESOURCE_BASE_TABLE_ITEM(FIRSTAPP)

#endif

图定义相关宏

第4步:

添加新的屏幕ID

打开文件FirstAppDef.h,命名为SCR_FIRSTAPP_MAIN。

需要注意的是,该ID应该属于一个枚举。

添加完毕后文件内容如图所示。

#ifndef_FIRSTAPPDEF_H

#define_FIRSTAPPDEF_H

#include"MMI_features.h"

#include"PixtelDataTypes.h"

typedefenum

{

SCR_FIRSTAPP_MAIN=FIRSTAPP_BASE+1

}SCREENID_LIST_FIRSTAPP;

#endif

图添加新的枚举变量

这样,以后只要是程序模块新增的资源定义文件,都将在此文件中添加。

现在,我们就可以用SCR_FIRSTAPP_MAIN替换之前借用的屏幕ID,修改如下函数。

voidEntryFirstAppScreen()

{

EntryNewScreen(SCR_FIRSTAPP_MAIN,ExitFirstAppScreen,NULL,NULL);

entry_full_screen();//全屏幕

clear_screen();//将屏幕清成空白

gui_set_text_color(gui_color(255,0,0));//绘制文本颜色为红色

gui_move_text_cursor(100,100);//设置文本绘值的起始坐标

gui_print_text(L”HelloMTK!

”);//打印字符串

gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);//重绘屏幕

SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP);//注册了右键(KEY_RSK)的响应函数

}

现在,资源添加的前提准备工作就完成了。

接下来的几个小节中,我们将详细讲解各种资源的添加和修改操作。

字符串

1进入路径:

\plutommi\Customer\CustResource\PLUTO_MMI\,打开文件ref_list.txt,按照下面格式新添两行数据。

如图所示。

图增加新的字符串ID和内容

(提示:

每一列填写完毕后,建议使用键进入下一列的编辑。

当STR_FIRSTAPP写完后,按键,继续写undefined,依此类推。

2确定字符串ID。

在文件FirstAppDef.h中添加字符串ID,如图所示。

typedefenum

{

STR_FIRSTAPP=FIRSTAPP_BASE+1,

STR_FIRSTAPP_HELLOMTK,

STR_FIRSTAPP_TOTAL

}STR_ID_FIRSTAPP_ENUM;

图确定字符串ID

3字符串加载。

在文件Res_FirstApp.c中,找到PopulateFirstAppRes函数并添加添加如图所示代码。

ADD_APPLICATION_STRING2(STR_FIRSTAPP,"FirstApp","NameofFirstApp");

ADD_APPLICATION_STRING2(STR_FIRSTAPP_HELLOMTK,"HelloMTK","ASimpleString");

图字符串加载

(提示:

宏ADD_APPLICATION_STRING2的第1个参数为字符串ID;第2个参数为字符串默认显示的内容,如果开发人员在ref_list中没有添加正确的内容,那么程序就用默认的内容显示。

第3个参数为字符串的描述信息,可以按需填写。

接着修改FirstApp.c文件中的函数,现在可以使用系统提供的API读取字符串ID,如下图所示。

gui_print_text((UI_string_type)GetString(STR_FIRSTAPP_HELLOMTK));

图打印字符串

菜单

1要制作菜单,首先要确定其ID

整个MMI中用到的菜单ID都位于plutommi\mmi\inc\GlobalMenuItems.h文件中。

在枚举中添加MENU_ID_FIRSTAPP,注意该ID必须放在MAX_MENU_ITEMS_VALUE之前。

代码添加位置如下:

/*和Organizer中的ID放在一起便于归纳*/

#ifdef__MMI_FIRSTAPP__

ORGANIZER_FIRSTAPP_MENU,

#endif

图在枚举中添加MENU_ID_FIRSTAPP

2将新ID整合在Organizer的菜单ID之中

打开文件Res_MainMenu.c(\plutommi\customer\CustResource\PLUTO_MMI\RES_MMI)。

由于我们需要将ID整合在Organizer的子菜单中,所以,我们要前往Res_MainMenu.c中修改Organizer的ID。

//添加我们程序的菜单枚举值,以便让系统原来的Organizer加载我们的菜单

#ifdef__MMI_FIRSTAPP__

ORG_ENUM_FIRSTAPP,

#endif

图添加菜单枚举值

在SI工程中的左侧找到PopulateMainMenuRes()函数,将下列代码添加进去。

/*添加用户自定义的宏*/

#ifdefined(__MMI_FIRSTAPP__)

ORGANIZER_FIRSTAPP_MENU,

#endif

图添加用户自定义的宏

因为先前的操作是将新菜单加入Organizer的下属菜单,所以,现在让我们继续加载菜单本身。

打开文件Res_FirstApp.c,修改函数,如图所示。

//特别要注意该宏的内部,所有参数必须外加一个括号包裹起来,也就是双层括号;

//ADD_APPLICATION_MENUITEM((arg1,arg2,arg3))这一点很重要,否则执行update操作的时候不同通过。

ADD_APPLICATION_MENUITEM((

ORGANIZER_FIRSTAPP_MENU,//菜单ID

MAIN_MENU_ORGANIZER_MENUID,//父菜单ID,这里是ORGANIZER的菜单ID

0,//因为没有下属菜单,所以为0

SHOW,

SHORTCUTABLE,//

DISP_LIST,//列表显示

STR_FIRSTAPP,//

IMG_FIRSTAPP));//IMG_FIRSTAPP是图片的ID,以后会讲到

图菜单加载

当用户进入一个列表项上下进行选择的时候,当前只有一个菜单项会被高亮显示。

如果用户这时候按左键或者OK键,系统就会进行界面跳转,进入菜单所指向的模块。

系统将会在我们上下选择菜单的时候,对当前高亮项发一个通知。

这样,用户就通过单击当前高亮菜单,执行其注册的功能。

在菜单项接到高亮通知后,其实只需要做一件事情,就是更改左右按键的响应函数,其中最重要的就是左软键,如前面所讲,我们将要菜单项:

ORGANIZER_FIRSTAPP_MENU作为程序的入口菜单,那么就应该将做菜单的响应函数设为EntryFirstAppScreen,并将此函数作为实参传入SetHiliteHandler函数。

修改FirstAppProt.h文件,增加如下代码。

externvoidmmi_firstapp_hilite(void);

externvoidmmi_firstapp_init(void);

将前面提到的SetHiliteHandler封装到我们的初始化函数之中,修改FirstApp.c文件,增加如下代码:

voidmmi_firstapp_hilite(void)

{

//将左按键的响应函数设置为新增的入口函数EntryFirstAppScreen

SetLeftSoftkeyFunction(EntryFirstAppScreen,KEY_EVENT_UP);

}

voidmmi_firstapp_init(void)

{

//将高亮响应处理绑定给新增的菜单ID

SetHiliteHandler(ORGANIZER_FIRSTAPP_MENU,mmi_firstapp_hilite);

}

完成这两步以后,我们新增程序的菜单项就可以正确地接受和处理通知。

到目前为止,FirstApp.c文件中代码如下:

#include"MMI_features.h"

#include"PixtelDataTypes.h"

#include"Unicodexdcl.h"

#include"gdi_include.h"

#include"wgui.h"

#include"gui.h"

#include"Globaldefs.h"

#include"CustDataRes.h"

#include"wgui_categories.h"

#include"wgui_categories_util.h"

#include"wgui_softkeys.h"

#include"HistoryGprot.h"

#include"OrganizerDef.h"

#include"FirstAppGprot.h"

#include"FirstAppTypes.h"

#include"FirstAppDef.h"

voidExitFirstAppScreen();

voidEntryFirstAppScreen();

voidmmi_firstapp_hilite(void)

{

//将左按键的响应函数设置为新增的入口函数EntryFirstAppScreen

SetLeftSoftkeyFunction(EntryFirstAppScreen,KEY_EVENT_UP);

}

voidmmi_firstapp_init(void)

{

//将高亮响应处理绑定给新增的菜单ID

SetHiliteHandler(ORGANIZER_FIRSTAPP_MENU,mmi_firstapp_hilite);

}

voidEntryFirstAppScreen()

{

EntryNewScreen(SCR_FIRSTAPP_MAIN,ExitFirstAppScreen,NULL,NULL);

entry_full_screen();//全屏幕

clear_screen();//将屏幕清成空白

gui_set_text_color(gui_color(255,0,0));//绘制文本颜色为红色

gui_move_text_cursor(100,100);//设置文本绘值的起始坐标

//输出从资源载入的字符串

gui_print_text((UI_string_type)GetString(STR_FIRSTAPP_HELLOMTK));//打印字符串

gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);//重绘屏幕

SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP);//注册了右键(KEY_RSK)的响应函数

}

voidExitFirstAppScreen()

{

historycurrHistory;

currHistory.scrnID=SCR_FIRSTAPP_MAIN;

currHistory.entryFuncPtr=EntryFirstAppScreen;

GetCategoryHistory(currHistory.guiBuffer);

pfnUnicodeStrcpy((s8*)currHistory.inputBuffer,(s8*)L"");

AddHistory(currHistory);

}

因为我们增加的菜单位于Organizer之中,所以,将初始化函数放在Organizer的初始化函数中进行初始化调用。

#ifdef__MMI_FIRSTAPP__

mmi_firstapp_init();

#endif

图新添加的初始化函数

在EntryOrganizer(void)函数中,添加如下代码,启动新添加的菜单项。

#ifdef__MMI_FIRSTAPP__

//EntryFirstAppScreen();

#endif

图调用启动菜单项

图片

1定义图片的ID

打开头文件FirstAppDef.h,添加如下代码:

typedefenum

{

IMG_FIRSTAPP=FIRSTAPP_BASE+1

}IMAGEID_LIST_FIRSTAPP;

图添加图片ID

2打开下图所示目录,并在MainLCD目录下新建文件夹FirstApp

图MainLCD

3在FirstApp文件夹中新加一幅图片ICON.BMP。

图片添加完毕之后,将整个MainLCD文件夹打包为image.zip。

(提示:

每次添加了新的图片之后,必须将MainLCD文件夹打包为ZIP压缩包。

否则,在make操作的时候,文件夹内的文件将会被上次的压缩包文件替换。

4打开文件Res_FirstApp.c,函数PopulateFirstAppRes中添加图片加载代码。

ADD_APPLICATION_IMAGE2(IMG_FIRSTAPP,CUST_IMG_PATH"\\\\MainLCD\\\\FirstApp\\\\ICON.BMP","FirstAPPICON");

5为菜单添加图标

继续修改PopulateFirstAppRes函数,由于前面步骤已经将图片资源载入,所以我们可以使用图片来作为菜单的图标。

现在,在命令行new操作,再重新built一次VC工程。

参考资料:

走出山寨MTK芯片开发指南陈智鹏著

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2