TI中文支持网
TI专业的中文技术问题搜集分享网站

关于read函数的使用,以及ti库函数的使用问题,如何重新编译库函数?

你好,我有个问题急需要帮我解答,我用的是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的,具体是哪个例程?还有您的图片可能没有上传成功。

赞(0)
未经允许不得转载:TI中文支持网 » 关于read函数的使用,以及ti库函数的使用问题,如何重新编译库函数?
分享到: 更多 (0)