作者:Sam(甄峰) sam_code@hotmail.com
Sam以MediaTek MT62xx为平台开发。首先介绍MediaTek开发平台。
MediaTek提供标准软件包,它包含完整的一体化软件,由GSM/GPRS L1和协议栈,device driver,应用程序和MMI组成。通常情况下,采用MTK解决方案的用户,只需要修改一小部分代码来配合他们的硬件修改和定制。目录位于:.../mcu/custom.
程序安装:
1.ADS安装。
2.copy ADS_1.2 Others\ADS_1.2\ADS Patch\armAdsBuild842\bin中内容到 C:\Program Files\ARM\ADSv1_2\Bin
3.copy ADS_1.2 Others\ADS_1.2\ADS Patch\armlib_build_837\Adsv1_2\Lib\armlib内容到 C:\Program Files\ARM\ADSv1_2\Lib\armlib
就是修改编译器和lib.
4. ActivePerl安装:
ActivePerl-5.8.4.810-MSWin32-x86
驱动安装:
程序编译:
打开cmd,进入字符界面。进入source code 目录。
1>. make ivy grps r
然后开始编译。编译完成后,会生成目录 ~\build\IVY\IVY_PCB01_gprs_MT6235B_S01_IVY_SW_0.9.bin, image文件就放在其中。
编译命令的解释:
make xxx gprs new
make xxx gprs update
make xxx gprs remake
make xxx gprs clean
编译成功后,在build目录下生成所有的.obj,编译信息log文件、下载.bin文件等;编译失败时,到build目录下查看相应的log文件,可看到出错信息。
几个关键字解释如下:
1). xxx,Project名,对应make目录下的xxx_GPRS.mak文件;
2) 最后一个关键字:
a. new:不管资源、代码是否有改变,全部重编;
b. update:扫描资源、代码的改变,有改变的重编,无改变的不编;
c. remake:不扫描资源,只扫描代码的改变,有改变的重编,资源和无改变的代码不编;
d. clean:清除build目录下的所有内容,保留目录结构。
程序烧入:
将手机和PC用烧入线连接起来。
运行FlashTool_v3.0836.00\Flash_tool.exe
选择Scatter-loading, 选择~build\IVY\IVY_PCB01_gprs_MT6235B_S01_IVY_SW_0.9.bin\scatIVY.txt文件
Option-〉选择对应的serial port.
关机
按下download
开机,之后开始download
Sam的工作从MMI开始。
MMI:Man Machine Interface。即人机界面。
首先加入一个UI,上面写上:Hello World!
建议加入的代码放到新目录内:
一:目录结构的创建:
首先在plutommi\mmi目录中创建BluetoothUI目录,并在其中创建BluetoothUIInc目录和BluetoothUISrc。顾名思义,里面分别放头文件和源文件。
Sam在plutommi\mmi\BluetoothUI\BluetoothUISrc中创建了一个源文件:BluetoothUISrc.c
又在plutommi\mmi\BluetoothUI\BluetoothUIInc中创建了:
BluetoothUIProt.h :本程序所有函数声明,但只被本程序include
BluetoothUIDefs.h: 本程序的资源ID.
BluetoothUITypes.h:放置本程序使用的所有类型,结构,常量。
BluetoothUIGprot.h:需要被别的程序使用的函数声明,被别的程序include。
二:程序的编写:
void mmi_BluetoothUI_entry(void)
{
//从前一个Screen中退出,进入当前Screen,如果不这样,那前一个Screen还在响应一些消息。
EntryNewScreen(SCR_3DIJOY_SCREEN, NULL, mmi_BluetoothUI_entry, NULL);
//清屏
clear_screen();
//指针位置
gui_move_text_cursor(2, 100);
//字符颜色
gui_set_text_color(UI_COLOR_GREEN);
//写字符入屏幕
gui_print_text(L"Bluetooth Game Controller");
gui_move_text_cursor(60, 200);
gui_set_text_color(UI_COLOR_BLACK);
gui_print_text(L"3DiJoy Inc.");
//刷新,否则字符没有显示
gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1);
return;
}
并且:SCR_3DIJOY_SCREEN需要被加入到ConnectivityResDef.h中。Screen ID
三:程序加入主程序:
MTK程序与PC或其它Linux嵌入式程序不同,它的程序与整个系统是固定在一起的。Nuclues类似于UC/OS-II。所以Sam只提供了一个 mmi_BluetoothUI_entry()供别人调用。为了测试这个函数,Sam将它加入到:
plutommi\mtkapp\AudioPlayer\AudioPlayerSrc\AudioPlayerSrc.c中的mmi_audply_app_pre_entry()中。也就是“多媒体-〉音乐播放器”的入口程序中。
如同Makefile中需要指定某个obj需要被编译出一样。我们也需要指出BluetoothUISrc.c需要被编译。
Sam先查看AudioPlayerSrc.c在make目录中是被加入到哪里的。发现是:
make\plutommi\media_app\media_app.lis中。于是需要将BluetoothUISrc.c也加入到这个文件中以指出这个.c需要被编译。
并在make\plutommi\media_app\media_app.pth中加入源码路径:
plutommi\mmi\BluetoothUI\BluetoothUISrc,
编译时会报一些东西未定义,只需要加入相应头文件即可。
注[1]
编译成功,烧入手机,进入多媒体-〉音乐播放器,则显示自己的UI。
注1:之前Sam严格按照目录创建了头文件,然后在AudioPlayerSrc.c中include。但在make\plutommi\media_app\media_app.inc指定头文件目录后,还是无法找到头文件,估计是需要 make ivy gprs n
但我们并没有所有的源码,所以无法成功编译。
没有评论:
发表评论