共1条
1/1 1 跳转至页
串口问题!(老站转)

beginner
工程师
来自:
发表总数:15
查看 短消息 电子邮件 引用 回复
--------------------------------------------------------------------------------
我的程序为:
STATUS comTest(void)
{
int fd;
int nBytes = 0;
char* RecvBuf;
if ((fd = open("/tyCo/1", O_RDWR, 0)) == ERROR)
{
perror("open");
return ERROR;
}
ioctl(fd, FIOSETOPTIONS, OPT_RAW);
ioctl(fd, FIOBAUDRATE, 9600);
FOREVER
{
while (nBytes==0)
{
(void)ioctl(fd,FIONREAD,(int)&nBytes);
}
read(fd,RecvBuf,10);
write(fd, RecvBuf, strlen(RecvBuf));
}
close(fd);
return OK;
}
我在“DEBUG”菜单下RUN “COMTEST”,单步跟踪,到read(fd,RecvBuf,10);时 ,程序进入异常. SHELL 显示下面的信息,这个时间程序已经跑到了“..\target\src\config\usrWdb.c”中.请各位大侠分析原因,急!急!急!急!急!急!急!急!
Break at 0x0004e9b4: ioctl Task: 0x7a0ea0 (tDbgTask)
Break at 0x00114b8c: comTest(void) + 0x6c Task: 0x7a0ea0 (tDbgTask)
Break at 0x0004e9b4: ioctl Task: 0x7a0ea0 (tDbgTask)
Break at 0x00114b9c: comTest(void) + 0x7c Task: 0x7a0ea0 (tDbgTask)
Break at 0x00114bac: comTest(void) + 0x8c Task: 0x7a0ea0 (tDbgTask)
Break at 0x0004e9b4: ioctl Task: 0x7a0ea0 (tDbgTask)
Break at 0x00114bc0: comTest(void) + 0xa0 Task: 0x7a0ea0 (tDbgTask)
Break at 0x00114b9c: comTest(void) + 0x7c Task: 0x7a0ea0 (tDbgTask)
Break at 0x00114bc4: comTest(void) + 0xa4 Task: 0x7a0ea0 (tDbgTask)
Break at 0x0004e974: read Task: 0x7a0ea0 (tDbgTask)
Exception number 512: Task: 0x7a0ea0 (tDbgTask)
machine check
program counter: 0x134a0
machine status: 0x9000
6dcf4 vxTaskEntry +5c : comTest__Fv ([])
114bd4 comTest__Fv +b4 : read ([])
4e984 read +10 : iosRead ([])
4fe10 iosRead +cc : tyRead ([])
5720c tyRead +144: rngBufGet ([])
5d168 rngBufGet +108: bcopy ([])
Exception number 512: Task: 0x7a0ea0 (tDbgTask)
machine check
program counter: 0x134a0
machine status: 0x1400
6dcf4 vxTaskEntry +5c : comTest__Fv ([])
114bd4 comTest__Fv +b4 : read ([])
4e984 read +10 : iosRead ([])
4fe10 iosRead +cc : tyRead ([])
5720c tyRead +144: rngBufGet ([])
7fa610 _dtors +6e59c0: ???? ([])
200 : ???? ([])
218 : 14750 ([])
13b1c excExcHandle +140: 12944 ([])
129d8 wdbSp +488: 62524 ([])
625ec wdbExcLibInit +168: wdbEventPost ([])
5f71c wdbEventPost +98 : wdbNotifyHost ([])
5dba4 wdbNotifyHost +3c : 620a0 ([])
620d0 wdbUdpSockIfInit+348: netJobAdd (&write)
448ac netJobAdd +78 : semGive ([])
67118 semGive +13c: semBGive ([])
Break at 0x00066590: semBGive + 0x138 Task: 0x7a0ea0 (tDbgTask)
Break at 0x00066594: semBGive + 0x13c Task: 0x7a0ea0 (tDbgTask)
Break at 0x00066598: semBGive + 0x140 Task: 0x7a0ea0 (tDbgTask)
Break at 0x0006659c: semBGive + 0x144 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000665a0: semBGive + 0x148 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000665a4: semBGive + 0x14c Task: 0x7a0ea0 (tDbgTask)
Break at 0x00067118: semGive + 0x13c Task: 0x7a0ea0 (tDbgTask)
Break at 0x00067124: semGive + 0x148 Task: 0x7a0ea0 (tDbgTask)
Break at 0x00067128: semGive + 0x14c Task: 0x7a0ea0 (tDbgTask)
Break at 0x0006712c: semGive + 0x150 Task: 0x7a0ea0 (tDbgTask)
Break at 0x00067130: semGive + 0x154 Task: 0x7a0ea0 (tDbgTask)
Break at 0x00067134: semGive + 0x158 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000448ac: netJobAdd + 0x78 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000448b0: netJobAdd + 0x7c Task: 0x7a0ea0 (tDbgTask)
Break at 0x000448c4: netJobAdd + 0x90 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000448c8: netJobAdd + 0x94 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000448cc: netJobAdd + 0x98 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000448d0: netJobAdd + 0x9c Task: 0x7a0ea0 (tDbgTask)
Break at 0x000620d0: wdbUdpSockIfInit + 0x348 Task: 0x7a0ea0 (tDbgTask)
Break at 0x0005dba4: wdbNotifyHost + 0x3c Task: 0x7a0ea0 (tDbgTask)
Break at 0x0005f71c: wdbEventPost + 0x98 Task: 0x7a0ea0 (tDbgTask)
Break at 0x0005f720: wdbEventPost + 0x9c Task: 0x7a0ea0 (tDbgTask)
Break at 0x000625ec: wdbExcLibInit + 0x168 Task: 0x7a0ea0 (tDbgTask)
Break at 0x000129d8: wdbSp + 0x488 Task: 0x7a0ea0 (tDbgTask)
Break at 0x00012a50: wdbSp + 0x500 Task: 0x7a0ea0 (tDbgTask)
seasoblue
工程师
来自:
发表总数:30
查看 短消息 电子邮件 引用 回复
--------------------------------------------------------------------------------
对你的遭遇我深表同情(就象对着一个空谷大喊救命),我也刚开始学VXWORKS,看能不能帮上忙。
既然你的程序是在read时出错,我想你应该多检查一下它。另外我发现你的RecvBuf是一个空指针(没有赋值),是不是这儿出错啦?仅供参考!
--------------------------------
263收费了,
我的邮箱又搬家了。。。
zhangsifu
工程师
来自:
发表总数:39
查看 短消息 电子邮件 引用 回复
--------------------------------------------------------------------------------
你没有为RecvBuf分配空间,我对vxworks不熟悉,但是应该有malloc语句。
你在使用之前用malloc为他分配空间试试。
--------------------------------
EMBEDDED
gyz
工程师
来自:
发表总数:60
查看 短消息 电子邮件 个人主页 OICQ 引用 回复
--------------------------------------------------------------------------------
在应用RecvBuf之前,现对其赋初值,RecvBuf=NULL就可以了。因为指针在用之前必须赋初值,否则它会指向一个不定的地方。
--------------------------------
一起聊聊,携手共进
hongwind
高级工程师
来自:
发表总数:101
查看 短消息 电子邮件 引用 回复
--------------------------------------------------------------------------------
recbuf = (char*)calloc(number,sizeof(char))
关键词: 串口 问题 老站转 comTest Break 0
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 |