MTK开发中一些经验总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MTK开发中一些经验总结
1. 在确定你的MTK工程完整而且在模拟器和真机上能正常运行之前,不要开始工作。
2. MTK开发 C是唯一选择,不要试图用把C++工程移植到MTK平台 (c++是没
有问题的,venus ui就是用c++写的,基于venus ui的wedgit也用c++)。
3. ADS C/C++ COMPILER不同的编译选项可能导致代码的性能差异很大。
ADS
使用ARMV4指令集,而真机是Thumb指令集。
4. MMI/GUI的工作尽量用MODIS模拟器。
真机编译很慢,可用分布式编译加速。
5. Image$$ZI$$Limit 错误原因有2种:使用了malloc,free, printf, assert,fopen之类的函数; 定义了过大的静态数组。
6. 适配WIN32和ARMC平台。
文件读写和内存操作函数需要替换成MTK支持
的函数。
7. MTK真机内存有限(MED堆内存<800k),ROM SIZE极其宝贵,尽量优化代码结构,减少内存占用。
8. MTK支持多线程,不过是用TASK替换Thread.
9. 真机有watchdog, 函数内LOOP太久会导致阻塞并重启,可以加kal_sleep_task, 给系统一点空闲。
10. 真机重启常见的错误LOG有2种: assert failed: 会显示出错的文件及代码行。
data abort: 一般是数组越界。
11. 重启错误可通过恢复函数栈来大致定位出错函数段。
可在Cacher.exe里Advance>Exception handling查看stack dump ,对应查找\build目录下的.sym文件。
12. 做好代码的内存泄漏检测。
13. 不要频繁的分配小块内存,这样会导致内存碎片。
kal_sleep()为MTK睡眠函数,使用请注意以下问题:
在MMI_TASK中请不要随便使用这个函数,在MMI_TASK中用这个函数会导致MMI_TASK睡眠,会影响其他消息的处理
如果非必要请尽量不要使用,寻找其他解决方案。