找回密码
 注册
搜索
查看: 1909|回复: 20

[讨论] MTK在模拟器上运行良好的MMI应用,真机上确老是导致手机重启

[复制链接]
发表于 2007-11-26 19:01:21 | 显示全部楼层 |阅读模式
MTK在模拟器上运行良好的MMI应用,真机上却老是导致手机重启,是内存处理的问题吗?
我用了OslMalloc等内存分配的函数和strlen,strcpy,memset,memcpy等函数。
发表于 2007-11-26 20:55:41 | 显示全部楼层
建议你用catcher连接到手机上看看。
PC模拟器上和手机上的差别很大,不能这样等同。[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2007-11-28 15:11:20 | 显示全部楼层
连上catcher,看看死在哪里。
点评回复

使用道具 举报

 楼主| 发表于 2007-11-29 16:42:32 | 显示全部楼层
由于Catcher不是实时输出的,所以问题都较难定位,我选择了将输出信息flush打入文件的方法,但是重启的地方不确定。
点评回复

使用道具 举报

发表于 2007-11-29 16:43:09 | 显示全部楼层
抓一下catcher啊,能看到哪里assert了。不过即便是看到哪里assert,也不是问题的源头,好好查查你写的代码。
点评回复

使用道具 举报

发表于 2007-12-4 22:36:51 | 显示全部楼层

不理解!!

<DIV class=quote><B>以下是引用<I>hepeixin</I>在2007-11-29 16:42:32的发言:</B>
由于Catcher不是实时输出的,所以问题都较难定位,我选择了将输出信息flush打入文件的方法,但是重启的地方不确定。</DIV>

[em13]
点评回复

使用道具 举报

 楼主| 发表于 2007-12-5 09:55:52 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>perennial</I>在2007-12-4 22:36:51的发言:</B>


[em13]</DIV>


trace输出如果在机器assert重启的时候,由于不是实时输出,所以有些trace会丢失。讲trace的信息flush即时写入文件,可在一定程度保证信息的完整性。
点评回复

使用道具 举报

发表于 2007-12-7 10:45:26 | 显示全部楼层
不明白怎么做.望详解.
点评回复

使用道具 举报

发表于 2007-12-10 19:27:04 | 显示全部楼层
把信息写入文件中也不一定能成功,手机死机时,一旦发现当前是MMI task在运行,那么mmi task将会被切换到tst task(操作系统调度),这时就会将trace信息显示在catcher中。此时,由于mmi task没有运行了,因此写文件也就不会执行了。正确的做法是调高catcher与手机的通讯速率(baud rate)。
点评回复

使用道具 举报

 楼主| 发表于 2007-12-11 16:01:37 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>singlespark</I>在2007-12-10 19:27:04的发言:</B>
把信息写入文件中也不一定能成功,手机死机时,一旦发现当前是MMI task在运行,那么mmi task将会被切换到tst task(操作系统调度),这时就会将trace信息显示在catcher中。此时,由于mmi task没有运行了,因此写文件也就不会执行了。正确的做法是调高catcher与手机的通讯速率(baud rate)。</DIV>


多谢指教。
但是我这里最高的速率也只是460800bps,死机的时候也会造成trace的丢失。相对来说,用Commit写文件的方法能一定程度上记录更多当时的信息。
另外,请问这里的tst英文全称是什么呢?谢谢!
点评回复

使用道具 举报

发表于 2007-12-11 18:16:36 | 显示全部楼层
tst -> test
点评回复

使用道具 举报

发表于 2009-6-11 14:36:13 | 显示全部楼层
有兼职提供

有在mtk方案公司做mmi 的朋友  可加我 QQ:232284406   我可以介绍外块给大家,有兴趣的来了解下
点评回复

使用道具 举报

发表于 2009-6-21 01:04:14 | 显示全部楼层
tst -> test
本文来自:我爱研发网(52RD.com) 详细出处:http://www.52rd.com/bbs/Detail_RD.BBS_105131_5_1_1.html
点评回复

使用道具 举报

发表于 2009-6-21 10:38:02 | 显示全部楼层
90%是你内存访问越界
点评回复

使用道具 举报

发表于 2009-6-21 10:48:10 | 显示全部楼层
OslMalloc申请的内存好像是不能超过2K,还有可能是你的栈溢出了
点评回复

使用道具 举报

发表于 2009-6-22 16:34:10 | 显示全部楼层
应该是内存访问越界
以前遇到过这样的问题,加了新的功能。模拟器可以跑,真机都开不了机。
LZ的reset是什么操作引起的,抓个catch看看。
点评回复

使用道具 举报

发表于 2009-6-24 14:08:53 | 显示全部楼层
多半是堆栈溢出了,还有就是mtk的内存管理机制并不完善,频繁的使用OslMalloc也会出现黑屏重启现象,建议都是用数组来代替
点评回复

使用道具 举报

发表于 2009-6-25 10:20:56 | 显示全部楼层
以下是引用badboy2007在2009-6-21 10:48:10的发言:
OslMalloc申请的内存好像是不能超过2K,还有可能是你的栈溢出了


这位是正解
点评回复

使用道具 举报

发表于 2009-6-26 08:34:47 | 显示全部楼层
申请后有没有判断是否为NULL
点评回复

使用道具 举报

发表于 2009-6-26 10:17:35 | 显示全部楼层
一般有以下几种情况, 栈爆了, 内存越界或泄漏, 变量没有初始化.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-2-25 09:38 , Processed in 0.061586 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表