10075|22

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

为什么程序在开发板上运行就自动死机了啊 [复制链接]

如题,我把程序下载到开发板上,然后运行,点几下就死机了,这是什么问题啊?还有就是用于和电脑连接activeSync,本来连接上是绿的,但是我没断开他就自动断开,变灰了,这是什么原因啊。。。大侠们帮帮忙!非常感谢

最新回复

学习中!  详情 回复 发表于 2009-7-10 10:49
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
两种问题其实是一个问题,就是系统崩溃了. 问题描述太概括,死机的原因很多,主频不稳,DDR参数不对,driver的问题等等,要追踪下问题出在哪里.
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
程序,LZ说的是应用不?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
1、WinCE 中自带了很多程序,你可以试试其它程序,也许是你自己的程序有问题;


2、有时候,USB 接触不好也会引起。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
用于和电脑连接activeSyncde的问题,我以前也遇到过。
多插拔几次就行了。第一个问题太泛,可以将代码贴出来,大家帮你看看
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 rushonin 的回复:
两种问题其实是一个问题,就是系统崩溃了. 问题描述太概括,死机的原因很多,主频不稳,DDR参数不对,driver的问题等等,要追踪下问题出在哪里.

请问下要怎么追踪呢?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 2 楼 91program 的回复:
程序,LZ说的是应用不?

对的,是应用程序啊,应用程序编译连接都通过了啊,但是就是出现正在运行着就死机了。。。也不知道什么原因
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 4 楼 jgj58 的回复:
用于和电脑连接activeSyncde的问题,我以前也遇到过。
多插拔几次就行了。第一个问题太泛,可以将代码贴出来,大家帮你看看

            cnt_pump_1++;
            UpdateData(TRUE);
            BYTE *buf1,*buf2;
            buf1=new BYTE(100);
            buf2=new BYTE(100);
            char *buff1="TST#01";
            char *buff2="TST#00";
            buf1=(BYTE*)buff1;
            buf2=(BYTE*)buff2;
            CString str1,str2;
            str1="OFF";
            str2="ON";
            CButton *pBtnPump1=(CButton*)GetDlgItem(IDC_BTN_PUMP1);
            ASSERT(pBtnPump1!=NULL);
            if((cnt_pump_1%2)==1)
           {
             pBtnPump1->SetWindowText (str2);
                if (!m_ceSeries.WritePort(buf1,7))
                        {
                                AfxMessageBox(L"写入失败");
               
                        }
               
                          delete buf1;
           }
           if((cnt_pump_1%2)==0)
           {
            pBtnPump1->SetWindowText (str1);
                       
                        if (!m_ceSeries.WritePort(buf2,7))
                        {
                                AfxMessageBox(L"写入失败");
               
                        }
                       
                         delete buf2;                  
           }
         
            上面是我的代码,我是实现点击一个按钮使得按钮上的文本在ON和OFF之间切换,并且通过串口发送特定的字符出去,前提串口已打开,程序编译没错误,但是运行一段时间出现死机,而且上面的代码运行时出现当我点击一下后再点击一下时整个程序就退出了。。。很奇怪
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
new  delete  建议最好别在这做,这样多次new  delete  ,容易产生内存碎片,或者有时用的内存已经被delete了,你还不知道,就会出现异常。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 CBEMA 的回复:
new  delete  建议最好别在这做,这样多次new  delete  ,容易产生内存碎片,或者有时用的内存已经被delete了,你还不知道,就会出现异常。

我把那new和delete去掉也还是出现同样的问题
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
if (!m_ceSeries.WritePort(buf1,7))
{
AfxMessageBox(L"写入失败");

}

if (!m_ceSeries.WritePort(buf2,7))
{
AfxMessageBox(L"写入失败");

}

这两个先去掉,看看还死不死,有可能死的原因是m_ceSeries.WritePort

 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
用Debug模式跟踪一下,多试几次看看哪里会导致崩溃。可能存在问题的地方:
new buf1; new buf2;
而在下面的if里面只有单独的delete buf1;或者单独的delete buf2;不完全删除造成内存泄露。

if (!m_ceSeries.WritePort(buf1,7)) 中没有检查m_ceSeries的有效性,直接写可能导致崩溃。
m_ceSeries有效了,WritePort函数调用有误,可能导致崩溃。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 10 楼 CBEMA 的回复:
if (!m_ceSeries.WritePort(buf1,7))
{
AfxMessageBox(L"写入失败");

}

if (!m_ceSeries.WritePort(buf2,7))
{
AfxMessageBox(L"写入失败");

}

这两个先去掉,看看还死不死,有可能死的原因是m_ceSeries.WritePort

去掉后,就不死了,但是要怎么修改呢。。。。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 
buf1=new BYTE(100);

char *buff1="TST#01";

你C功底需要加强了
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 11 楼 shuiyan 的回复:
用Debug模式跟踪一下,多试几次看看哪里会导致崩溃。可能存在问题的地方:
new buf1; new buf2;
而在下面的if里面只有单独的delete buf1;或者单独的delete buf2;不完全删除造成内存泄露。

if (!m_ceSeries.WritePort(buf1,7)) 中没有检查m_ceSeries的有效性,直接写可能导致崩溃。
m_ceSeries有效了,WritePort函数调用有误,可能导致崩溃。

那个new和delete已经删掉了,试了一下,导致死机本分就是串口输出那部分。。。但是对于串口输出,我是要输出特定的字符串,要是不能直接写,要怎么输出啊?
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

16
 
buf1=(BYTE*)buff1;

用memcpy
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

17
 
大多数是内存泄露
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

18
 
WritePort函数是你自己写的吗?

代码贴出来看看
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

19
 
估计是访问了不能访问的地址空间导致系统崩溃了。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

20
 
引用 17 楼 CBEMA 的回复:
WritePort函数是你自己写的吗?

代码贴出来看看

BOOL CCESeries::WritePort(const BYTE *buf,DWORD bufLen)
{
        //将要发送的数据传递到写线程消息队列
        if (PostThreadMessage(m_dwWriteThreadID,CM_THREADCOMMWRITE,
                WPARAM(bufLen), LPARAM(buf)))
        {
                return TRUE;
        }
       
        return FALSE;
}
书上给的例子,不是我写的。。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表