ETC CY8C24533

MTK 入门
有偿提供 MTK 技术支持(QQ:85313653-请注明 MTK)
文档内容:
-》MTK 软件架构
-》如何编译
-》开发目录结构解析
-》开发工具的了解
-》程序入口,程序导读
-》MMI 的制作
1. MTK 软件构架
参考文档:MT6218_SW_ReleaseNote.pdf
MTK 为 MediaTek 公司提供的 GSM 软件方案。它包含 5 个部分:
-》L1 协议
-》设备驱动
-》协议栈
-》MMI
-》WAP 应用
MediaTek 为用户提供 3 个工具:
-》Catcher
-》META
-》MCT
MTK 软件架构图:
下面 3 个部分组成该软件方案:
1. MS Executable Software, which is the software running on the MS, includes
the following modules
- OS: Nucleus OS.
- L1 Protocol Stack: GSM physical layer.
- Drivers: device driver, like SIM, UART, GPIO, etc.
- L2/L3 protocol stack: GSM protocol stack layer.
- MMI: man-machine interface.
- WAP: Wireless application protocol.
- JAVA: J2ME Software
2. The Mobile Engineering Testing Architecture, also known as META
3. Catcher
-》OS
MediaTek 采用 Nucleus OS 实时操作系统。KAL OS 层为 MediaTek’s 软件和 Nucleus
操作系统的接口。它为任务提供许多系统服务函数,比如计时器,队列,内存管理,事件等等。
-》L1 Protocol Stack
The physical layer or Layer 1 supports the transfer of bit streams on the radio
medium according to the Technical Specifications of the 05-series. It provides
service to upper layers and control the mapping and scheduling between the
logical and physical channels. The TDMA framing and radio control parts are also
implemented.
Layer 1 Asynchronous: handles the message request from upper layers and
forward the result generated by layer 1 to upper layer.
Surrounding Cell Engine: handles the neighbor cell power measurement and
neighbor cell synchronization information acquisition.
Layer 1 Control: handles the TDMA scheduling on the radio environment,
including timing advance and power control command from serving base station.
Layer 1 Driver: handles the DSP and Radio control
-》Drivers
MCU 外围设备的驱动,如下:
SIM: Subscriber Identity Module
UART: Universal Asynchronous Receiver/Transmitter
SPI: Serial Port Interface
LCD: Liquid Crystal Display
GPIO: General Purpose Input/Output
GPT: General Purpose Timer
RTC: Real Time Clock
WDT: Watch Dog Timer
PWM: Pulse Width Modulation
Alerter
Keypad
PMIC: Power Management IC
BMT: Battery Charging Management task
AUX task: Auxiliary task
ADC Sched.: Analog to Digital Converter Sch
USB task: The USB 1.1 protocol and
eduler
driver
IrDA task: The IrDA and driver
Camera: Camera driver for integrating with 3rd party camera module
MSDC: Memory card driver, supporting SD, MMC cards and Memory Stick
JPEG Decoder: Software for controlling hardware JPEG decoder
-》L2/L3/L4 Protocol Stack
这部分包含大量的 GSM/GPRS 需求以及提供一个优秀的 GSM/GPRS 平台给应用程序。本
地 MMI 和远程 PC 通过 AT 命令可以方便的使用该软件平台。详细的结构如下:
RMI: 远程 MMI,比如 PC 端,可以使用 AT 命令通过串口与协议栈进行通讯。
FMI: Feature rich MMI, described in the
above section. This is the production
co-worked with Pixtel.
L4: Layer 4. L4 is a task through which FMI and/or
RMI communicate with PS. L4
task includes several sub-modules.
ATCI: AT command interpreter. Interprets the AT
commands the L4C to do the relative actions.
commands from PC side and
L4A: L4 adaptation layer for FMI. The SAP
between FMI and L4A is primitive base.
L4C: L4 control entity. Handles all applications request and response.
UEM: User equipments adaptation.
Adaptation for drivers, like Keypad, LED,
GPIO, Audio…etc.
PHB: Phone book management. Handles the phone
books related processing,
like: sorting…etc.
SMU: SIM management unit. Handle the security
CSM: Circuit
management, and STK.
switching protocol stack management.
RAC: Registration access control.
SMSAL: Short message service application layer.
TCM: Terminal context management.
NVRAM: Non-volatile RAM. This is adaptation layer
DATA: Circuit switched data service. Data task
FAX:
to flash memory.
identity module. Handle SIM behavior as ETSI 11.11 description.
SIM: Subscriber
includes several sub-modules.
Group 3 Facsimile.
TDT: Transparent
L2R: Layer 2
circuit switching data.
relay protocol for non-transparent circuit switching data.
RLP: Radio link protocol for non-transparent
CC:
Circuit-switched call control.
SS:
Supplementary service.
SMS: Short
SM: Session
circuit switching data.
message service.
management.
MM/GMM: Mobility
management/GPRS mobility management.
SNDCP: Subnetwork dependent convergence protocol.
LLC: Logical link control.
RR: Radio resource management. RR task includes
RRM: Handles cell
RMPC:
several sub-modules.
selection and PLMN selection.
Handles the procedures in Idle/Dedicated state including the surrounding
cell scheme and measurement reporting.
LAPDM: Handles the procedure defined in GSM layer 2.
RLC: Radio link control protocol.
MAC: Medium access control protocol.
MPAL: Adaptation layer for RR and L1A.
PPP: Point to Point protocol
layer. This is client PPP layer.
-》MMI
这部分包括用户的接口架构,应用以及和协议栈的通讯。
Framework: This covers that
OSL: OS adaptation layer
Task: communication with L4 task.
File system: communication with storage device.
GUI: This covers that
Theme
UI
component
Category screen
Font
Editor
T9 or Ezi input method.
Access LCD driver.
Customization tool.
Application
Phonebook
Messages (SMS, EMS 4.0, CB)
Call
history
Setting. (Phone setting,
5
network setting, security setup)
kinds of user profiles
Fun and games
Organizers
Services
Shortcuts
In call management.
Interrupt events, like charging , alarm.
-》WAP
如何编译
参考文档:wcr-MTK_MakeBuild_Design_Customer_040930.pdf
-》编译环境
操作系统:Windows 2000, WinXP. 推荐 Windows 2000 with SP2 or later.
编译器:ADS (Arm Developer Suite) v1.2.
Perl 解析:ActivePerl.推荐使用 ActivePerl 5.6.1 版本
-》make.bat
It will parse command line to determine project name, platform, and action.
Meanwhile, checking \make directory exist or not and checking command line
argument is legal or not. After checking, to execute build script GSM2.mak build
script to perform action.
使用:
Usage: Make [custom=customername] <project> <platform> <action> [module]"
custom = Monza
project = GPRS (GSM only)
action = new (clean, scan, compile, link) (default)
= update (scan, compile, link)
= remake (compile, link)
= clean (clean)
module = component module name (nucleus, l1, ...)
Example:
To make/build new GPRS project, clean all old objects, libraries, and log files etc.,
the new action also creates necessary directories and removes all temporary files,
and flushes log files automatically.
d:>\pvcs\maui\mcu\Make custom=Monza GPRS new
To update project dependency, and compile changed modules, link. Notice that,
update and remake action won’t remove temporary files, and flush log file. Build
results will be append after last log file.
d:>\pvcs\maui\mcu\Make custom=Monza GPRS update
To recompile changed files, and link
d:>\pvcs\maui\mcu\Make custom=Monza GPRS remake
To clean all objects, temporary files, libraries, and executable binaries. Meanwhile
log file will also be flushed.
d:>\pvcs\maui\mcu\Make custom=Monza GPRS clean
To clean dedicated init modules’ objects libraries. Meanwhile log file will also be
flushed.
d:>\pvcs\maui\mcu\Make custom=Monza GPRS clean init
-》how to customize your build environment
!!!To add some modules into or remove some modules from the building procedure.
To complete this kind of configuration, it is necessary to understand the following
variables in the make file
Monza_GPRS.mak
COMPLIST: list all source code modules can be built to .lib. In initial custom
release, COMPLIST
should be the sum of CUS_REL_SRC_COMP and CUS_REL_PAR_SRC_COMP. The
following is the initial setting in custom release.
ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
COMPLIST = $(strip $(CUS_REL_SRC_COMP))
COMPLIST += $(strip $(CUS_REL_PAR_SRC_COMP))
endif
CUS_REL_MTK_COMP: list all modules provided with .lib only. These .lib are put
in \mcu\mtk_libs.
If you want to add a source module
1、add the module "xyz" (in lower case) into COMPLIST.
ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
COMPLIST = $(strip $(CUS_REL_SRC_COMP))
COMPLIST += $(strip $(CUS_REL_PAR_SRC_COMP))
COMPLIST += xyz
endif
2、add a folder “mcu\make\xyz” for xyz.lis, xyz.inc, xyz.pth, xyz.def.
-》编译生成的文件以及 log
1.编译的 log 在目录 C:\code_100\build\a100 中的 MT6218B.log。目录
C:\code_100\build\a100\log 下的 log 文件为各个模块编译时生成的 log。
2.编译生成的 bin 为 C:\code_100\build\a100 下的
a100_PCB01_gprs_MT6218B_FN.W05_12.bin。
3.编译生成的目标文件在 C:\code_100\build\a100\gprs\MT6218Bo 目录中。
3、开发目录结构解析
参考文档:wcr-MTK_MakeBuild_Design_Customer_040930.pdf
目录结构:
4.开发工具的了解
参考目录《工具》中的文件。
工具:
-》Catcher
Catcher is a PC-side tool for MTK GSM/GPRS Products. The main purpose of Catcher
is for logging primitives and debug information. Engineers can use Catcher to
analyze the behavior of mobile phones.
-》META
META (Mobile Engineering Testing Architecture) is designed to provide the
functionality of RF testing, NVRAM access testing, speech related testing of
advanced feature – melody and voice memo.
-》MCT
UI 制作工具,包括菜单制作,图片制作,字体制作等等。
5.程序入口,程序导读
-》MMI 任务入口:
C:\code_100\plutommi\mmi\Framework\Tasks\TasksSrc
中文件 MMITask.c 函数 MMI_task。
-》MMI 任务的建立:
C:\code_100\plutommi\mmi\Framework\Osl\OslSrc
中文件 pixtelMMI.c 函数 WinMain 调用 InitApplication 函数,在该函数中建立 MMI 任务,
建立任务的接口函数为:osl_create_task。
-》MMI 任务信息:
{"MMI TASK"(任务名称), "MMI Q"(队列名称), 127(优先级), 4096(堆栈大小),
MAX_PRT_NODES(队列结点个数), MMI_task(任务入口)}。
-》MMI 模块入口:
目录 C:\code_100\plutommi\mmi 中为 MMI 各个模块的代码。比如闹钟模块,源代码在
C:\code_100\plutommi\mmi\Alarm\AlarmSrc 中,头文件在
C:\code_100\plutommi\mmi\Alarm\AlarmInc 中。首先找到初始化闹钟的函数 AlmInit,
该函数定义在选择闹钟菜单项时调用函数 HighlightAlmMenu 进入闹钟功能。
6.MMI 的制作
参考文档:
文件名
文件内容描述
API For Writing Applications Using Pixtel MMI
Platform.pdf
Writing Applications Using Pixtel MMI Platform.pdf
各类窗口列表
如何写应用程
序
MMI 2.0 Design DOC 和 MMI Design Doc 目录中对 MMI 中的各个模块进行描述,因此在研
究某一模块时可以在这两个文件夹中找到该模块的介绍,通过这些文档可以加速对该模块编码的
理解。
MMI 的模块在路径 C:\code_100\plutommi 中。
-》设计一个应用程序的流程如下: 1. Write an Initialization function to register the various event handlers.
2. Write a populate function to register various string and image elements for the
application.
3. Write highlight handlers for function registered.菜单项的功能,当用户选择菜单项
后执行的函数。
4. Write the Entry functions。入口函数
5. Write the Exit function。出口函数
6. Write the business logic to call between various entry functions.
MTK 平台入门
1
简介
1.1
目的及其应用范围
本文档介绍了 mtk 平台的一些基础应用和实现,适用于刚参加 mtk 软件开发人员
1.2
术语定义
MMI – Man-machine interface,人机界面
FMI – Feature rich MMI
1.3
参考资料
[1] MMI High level design specification, pixtel
2
平台安装:
2.1
安装 ads1.2
2.2
安装 perl
2.3
安装 usb 驱动,用于下载
3
编译命令:
通过 new, update, remake, clean all, clean modules, codegen. 来动作生成 bin file
(二进字文件)
类如:
假设项目是 gsm 项目,项目名称为 m720,则有这些命令:
make custom=m720 gsm resgen(修改了资源时用这个命令生成新资源)
make custom=m720 gsm remake(用于生成 bin 档即可烧录到手机的文件)
make custom=m720 gsm clean custom(把 custom 模块生成的 obj 文件删除)
make custom=m720 gsm update custom(update custom 模块)
make custom=m720 gsm new(等于执行了前三个步骤,即 clean、resgen、remake)
make custom=m720 gsm update mmiresource(更新了资源但不会更新代码)
4
添加一个字符串:
首先给该字符串起一个名字,即 ID:如 STR_GLOBAL_OK,这个即是一个字串的 id 也就是名
字,而这个字串的具体内容(比如 STR_GLOBAL_OK 的内容是“Ok”),可以用下面的语句来
添加,
ADD_APPLICATION_STRING2(STR_GLOBAL_OK, "Ok","Global String- OK");
如果有对应的中文字符,则应在 ref_list.txt 中按照固定的格式添加中文字串。如:
STR_GLOBAL_OK
定
5
GLOBAL
6
Global String- OK
Ok
確
确定
添加一个菜单:
首先给这个菜单起一个名字,即 ID:如 ORGANIZER_CALENDER_MENU,这个即是一个菜
单的 id 也就是名字,但要把这个菜单加入到某个父菜单之下,则须指定其父菜单,方式可以参
照:ORGANIZER_CALENDER_MENU 这个菜单的方法,在 res_mainmenu.c 里,
ADD_APPLICATION_MENUITEM((MAIN_MENU_ORGANIZER_MENUID,IDLE_
SCREEN_MENU_ID,ORG_ENUM_TOTAL,
#if defined(__MMI_CALENDAR__)
ORGANIZER_CALENDER_MENU,
#endif
#if defined(__MMI_TODOLIST__)
ORGANIZER_TODOLIST_MENU,
#endif
ORGANIZER_ALARM_MENU,
#if defined (__MMI_WORLD_CLOCK__)
ORGANIZER_WORLDCLOCK_MENU,
#endif
#ifdef __MMI_MESSAGES_CLUB__
MAIN_MENU_SHORTCUTS_MENUID,
#endif
#ifdef __SLT_LONG_DISTANCE_DDD__
MENU_LONG_DISTANCE_DDD,
#endif
SHOW,MOVEABLEACROSSPARENT,DISP_LIST,
MAIN_MENU_ORGANIZER_TEXT,MAIN_MENU_ORGANI
ZER_ICON));
这个语句说明菜单 ORGANIZER_CALENDER_MENU 是菜单
MAIN_MENU_ORGANIZER_MENUID 的子菜单。而在 res_organizer.c 里,
ADD_APPLICATION_MENUITEM((ORGANIZER_CALENDER_MENU,MAIN_ME
NU_ORGANIZER_MENUID,
3,
MENU_GOTO_TASK_CAL,
MENU_ID_CLNDR_JUMP_TO_DATE,
MENU_CAL_TYPE,
SHOW,
MOVEABLETOSHORTCUT,DISP_LIST,
ORGANIZER_MENU_CALENDER_STRINGID,ORGANIZER_MENU_CAL
ENDER_IMAGEID));
这个语句则声明了 ORGANIZER_CALENDER_MENU 菜单所拥有的子菜单。
1.
关于宏 ADD_APPLICATION_STRING2()、ADD_APPLICATION_MENUITEM()
可以参考文件 Writing Applications Using Pixtel MMI Platform.pdf
更深入的了解可以查看文件夹 Document\MMI Design Documents\Pixtel 下的文件。
6
下载程序:
在当前工程 build 文件夹中找到对应的项目,打开项目文件夹,里面有*.bin 文件就是我们要下
载的文件。
7
编译错误信息查看:
如果在编译中某一模块编译不通过,我们可以在 build\项目名称\log 中查看 log 信息
8
模拟器运行:
首先安装好 VC,然后直接运行工程目录下的 PLUTOMMI\mmi\PixtelMMI.dsw 文件,先编译
资源文件,然后执行运行就可以了。
9
修改铃声资源:
一般项目开发修改的铃声资源主要是来电铃声,开关机铃声,翻合盖提示音,信息提示音
9.1.修改来电闹钟铃声资源:
修改的文件是 custpack_audio.c 中
const custpack_audio_header custpack_audio =
{
15,
{
{Y300Mid01_mp3, sizeof(Y300Mid01_mp3), 5},
{Y300Mid02_mid, sizeof(Y300Mid02_mid), 17},
{Y300Mid03_mid, sizeof(Y300Mid03_mid), 17},
{Y300Mid04_mid, sizeof(Y300Mid04_mid), 17},
{Y300Mid05_mid, sizeof(Y300Mid05_mid), 17},
{Y300Mid06_mid, sizeof(Y300Mid06_mid), 17},
{Y300Mid07_mid, sizeof(Y300Mid07_mid), 17},
{Y300Mid08_mid, sizeof(Y300Mid08_mid), 17},
{Y300Mid09_mid, sizeof(Y300Mid09_mid), 17},
{Y300Mid10_mid, sizeof(Y300Mid10_mid), 17},
{Y300Mid11_mid, sizeof(Y300Mid11_mid), 17},
{Y300Mid12_mid, sizeof(Y300Mid12_mid), 17},
{Y300Mid13_mid, sizeof(Y300Mid13_mid), 17},
{Y300Mid14_mid, sizeof(Y300Mid14_mid), 17},
{Y300Mid15_mp3, sizeof(Y300Mid15_mp3), 5},
}
custpack_audio 数组 第一个参数是铃声总数
第二个参数是铃声 list ,其中包含铃声数据,大小,类型,
铃声数据可以用 MCT 这个工具转换,然后代替各个数组的数据,提示最好不要修改数组名称
类型可以在 mdi_audio.h 中查找,类如 这里的 5 代表 mp3,17 代表 mid
9.2 修改开关机铃声,翻合盖提示音,信息提示音
resource_audio.c---------------------开关机铃声,翻合盖提示音,信息提示音
开关机铃声和翻合盖提示音对应的数组是一样的
const audio_resource_struct mtk_resource_sounds[]={
{resource01_mid, sizeof(resource01_mid), 17},
{resource02_mid, sizeof(resource02_mid), 17},
{resource03_mid, sizeof(resource03_mid), 17},
{resource04_mid, sizeof(resource04_mid), 17},
{resource05_mid, sizeof(resource05_mid), 17},
{resource06_mid, sizeof(resource06_mid), 17},
{resource07_mid, sizeof(resource07_mid), 17},
{resource08_mid, sizeof(resource08_mid), 17},
};
信息提示音对应的数组是:
const audio_resource_struct mtk_resource_message_sounds[]={
{message01_mp3, sizeof(message01_mp3), 5},
{message02_mp3, sizeof(message02_mp3), 5},
{message03_mid, sizeof(message03_mid), 17},
{message04_mid, sizeof(message04_mid), 17},
{message05_mid, sizeof(message05_mid), 17},
{message06_mid, sizeof(message06_mid), 17},
{message07_mid, sizeof(message07_mid), 17},
{message08_mid, sizeof(message08_mid), 17},
{message09_mid, sizeof(message09_mid), 17},
{message10_mid, sizeof(message10_mid), 17},
};
9.3 调整铃声总数和 id
resource_audio.h--------------------设置铃声 id 和总数
铃声 ID 大小不需要调整,只是根据铃声总数变了,增加或者减少 ID
10
修改图片资源:
添加图片资源一般用这个函数:ADD_APPLICATION_IMAGE2, 它的参数分别是:图片 ID,
图片放置路径,图片用途描述。类如:
ADD_APPLICATION_IMAGE2( MAIN_MENU_SYSTEM_ICON ,
CUST_IMG_PAT
H"\\\\MainLCD\\\\MainMenu\\\\BI_DEGREE\\\\MM_ITEM.gif" , "Icon used for
system in mainmenu" );
图片资源的修改主要分几种情况:
10.1
直接替换图片资源,不需要调整座标:类如开关机动画,墙纸,开关机 mp4 等,这种
修改资源很简单,但是修改时要注意图片来名称和类型与代码中是否匹配。
10.2
修改需要调整座标的图片:如日历,计算器等,这些图片修改需要 ID 给出座标,然后
我们在代码中修改。
10.3
修改用 tools 生成座标的图片:主要是 MP3 ,MP4 ,FM,世界时钟,座标调整可以
用 mct tools 来做。关于这个工具的使用
10.4 主题的修改也可以 mct tools 来做
(注:本人 MTK 平台、代码、资料属联发科所有,有偿提供支
持 QQ:85313653 请注明 MTK)