你好,我有个问题急需要帮我解答,我用的是TMS320F28335。
实现功能描述:
给一个结构体分配value16大小的内存,然后使用read函数从bin文件中读取相应大小字节的数值,对比read函数返回值(即读到的字节数)与value16的数值进行比较,不相等则报错。程序如下:
结构体声明如下:
程序一直报错,应该是read函数这里,如下:
通过设置断点,可以监控一下几个值,如图所示:
所读到的值ddd为256,而需要读到的值value16为3830,也就是说read函数返回值一直是256,通过单步调试进入到read函数后,变量的截图为如下所示:
可以看到,read函数的参数值都传递过来了,可是当我又运行了两步后,cnt得值突然报错,如下图所示:
也就是说,程序从第343行运行到340行后,cnt的值突然没有了,很奇怪,然后继续单步调试,当运行到第355行时,llv_fd得值也突然变掉,也变得不对了,如下图所示:
继续单步调试,进入trgdrv.c中,到这里时,所有传递进来的参数都已经不对了,而在这个文件中所有count的值不知道在哪里经过了值得改变,都已经变为256,如下图所示,
而且,以下这几个函数根本就不知道是干什么的。如下所示。
LOADSHORT(parmbuf,dev_fd,0);
LOADSHORT(parmbuf,count,2);
__TI_writemsg(_DTREAD,parmbuf,NULL,0);
__TI_readmsg(parmbuf,buf);
result = UNLOADSHORT(parmbuf,0);
__TI_data_synch_WBINV(&parmbuf, sizeof(parmbuf));
__TI_resource_unlock(__TI_LOCK_HOST_CIO);
突然发现BUFSIZ的宏定义在stdio.h中定义为256,如下图所示:
我将其值随便改为65536,后,编译工程后整个过程没有任何改变,突然发现极有可能是你们的库修改后需要重新编译。
请大神帮我,我如何才能正确的读取我想要的数,让ddd的值等于3830,通过我程序里的验证。谢谢,非常感谢!
mangui zhang:没看到图片你看看返回值的数据类型位宽等问题
你好,我有个问题急需要帮我解答,我用的是TMS320F28335。
实现功能描述:
给一个结构体分配value16大小的内存,然后使用read函数从bin文件中读取相应大小字节的数值,对比read函数返回值(即读到的字节数)与value16的数值进行比较,不相等则报错。程序如下:
结构体声明如下:
程序一直报错,应该是read函数这里,如下:
通过设置断点,可以监控一下几个值,如图所示:
所读到的值ddd为256,而需要读到的值value16为3830,也就是说read函数返回值一直是256,通过单步调试进入到read函数后,变量的截图为如下所示:
可以看到,read函数的参数值都传递过来了,可是当我又运行了两步后,cnt得值突然报错,如下图所示:
也就是说,程序从第343行运行到340行后,cnt的值突然没有了,很奇怪,然后继续单步调试,当运行到第355行时,llv_fd得值也突然变掉,也变得不对了,如下图所示:
继续单步调试,进入trgdrv.c中,到这里时,所有传递进来的参数都已经不对了,而在这个文件中所有count的值不知道在哪里经过了值得改变,都已经变为256,如下图所示,
而且,以下这几个函数根本就不知道是干什么的。如下所示。
LOADSHORT(parmbuf,dev_fd,0);
LOADSHORT(parmbuf,count,2);
__TI_writemsg(_DTREAD,parmbuf,NULL,0);
__TI_readmsg(parmbuf,buf);
result = UNLOADSHORT(parmbuf,0);
__TI_data_synch_WBINV(&parmbuf, sizeof(parmbuf));
__TI_resource_unlock(__TI_LOCK_HOST_CIO);
突然发现BUFSIZ的宏定义在stdio.h中定义为256,如下图所示:
我将其值随便改为65536,后,编译工程后整个过程没有任何改变,突然发现极有可能是你们的库修改后需要重新编译。
请大神帮我,我如何才能正确的读取我想要的数,让ddd的值等于3830,通过我程序里的验证。谢谢,非常感谢!
mangui zhang:看一下函数返回值的数据类型位宽等信息
你好,我有个问题急需要帮我解答,我用的是TMS320F28335。
实现功能描述:
给一个结构体分配value16大小的内存,然后使用read函数从bin文件中读取相应大小字节的数值,对比read函数返回值(即读到的字节数)与value16的数值进行比较,不相等则报错。程序如下:
结构体声明如下:
程序一直报错,应该是read函数这里,如下:
通过设置断点,可以监控一下几个值,如图所示:
所读到的值ddd为256,而需要读到的值value16为3830,也就是说read函数返回值一直是256,通过单步调试进入到read函数后,变量的截图为如下所示:
可以看到,read函数的参数值都传递过来了,可是当我又运行了两步后,cnt得值突然报错,如下图所示:
也就是说,程序从第343行运行到340行后,cnt的值突然没有了,很奇怪,然后继续单步调试,当运行到第355行时,llv_fd得值也突然变掉,也变得不对了,如下图所示:
继续单步调试,进入trgdrv.c中,到这里时,所有传递进来的参数都已经不对了,而在这个文件中所有count的值不知道在哪里经过了值得改变,都已经变为256,如下图所示,
而且,以下这几个函数根本就不知道是干什么的。如下所示。
LOADSHORT(parmbuf,dev_fd,0);
LOADSHORT(parmbuf,count,2);
__TI_writemsg(_DTREAD,parmbuf,NULL,0);
__TI_readmsg(parmbuf,buf);
result = UNLOADSHORT(parmbuf,0);
__TI_data_synch_WBINV(&parmbuf, sizeof(parmbuf));
__TI_resource_unlock(__TI_LOCK_HOST_CIO);
突然发现BUFSIZ的宏定义在stdio.h中定义为256,如下图所示:
我将其值随便改为65536,后,编译工程后整个过程没有任何改变,突然发现极有可能是你们的库修改后需要重新编译。
请大神帮我,我如何才能正确的读取我想要的数,让ddd的值等于3830,通过我程序里的验证。谢谢,非常感谢!
Seven Han:请问您用的TI的工程还是自己的代码,如果是TI的,具体是哪个例程?还有您的图片可能没有上传成功。