您的位置:控制工程论坛网论坛 » 职业交流 » 备忘?

junhong07

junhong07   |   当前状态:在线

总积分:7915  2024年可用积分:1

注册时间: 2008-01-15

最后登录时间: 2019-06-23

空间 发短消息加为好友

备忘?

junhong07  发表于 2009/9/26 20:49:05      865 查看 0 回复  [上一主题]  [下一主题]

手机阅读

如果刚拿到的新代码编译不了,检查项目目录下tools文件是否完整

  option文件配置arm

  命令:armar.o文件或.obj文件做成lib

  添加一个模块:

  option文件里:

  complist+=模块;

  CUS_REL_MTK_COMP+=模块;

  建文件夹,同样新建四个文件,参照mmi_app文件夹

  宏控放在模块目录def文件的话只作用于当前模块

  宏控放在option就作用于整个项目

  手机默认是4个字节对齐的

  手机和模拟器用的系统是不一样的

  createModis.ini

  模拟器生成不了的话,并且通过vc编译器发现有的模块没有加载进来,就看下createModis.ini,把没有加载进来的模块宏控放在[DISABLE_OPTION]里

  项目的名字:custom/system/项目名字

  手动make命令:make项目名字gprs//makegprs版本的项目

  链接出错也写在log日志里,bulid目录下的MTK版本名的名字的log文件里

  如果一直提示某个obj或者o文件有错误,就把bulid目录下对应的那个obj或者o文件删除掉重新编译即可

  如果出现某个头文件找不到的错误,并且那个头文件确实加进去了,把dep文件删除有可能会好

  libs文件加在modis目录下,有个libs文件,不要忘记加入vc6工程

  有些时候可能碰到某些宏重定义或者函数重定义,可能是因为某些定义文件在工程中加入到了错误的模块中

  有时可能出现win32的类型重复定义错误,原因可能是win32的头文件包含顺序有问题

  system_inc.h文件里内容是手机开了哪些任务

  gdi比较稳定,gui的代码可能被第三方改动过,所以做MMI开发最好多用gdi

  customl_create.c文件中custom_main()是任务机制的例子

  屏幕模板仅供参考,MMI控件一般都自己做

  C语言函数一般都可以使用,但是可能会处理内存的函数就不能用

  做MMI应用中用到的坐标类型数据不要写死,以便于以后换分辨率减少工作量,用宏定义

  不建议用第三方或者系统的宏定义

  项目开发的大致流程:

  产品定义文档:

  分析功能、定义操作流程

  概要设计:

  划分模块、数据定义

  详细设计

  接口定义(或直接写到头文件里头)

  写代码

  测试

  单元测试代码(一般写到单独的文件夹里)

  1.判断某个开关是否打开,不需要搜索该开关,只要在开关所控制的范围内输入非法语句,编译过则说明该开关是关闭的。

  2.在remake之前,记得先编译资源。

  3.模拟器上可以联网。

  4.想强制编译某个文件可以把对应的obj文件删除掉。

  5.资源文件名必须得Res_开头,同时要注意少用大写字母,否则会出问题。

  6.makefile文件中不能使用空格,可以用Tab键代替。

  7.当遇到菜单等显示不正常时,可以考虑new一次。

  8.每天最好new一次,最好在真机上跑两次。

  9.不能在for循环等进行trace操作,否则会显示不出来。

  10.某个全局变量莫名其妙得被改变了,可能是数组越界访问到了该变量的内存空间。可以在定义该全局变量的语句处上下定义一些变量进行保护,以验证问题的原因。

  11.修改*.lis文件,只需要remake。

  12.加上一个.c文件后,只需要用gen_modis语句,生成模拟器后只需要build。

  修改.mak文件一定要new,修改语言一定要new,所以一般情况下不要改.mak文件

  烧机前要看bulid的bin文件修改日期是否正确

  模拟器上运行的默认是有SIM卡的效果,如果烧机后发现效果没有显示出来就插上SIM卡试下,双卡双待的话插两个中的任意一个

  模拟器上调试正常后烧机之前要先remake一下

  编modis的时候,new到写第一个log的时候,就可以停下来new_modis了

  然后在MakeModis到写第一个log的时候,就可以停下来用vc编了

  移植流程:

  先把项目整个放在MMI自己的模块里面,然后加入编译目录,然后运行看哪里有错误,如果错误解决不了,就要在原本的平台上,跑一次,看看框架流程是怎样关联起来的。具体的游戏逻辑不需要了解,但是之间的调用关系,要调试跟踪下看看。然后,在MTK上,把框架搭起来,在按照功能模块,一个一个的填充。

  源代码能不动就不动~

  MTK有自己的一套绘图,读写文件以及等等,这些是肯定要改得

  先移植一些工具文件(例如Util.c),把里面的底层一些函数,都改成MTK下的

  MMI模板ID定义是在wgui_categories_defs.h中,可以用来参考原有屏幕模板是怎么实现的

  关闭某个模块:

  在项目目录下make目录下项目名_GPRS.mak文件里

  文件管理模块

  filemgr.c,filemgrui.c



   MMI_BOOL  MMI_TRUE = 1 MMI_FALSE = 0
        MBOOL FALSH TRUE
        FALSE = 0  TRUE = 1
        ST_SUCCESS 1 ST_FAILURE 0
    typedef char                S8;
    typedef char                *PS8;
    typedef unsigned char       U8;
    typedef unsigned char       *PU8;

    typedef unsigned short      pBOOL;

    typedef short int           S16;
    typedef short int           *PS16;
    typedef unsigned short int  U16;
    typedef unsigned short int  *PU16;

    typedef int                 S32;
    typedef int                 *PS32;
    typedef unsigned int        U32;
    typedef unsigned int        *PU32;

    typedef float               float32;

    typedef unsigned __int64    U64;
    typedef __int64             S64;

    typedef unsigned int        UINT;
   
   
    typedef double              DOUBLE;
    typedef float               FLOAT;

1楼 0 0 回复