共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 跳转至页