首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建SCSI 10字节CDB

创建SCSI 10字节CDB
EN

Stack Overflow用户
提问于 2013-08-21 13:40:32
回答 4查看 1.8K关注 0票数 2

我是SCSI CDB编程的新手。我用6字节CDB写了一些写命令的代码

代码语言:javascript
复制
ccb = (Exec_IO_CCB *)(buffer + header_size);   
ccb->ccb_length = sizeof(Exec_IO_CCB);          
ccb->cam_opcode = 0x1;    
ccb->connect_id = 0;    
ccb->data_buf_ptr = (long)(header_size + ccb->ccb_length + MAX_SENSE_LEN);    
ccb->data_xfer_length = (long)(XFER_BUFSIZE - ccb->data_buf_ptr);    
ccb->sense_buf_ptr = (long)(header_size + ccb->ccb_length);    
ccb->sense_buf_length = MAX_SENSE_LEN;    
ccb->time_out = CAM_TIMEOUT;    
ccb->cdb_length = 6;    
ccb->cam_flags = DATA_OUT;    
ccb->cdb[0] = 0xA;   /*  0xA SCSI Opcode for write operation */    
ccb->cdb[1] = 0;    
ccb->cdb[2] = (ccb->data_xfer_length & 0xFF0000) >> 16;    
ccb->cdb[3] = (ccb->data_xfer_length & 0xFF00) >> 8;    
ccb->cdb[4] = (ccb->data_xfer_length & 0xFF);    
ccb->cdb[5] = 0;

从上面的代码中,我不明白cdb2和cdb3是如何派生的?

在类似的线路上,我正在尝试开发用于write命令的10Byte CDB。如何填写占LBA的cdb2-5的数据?

代码语言:javascript
复制
ccb->cam_flags = DATA_OUT;    
ccb->cdb[0] = 0x2A;     /*  0x2A SCSI Opcode for write10  CDB */    
ccb->cdb[1] = 0;    
ccb->cdb[2] =  ??    
ccb->cdb[3] =  ??    
ccb->cdb[4] =  ??    
ccb->cdb[5] =  ??    
ccb->cdb[6] = 0;    
ccb->cdb[7] = (ccb->data_xfer_length & 0xFF);    
ccb->cdb[8] = (ccb->data_xfer_length & 0xFF);    
ccb->cdb[9] = 0;
EN

回答 4

Stack Overflow用户

发布于 2013-08-21 23:18:12

看看SCSI SBC标准。下面是草案形式的SBC-3,但WRITE (6)和(10)在很长一段时间内都没有变化:http://www.t10.org/ftp/t10/document.05/05-344r0.pdf

对于WRITE (6),cdb2和cdb3是逻辑块地址的低16位,而不是传输长度。传输长度是您要写入的块数。地址是设备上您要开始写入它们的位置。如果它位于磁盘的最开始,则为LBA 0。如果设备有512字节块,而您想要开始写入1个MiB,则地址为LBA 2048。

票数 0
EN

Stack Overflow用户

发布于 2013-08-22 16:40:11

来看看http://en.wikipedia.org/wiki/SCSI_Write_Commands吧,这很简单。

票数 0
EN

Stack Overflow用户

发布于 2013-08-26 23:29:48

您不能将2048放入字节5,因为字节5是一个字节,而2048是一个短字节。请改用cdb4=((2048 & 0xFF00) >> 8)和cdb5=(2048 & 0xFF)。另外,对于cdb7,您已经分配了data_xfer_length的低位字节,但它应该是高位字节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18349606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档