Vela-OS: 记录一个class层,处理MSC协议的bug

这篇具有很好参考价值的文章主要介绍了Vela-OS: 记录一个class层,处理MSC协议的bug。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、关于USC-MSC类设备驱动层,处理SCSI指令的代码逻辑问题

1. 源文件
\nuttx\drivers\usbdev\usbmsc_scsi.c

2. 问题描述
对于INQUIRY指令,长度一般是6个字节,cdblen字段嵌入在CBW数据包中,如下:
命令阶段的CBW数据包:
55 53 42 43  60 2a c0 8b  24 00 00 00  0x80 0x0 [06] 12 ...


但是HOST也有可能下发12字节,比如在格式化盘符的时候:
命令阶段的CBW数据包:
55 53 42 43  60 2a c0 8b  24 00 00 00  0x80 0x0 [0C] 12 ...

3. 一般性处理方法
对比一般的U盘,设备端在数据阶段,直接返回数据。
-------------------------------------------------------------------------
30.2 31  OUT    55 53 42 43  20 5a 81 83  38 00 00 00  80 00 [0c] 12
                00 00 00 38  00 00 00 00  00 00 00 00  00 00 00
30.1 56  IN     00 80 06 02  1f 00 00 00  47 65 6e 65  72 69 63 20
                53 54 4f 52  41 47 45 20  44 45 56 49  43 45 20 20
                31 34 30 34  05 e3 07 51  47 45 4e 45  00 25 00 00
30.1 13  IN     55 53 42 53  20 5a 81 83  00 文章来源地址https://www.toymoban.com/news/detail-853214.html

到了这里,关于Vela-OS: 记录一个class层,处理MSC协议的bug的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python元类模型和class语句协议

    学习python的类型模型和class语句协议。class语句末尾自动调用type()创建类对象并且赋值给类名称。 python3.x中,用户定义的类对象是名为type的对象的实例,type本身是一个类; python2.x中,新式类继承object,它是type的一个子类;传统类是type的一个实例; type()内置函数返回任何对

    2024年01月21日
    浏览(27)
  • rust版本更新错误记录:Os { code: 5, kind: PermissionDenied }

    使用 rustup update 更新 rust 版本时遇到错误: info: cleaning up downloads tmp directories thread ‘main’ panicked at ‘Unable to clean up C:UsersGrapeX.rustuptmp: Os { code: 5, kind: PermissionDenied, message: “拒绝访问。” }’, srcutilsutils.rs:650:13 stack backtrace: note: Some details are omitted, run with RUST_BACKTRACE=full

    2024年02月16日
    浏览(39)
  • 记录在苹果mac os系统上使用51单片机仿真软件Proteus

    1.安装Wineskin shell 指令 2.安装Wrapper 点击update ​​​​​​​ 首先我们需要安装一个程序: 可以将在Windows系统上才能运行exe文件打包为mac系统可执行的文件。 下载后,可以在启动台或者下载目录看到 Wineskin Winery 的图标,点击启动该软件。  No Wrapper Installed   暂时无法解决

    2024年02月06日
    浏览(48)
  • os.signal golang中的信号处理

    在程序进行重启等操作时,我们需要让程序完成一些重要的任务之后,优雅地退出,Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。 Go语言标准库中signal包的核心功能主要包含以下几个方面: 1. signal处理的全局状态管理 通过handlers结构体跟

    2024年02月15日
    浏览(39)
  • 记录下:OS X上修改网卡IP、MASK、网关服务器IP

    方法一:(未必可用,某些系统上无法执行成功) sudo networksetup -setmanual en0 192.168.0.22 255.255.255.0 192.168.0.23 常见错误:(某些系统执行失败时) en0 is not a recognized network service. ** Error: The parameters were not valid. 方法二:(可靠方法)  sudo ifconfig en0 inet 192.168.0.22 192.168.0.23 netmask

    2024年02月21日
    浏览(30)
  • OS-AIGC通用生成式人工智能模型加密接入标准API协议-2023 Beta版

    OS-AIGC通用生成式人工智能模型加密接入标准API协议(Universal Language Model Encryption Access Standard API Protocol)国内的通用语言大模型的加密接入标准API协议。能够适配各种语言模型,主要为了解决API传输过程中的明文输入可能会造成的隐私信息泄露问题,同时也为了方便各种服务

    2024年02月13日
    浏览(30)
  • Mac OS安装Vue CLI脚手架并创建一个基础项目教程

    前后端分离 可以大大地提高开发效率,主流的解决方案为 Vue.js+SpringBoot ,这里主要介绍 Vue在Mac端的入门教程 。软硬件环境为Macbook Air M2+macOS Vantura 13.4.1。 Vue (发音为 /vjuː/,类似 view) 是一款用于 构建用户界面 的 JavaScript 框架,是官方提供的 基于 Webpack 的 Vue 工具链 。它基

    2024年02月04日
    浏览(54)
  • 用rust 写一个jar包 class冲突检测工具

    Rust很适合写命令行工具,特别是使用 clap crate 更加方便,这篇文章介绍使用rust写一个jar包class冲突检测的工具。项目地址: https://github.com/Aitozi/jar_conflict_detector 首先jar包class冲突的现象是多个jar包中有同名的class,并且class的md5还不一样,那么就意味着该class存在多个版本,那

    2024年02月06日
    浏览(25)
  • VUE 字段为空时,一个class搞定,适用多种情形

    我抄的,我抄的,我抄的,我抄的,我抄的 但真香 在写表格时,当某字段为空,你是否是这样写的: 如果有多个字段需要判断,你是否要写多个空字段的判断??? 回答我,是或者不是!!! 在下不才,写了个适用于大多数el-table、el-description、el-collapse等、但不限于这些内容的

    2024年02月21日
    浏览(43)
  • Android Studio Error “Unsupported class file major version 61“---异常信息记录

    问题出在JAVA 17上,并且使用的Gradle JDK是:Android Studio java home版本17.0.1将其更改为:Android Studio默认JDK版本11.0.10 即可解决 操作步骤 1 2 3

    2024年01月23日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包