查看: 3395|回复: 6

[MQX] MQX USB CDC 求助:(已解决)

[复制链接]

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2014-12-29
发表于 2014-9-5 09:35:06 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-10-11 09:13 编辑

环境:IAR, MQX4.1, USB host CDC,CPU K60

CDC串口安装后,用write和fread分别调用的是_io_cdc_serial_read和_io_cdc_serial_write,

以_io_cdc_serial_read为例,有一下语句:
MQX_FILE_PTR fd_ptr,
CLASS_CALL_STRUCT_PTR          data_instance;
USB_DATA_CLASS_INTF_STRUCT_PTR if_ptr;

usb_hostdev_tr_init(&tr, (tr_callback) usb_class_cdc_in_data_callback, (void *) data_instance);
上句实际上是将CLASS_CALL_STRUCT_PTR data_instance作为para传递给usb_class_cdc_in_data_callback,



而实际上,在usb_class_cdc_in_data_callback函数中,实际上void *para是作为MQX_FILE_PTR使用的,部分语句如下:
MQX_FILE_PTR                   fd_ptr = (MQX_FILE_PTR) param;
CLASS_CALL_STRUCT_PTR          data_instance = (CLASS_CALL_STRUCT_PTR) fd_ptr->DEV_PTR->DRIVER_INIT_PTR;


if_ptr = (USB_DATA_CLASS_INTF_STRUCT_PTR) data_instance->class_intf_handle;
acm_instance = if_ptr->BOUND_CONTROL_INTERFACE;

运行到上面这句明显就出错了,然后我将_io_cdc_serial_read中的usb_hostdev_tr_init初始化改为:
usb_hostdev_tr_init(&tr, (tr_callback) usb_class_cdc_in_data_callback, (void *) fd_ptr);
将MQX_FILE_PTR fd_ptr作为para传递给usb_class_cdc_in_data_callback,运行正常。



同样的,_io_cdc_serial_write里也有这个现象。


接触K60和MQX没几天,新手,请问:是不是使用函数的时候有什么没注意到或者错误的?
调用语句如下:
num_written = fwrite(send_buf0, 1, 3, s_f_usb_info[G3_MODULE_CDC_USB2_AT_DATA_UART_NUM].f_usb);
num_read = fread(g_usb_cdc_read_buffer, 1, 64, s_f_usb_info[G3_MODULE_CDC_USB2_AT_DATA_UART_NUM].f_usb);


我知道答案 目前已有6人回答
回复

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2014-12-29
 楼主| 发表于 2014-9-5 10:19:05 | 显示全部楼层
另外,怎么用中断方式呢? USB CDC收到数据后在什么地方唤醒task?
各位大神,求
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-5 10:49:09 | 显示全部楼层
楼主你好。
如果对于kinetis和MQX都是新手的话,建议你先使用裸板的USB stack学习。
可以到我们的官网下载Freescale USB Stack v4.1.1, 然后跑试试,如果遇到问题可以一起交流。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2014-12-29
 楼主| 发表于 2014-9-5 11:32:23 | 显示全部楼层
刚装了V4.1.1,的确错误已经更正了。release里面没讲到吗
函里都改成        
usb_hostdev_tr_init(&tr, (tr_callback) usb_class_cdc_out_data_callback, (void *) fd_ptr);
传递      MQX_FILE_PTR fd_ptr给usb_class_cdc_out_data_callback的para参数

V4.1.0怎么有这个这个bug,昨天才发现,tower的USB host CDC example还给出来了,也不知道官方有没有验证,
谢谢FSL_TICS_ZJJ

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2014-12-29
 楼主| 发表于 2014-9-5 11:40:30 | 显示全部楼层
还有CDC interface的register和bind的先后顺序也可能有问题,上个星期有改过,这个不是很肯定
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-5 13:39:06 | 显示全部楼层
alex 发表于 2014-9-5 11:32
刚装了V4.1.1,的确错误已经更正了。release里面没讲到吗
函里都改成        
usb_hostdev_tr_init(&tr, (t ...

可能release note里面没有详细描述这个bug问题。
4.1.1很久之前就已经推出来了。
所以如果有新版本的,建议楼主还是用最新版本的,老版本不可避免的会有一些小bug。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-5 13:41:18 | 显示全部楼层
alex 发表于 2014-9-5 11:40
还有CDC interface的register和bind的先后顺序也可能有问题,上个星期有改过,这个不是很肯定 ...

好的,后续如果遇到问题,欢迎继续发帖告诉我们,如果确认确实是bug,我们会告诉相关部门。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 06:34 , Processed in 0.100595 second(s), 27 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表