硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1986|回复: 5
收起左侧

[ThreadX全家桶] L4生成的U盘工程不读扇区

[复制链接]

26

主题

181

回帖

259

积分

高级会员

积分
259
发表于 2022-4-15 22:09:23 | 显示全部楼层 |阅读模式
如题,ThreadX的MSC工程不读扇区。读写扇区的函数已经引用了的。

设备管理器中有大容量存储器,但磁盘驱动器中无磁盘。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115863
QQ
发表于 2022-4-16 01:57:28 | 显示全部楼层
官方的例子是否测试过:https://github.com/STMicroelectr ... y/Applications/USBX

正常不。
回复

使用道具 举报

26

主题

181

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-4-16 14:47:07 | 显示全部楼层
没有呢,没官方的开发板。。。
回复

使用道具 举报

26

主题

181

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-4-17 00:23:59 | 显示全部楼层
抓包发现,上位机发了GET MAX LUN命令后,设备没返回。
跟踪了下,执行到
UINT  _ux_device_class_storage_control_request(UX_SLAVE_CLASS_COMMAND *command)
.....
switch (request)
{
case UX_SLAVE_CLASS_STORAGE_RESET:
...
case UX_SLAVE_CLASS_STORAGE_GET_MAX_LUN:
....
}
然而条件不满足,switch分支没执行进去。
回复

使用道具 举报

26

主题

181

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-4-17 10:48:44 | 显示全部楼层
抓了下包,发现上位机GET MAX LUN,设备没回复。
跟踪了下代码,发现这条件不成立,没执行进去。

UINT  _ux_device_class_storage_control_request(UX_SLAVE_CLASS_COMMAND *command)
{
        ...

    /* Get the pointer to the device.  */
    device =  &_ux_system_slave -> ux_system_slave_device;

    /* Get the pointer to the transfer request associated with the control endpoint.  */
    transfer_request =  &device -> ux_slave_device_control_endpoint.ux_slave_endpoint_transfer_request;
   
    /* Extract the request type from the SETUP packet..   */
    request =  *(transfer_request -> ux_slave_transfer_request_setup + UX_SETUP_REQUEST);
        ...
    switch (request)
    {

    case UX_SLAVE_CLASS_STORAGE_RESET:
                ...
        break;

    case UX_SLAVE_CLASS_STORAGE_GET_MAX_LUN:
                ...
        break;

    default:

        /* Unknown function. It's not handled.  */
        return(UX_ERROR);
    }

    /* It's handled.  */
    return(UX_SUCCESS);
}
回复

使用道具 举报

26

主题

181

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-4-17 10:49:44 | 显示全部楼层
eric2013 发表于 2022-4-16 01:57
官方的例子是否测试过:https://github.com/STMicroelectronics/x-cube-azrtos-l4/tree/main/Projects/STM3 ...

抓了下包,发现上位机GET MAX LUN,设备没回复。
跟踪了下代码,发现这条件不成立,没执行进去。

UINT  _ux_device_class_storage_control_request(UX_SLAVE_CLASS_COMMAND *command)
{
        ...

    /* Get the pointer to the device.  */
    device =  &_ux_system_slave -> ux_system_slave_device;

    /* Get the pointer to the transfer request associated with the control endpoint.  */
    transfer_request =  &device -> ux_slave_device_control_endpoint.ux_slave_endpoint_transfer_request;
   
    /* Extract the request type from the SETUP packet..   */
    request =  *(transfer_request -> ux_slave_transfer_request_setup + UX_SETUP_REQUEST);
        ...
    switch (request)
    {

    case UX_SLAVE_CLASS_STORAGE_RESET:
                ...
        break;

    case UX_SLAVE_CLASS_STORAGE_GET_MAX_LUN:
                ...
        break;

    default:

        /* Unknown function. It's not handled.  */
        return(UX_ERROR);
    }

    /* It's handled.  */
    return(UX_SUCCESS);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-23 12:48 , Processed in 0.277207 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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