www.pudn.com > usbcode.rar > Scsi.lis
.module Scsi.c
.area lit(rom, con, rel)
0000 _SCSI_INQUIRY::
0000 0080 .byte 0,128
0002 0001 .byte 0,1
0004 1F00 .byte 31,0
0006 0000 .byte 0,0
0008 2020 .byte 32,32
000A 2020 .byte 32,32
000C 2020 .byte 32,32
000E 2020 .byte 32,32
0010 4348 .byte 'C,'H
0012 454E .byte 'E,'N
0014 4348 .byte 'C,'H
0016 4920 .byte 'I,32
0018 4156 .byte 'A,'V
001A 5220 .byte 'R,32
001C 4449 .byte 'D,'I
001E 534B .byte 'S,'K
0020 312E .byte 49,46
0022 3030 .byte 48,48
0024 .dbfile G:\source/scsi_data.h
0024 .dbsym s SCSI_INQUIRY _SCSI_INQUIRY A[36:36]c
0024 _SCSIDATA_ReadFormatCapacities::
0024 0000 .byte 0,0
0026 0008 .byte 0,8
0028 0000 .byte 0,0
002A FFFF .byte 255,255
002C 0300 .byte 3,0
002E 0200 .byte 2,0
0030 .dbsym s SCSIDATA_ReadFormatCapacities _SCSIDATA_ReadFormatCapacities A[12:12]c
0030 _SCSIDATA_ReadCapacity::
0030 0000 .byte 0,0
0032 F9FF .byte 249,255
0034 0000 .byte 0,0
0036 0200 .byte 2,0
0038 .dbsym s SCSIDATA_ReadCapacity _SCSIDATA_ReadCapacity A[8:8]c
0038 _SCSIDATA_RequestSense::
0038 7000 .byte 'p,0
003A 0500 .byte 5,0
003C 0000 .byte 0,0
003E 000A .byte 0,10
0040 0000 .byte 0,0
0042 0000 .byte 0,0
0044 2000 .byte 32,0
0046 0000 .byte 0,0
0048 0000 .byte 0,0
004A .dbsym s SCSIDATA_RequestSense _SCSIDATA_RequestSense A[18:18]c
004A _SCSIDATA_Sense::
004A 0300 .byte 3,0
004C 0000 .byte 0,0
004E 010A .byte 1,10
0050 0010 .byte 0,16
0052 0000 .byte 0,0
0054 0000 .byte 0,0
0056 0200 .byte 2,0
0058 0000 .byte 0,0
005A 051E .byte 5,30
005C 0FA0 .byte 15,160
005E 0410 .byte 4,16
0060 0200 .byte 2,0
0062 00FA .byte 0,250
0064 0000 .byte 0,0
0066 0000 .byte 0,0
0068 0000 .byte 0,0
006A 0000 .byte 0,0
006C 0000 .byte 0,0
006E 0000 .byte 0,0
0070 0000 .byte 0,0
0072 0000 .byte 0,0
0074 0000 .byte 0,0
0076 0000 .byte 0,0
0078 0000 .byte 0,0
007A .dbsym s SCSIDATA_Sense _SCSIDATA_Sense A[48:48]c
.area data(ram, con, rel)
0000 .dbfile G:\source/scsi_data.h
0000 _BulkPhase::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile G:\source/scsi_data.h
0001 .dbfile G:\source\Scsi.c
0001 .dbsym s BulkPhase _BulkPhase c
0001 _WritePageBuff::
0001 .blkw 1
.area idata
0001 0500 .word L4
.area data(ram, con, rel)
0003 .dbfile G:\source\Scsi.c
0003 .dbsym s WritePageBuff _WritePageBuff pc
0003 _WritePageBuffLen::
0003 .blkb 2
.area idata
0003 0000 .word 0
.area data(ram, con, rel)
0005 .dbfile G:\source\Scsi.c
0005 .dbsym s WritePageBuffLen _WritePageBuffLen i
.area text(rom, con, rel)
0000 .dbfile G:\source\Scsi.c
0000 .dbfunc s Bulk_Out_Packet _Bulk_Out_Packet fI
; p -> R12,R13
; Buff -> y+0
; j -> R10
; i -> R22
; len -> R20
.even
0000 _Bulk_Out_Packet::
0000 00D0 rcall push_gset4
0002 402F mov R20,R16
0004 EF97 sbiw R28,63
0006 2197 sbiw R28,1 ; offset = 64
0008 .dbline -1
0008 .dbline 58
; /*++
;
; Module Name:
;
; Scsi.c
;
; Abstract:
;
; Header file related to D12 module
;
; Environment:
;
; ICCAVR 6.29
;
; Revision History:
;
; 04/23/2004 chenchi created
;
; --*/
; /******************************************************************/
;
; #include
; #include "d12.h"
; #include "scsi.h"
; #include "scsi_data.h"
; #include "nflash32.h"
;
; unsigned char BulkPhase = 0;
; unsigned char BulkStausPhase;
; unsigned int dCBWDaTrLen;
; unsigned char * WritePageBuff = "";
; unsigned int WritePageBuffLen = 0;
;
; CSW_STRUCT Usb_Csw;
; CBW_STRUCT Usb_Cbw;
;
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:处理PC发送的批量传输包
; **函数输入参数及说明:接收数据长度
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Bulk_Out_Packet(unsigned char len){
0008 .dbline 61
; unsigned char i,j,*p;
; unsigned char Buff[64];
; if(BulkPhase == CommandPhase){
0008 20900000 lds R2,_BulkPhase
000C 2220 tst R2
000E F1F4 brne L6
0010 .dbline 61
0010 .dbline 62
; j = D12_DATA;
0010 A090007C lds R10,31744
0014 .dbline 63
; csram;
0014 609301FC sts 0xfc01,R22
0018 .dbline 63
0018 .dbline 64
; p = XmtBuff.b;
0018 80E0 ldi R24,<_XmtBuff
001A 90E0 ldi R25,>_XmtBuff
001C C82E mov R12,R24
001E D92E mov R13,R25
0020 .dbline 65
; *(p++) = j;
0020 2C2C mov R2,R12
0022 3D2C mov R3,R13
0024 822D mov R24,R2
0026 932D mov R25,R3
0028 0196 adiw R24,1
002A C82E mov R12,R24
002C D92E mov R13,R25
002E E22D mov R30,R2
0030 F32D mov R31,R3
0032 A082 std z+0,R10
0034 .dbline 66
; for(i=0;iL53
01E8 042F mov R16,R20
01EA 152F mov R17,R21
01EC 0352 subi R16,35
01EE 1040 sbci R17,0
01F0 000F lsl R16
01F2 111F rol R17
01F4 080F add R16,R24
01F6 191F adc R17,R25
01F8 00D0 rcall lpm16
01FA E02F mov R30,R16
01FC F12F mov R31,R17
01FE 0994 ijmp
0200 L52:
0200 4A35 cpi R20,90
0202 E0E0 ldi R30,0
0204 5E07 cpc R21,R30
0206 09F4 brne X10
0208 33C0 rjmp L46
020A X10:
020A 37C0 rjmp L32
020C X1:
020C .dbline 126
020C L36:
020C .dbline 128
; case 0x00:
; SCSICMD_TestUnitReady();
020C F7D0 rcall _SCSICMD_TestUnitReady
020E .dbline 129
; BulkStausPhase = InCSWPhase;
020E 88E0 ldi R24,8
0210 80932E00 sts _BulkStausPhase,R24
0214 .dbline 130
; break;
0214 35C0 rjmp L33
0216 L37:
0216 .dbline 132
; case 0x03:
; SCSICMD_RequestSense();
0216 0CD1 rcall _SCSICMD_RequestSense
0218 .dbline 133
; BulkStausPhase=InCSWPhase;
0218 88E0 ldi R24,8
021A 80932E00 sts _BulkStausPhase,R24
021E .dbline 134
; break;
021E 30C0 rjmp L33
0220 L38:
0220 .dbline 136
; case 0x12:
; SCSICMD_Inquiry();
0220 73D0 rcall _SCSICMD_Inquiry
0222 .dbline 137
; BulkStausPhase = InCSWPhase;
0222 88E0 ldi R24,8
0224 80932E00 sts _BulkStausPhase,R24
0228 .dbline 138
; break;
0228 2BC0 rjmp L33
022A L39:
022A .dbline 140
; case 0x1a:
; SCSICMD_ModeSense06();
022A 1AD1 rcall _SCSICMD_ModeSense06
022C .dbline 141
; BulkStausPhase=InCSWPhase;
022C 88E0 ldi R24,8
022E 80932E00 sts _BulkStausPhase,R24
0232 .dbline 142
; break;
0232 26C0 rjmp L33
0234 L40:
0234 .dbline 144
; case 0x1e:
; SCSICMD_PreventAllowMediumRemoval();
0234 32D1 rcall _SCSICMD_PreventAllowMediumRemoval
0236 .dbline 145
; BulkStausPhase=InCSWPhase;
0236 88E0 ldi R24,8
0238 80932E00 sts _BulkStausPhase,R24
023C .dbline 146
; break;
023C 21C0 rjmp L33
023E L41:
023E .dbline 148
; case 0x23:
; SCSICMD_ReadFormatCapacities();
023E 9CD0 rcall _SCSICMD_ReadFormatCapacities
0240 .dbline 149
; BulkStausPhase = InCSWPhase;
0240 88E0 ldi R24,8
0242 80932E00 sts _BulkStausPhase,R24
0246 .dbline 150
; break;
0246 1CC0 rjmp L33
0248 L42:
0248 .dbline 152
; case 0x25:
; SCSICMD_ReadCapacity();
0248 B4D0 rcall _SCSICMD_ReadCapacity
024A .dbline 153
; BulkStausPhase=InCSWPhase;
024A 88E0 ldi R24,8
024C 80932E00 sts _BulkStausPhase,R24
0250 .dbline 154
; break;
0250 17C0 rjmp L33
0252 L43:
0252 .dbline 156
; case 0x28:
; SCSICMD_Read10();
0252 C7D0 rcall _SCSICMD_Read10
0254 .dbline 157
; BulkStausPhase=InCSWPhase;
0254 88E0 ldi R24,8
0256 80932E00 sts _BulkStausPhase,R24
025A .dbline 158
; break;
025A 12C0 rjmp L33
025C L44:
025C .dbline 160
; case 0x2a:
; SCSICMD_Write10();
025C 38D1 rcall _SCSICMD_Write10
025E .dbline 161
; BulkPhase =OutDataPhase;
025E 81E0 ldi R24,1
0260 80930000 sts _BulkPhase,R24
0264 .dbline 162
; break;
0264 0DC0 rjmp L33
0266 L45:
0266 .dbline 164
; case 0x2f:
; SCSICMD_Verify10();
0266 4FD1 rcall _SCSICMD_Verify10
0268 .dbline 165
; BulkStausPhase=InCSWPhase;
0268 88E0 ldi R24,8
026A 80932E00 sts _BulkStausPhase,R24
026E .dbline 166
; break;
026E 08C0 rjmp L33
0270 L46:
0270 .dbline 168
; case 0x5a:
; SCSICMD_ModeSense10();
0270 64D1 rcall _SCSICMD_ModeSense10
0272 .dbline 169
; BulkStausPhase=InCSWPhase;
0272 88E0 ldi R24,8
0274 80932E00 sts _BulkStausPhase,R24
0278 .dbline 170
; break;
0278 03C0 rjmp L33
027A L32:
027A .dbline 172
027A 88E0 ldi R24,8
027C 80932E00 sts _BulkStausPhase,R24
0280 .dbline 173
0280 L33:
0280 .dbline -2
0280 .dbline 175
; default:
; BulkStausPhase=InCSWPhase;
; break;
; }
; }
0280 L24:
0280 00D0 rcall pop_gset1
0282 .dbline 0 ; func end
0282 0895 ret
0284 .dbfunc s Usb_BoBulkInData _Usb_BoBulkInData fI
.even
0284 _Usb_BoBulkInData::
0284 .dbline -1
0284 .dbline 197
0284 .dbline 198
0284 10910200 lds R17,_WritePageBuff+1
0288 00910100 lds R16,_WritePageBuff
028C 00D0 rcall _flashWrite
028E .dbline 199
028E 30900100 lds R3,_WriteResidueVal+1
0292 20900000 lds R2,_WriteResidueVal
0296 2220 tst R2
0298 29F4 brne L55
029A 3320 tst R3
029C 19F4 brne L55
029E .dbline 199
029E .dbline 200
029E 2224 clr R2
02A0 20920000 sts _BulkPhase,R2
02A4 .dbline 201
02A4 L55:
02A4 .dbline -2
02A4 .dbline 202
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:PC输入数据处理
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Usb_BoBulkInData(void){
; flashWrite(WritePageBuff);
; if(WriteResidueVal == 0){
; BulkPhase = CommandPhase;
; }
; }
02A4 L54:
02A4 .dbline 0 ; func end
02A4 0895 ret
02A6 .dbfunc s Bulk_In_Packet _Bulk_In_Packet fI
.even
02A6 _Bulk_In_Packet::
02A6 .dbline -1
02A6 .dbline 224
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:回应批量传输包
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Bulk_In_Packet(void){
02A6 .dbline 225
; if(XmtBuff.wrLength != 0)
02A6 30904100 lds R3,_XmtBuff+64+1
02AA 20904000 lds R2,_XmtBuff+64
02AE 2220 tst R2
02B0 11F4 brne X11
02B2 3320 tst R3
02B4 11F0 breq L58
02B6 X11:
02B6 .dbline 226
; BULK_submit();
02B6 00D0 rcall _BULK_submit
02B8 26C0 rjmp L59
02BA L58:
02BA .dbline 227
; else if(ReadResidueVal != 0)
02BA 00E0 ldi R16,L63
02BE 00D0 rcall lpm32
02C0 50900300 lds R5,_ReadResidueVal+2+1
02C4 40900200 lds R4,_ReadResidueVal+2
02C8 30900100 lds R3,_ReadResidueVal+1
02CC 20900000 lds R2,_ReadResidueVal
02D0 2016 cp R2,R16
02D2 3106 cpc R3,R17
02D4 4206 cpc R4,R18
02D6 5306 cpc R5,R19
02D8 11F0 breq L61
02DA .dbline 228
; flashRead();
02DA 00D0 rcall _flashRead
02DC 14C0 rjmp L62
02DE L61:
02DE .dbline 229
; else if(BulkStausPhase == InCSWPhase){
02DE 80912E00 lds R24,_BulkStausPhase
02E2 8830 cpi R24,8
02E4 81F4 brne L64
02E6 .dbline 229
02E6 .dbline 230
; XmtBuff.p_p=0;
02E6 2224 clr R2
02E8 20924600 sts _XmtBuff+70,R2
02EC .dbline 231
; XmtBuff.p = (unsigned char *)&Usb_Csw;
02EC 80E0 ldi R24,<_Usb_Csw
02EE 90E0 ldi R25,>_Usb_Csw
02F0 90934500 sts _XmtBuff+68+1,R25
02F4 80934400 sts _XmtBuff+68,R24
02F8 .dbline 232
; XmtBuff.wrLength = 13;
02F8 8DE0 ldi R24,13
02FA 90E0 ldi R25,0
02FC 90934100 sts _XmtBuff+64+1,R25
0300 80934000 sts _XmtBuff+64,R24
0304 .dbline 233
; BULK_submit();
0304 00D0 rcall _BULK_submit
0306 .dbline 234
; }
0306 L64:
0306 L62:
0306 L59:
0306 .dbline -2
0306 .dbline 235
; }
0306 L57:
0306 .dbline 0 ; func end
0306 0895 ret
0308 .dbfunc s SCSICMD_Inquiry _SCSICMD_Inquiry fI
.even
0308 _SCSICMD_Inquiry::
0308 .dbline -1
0308 .dbline 257
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_Inquiry(void){
0308 .dbline 258
; Usb_Set_Csw();
0308 17D0 rcall _Usb_Set_Csw
030A .dbline 259
; Usb_Csw.dCSWDataResidue[1] = 0;
030A 2224 clr R2
030C 20922800 sts _Usb_Csw+8+1,R2
0310 .dbline 260
; Usb_Csw.dCSWDataResidue[2] = 0;
0310 20922900 sts _Usb_Csw+8+2,R2
0314 .dbline 261
; Usb_Csw.dCSWDataResidue[3] = 0;
0314 20922A00 sts _Usb_Csw+8+3,R2
0318 .dbline 262
; Usb_Csw.dCSWDataResidue[4] = 0;
0318 20922B00 sts _Usb_Csw+8+4,R2
031C .dbline 263
; XmtBuff.pp = SCSI_INQUIRY;
031C 80E0 ldi R24,<_SCSI_INQUIRY
031E 90E0 ldi R25,>_SCSI_INQUIRY
0320 90934300 sts _XmtBuff+66+1,R25
0324 80934200 sts _XmtBuff+66,R24
0328 .dbline 264
; XmtBuff.wrLength = 36;
0328 84E2 ldi R24,36
032A 90E0 ldi R25,0
032C 90934100 sts _XmtBuff+64+1,R25
0330 80934000 sts _XmtBuff+64,R24
0334 .dbline 265
; BULK_submit();
0334 00D0 rcall _BULK_submit
0336 .dbline -2
0336 .dbline 266
; }
0336 L69:
0336 .dbline 0 ; func end
0336 0895 ret
0338 .dbfunc s Usb_Set_Csw _Usb_Set_Csw fI
.even
0338 _Usb_Set_Csw::
0338 .dbline -1
0338 .dbline 288
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:创建CSW数据块
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Usb_Set_Csw(void){
0338 .dbline 289
; Usb_Csw.dCSWSignature[0] = 0x55;
0338 85E5 ldi R24,85
033A 80931F00 sts _Usb_Csw,R24
033E .dbline 290
; Usb_Csw.dCSWSignature[1] = 0x53;
033E 83E5 ldi R24,83
0340 80932000 sts _Usb_Csw+1,R24
0344 .dbline 291
; Usb_Csw.dCSWSignature[2] = 0x42;
0344 82E4 ldi R24,66
0346 80932100 sts _Usb_Csw+2,R24
034A .dbline 292
; Usb_Csw.dCSWSignature[3] = 0x53;
034A 83E5 ldi R24,83
034C 80932200 sts _Usb_Csw+3,R24
0350 .dbline 293
; Usb_Csw.dCSWTag[0] = XmtBuff.b[4];
0350 20900400 lds R2,_XmtBuff+4
0354 20922300 sts _Usb_Csw+4,R2
0358 .dbline 294
; Usb_Csw.dCSWTag[1] = XmtBuff.b[5];
0358 20900500 lds R2,_XmtBuff+5
035C 20922400 sts _Usb_Csw+4+1,R2
0360 .dbline 295
; Usb_Csw.dCSWTag[2] = XmtBuff.b[6];
0360 20900600 lds R2,_XmtBuff+6
0364 20922500 sts _Usb_Csw+4+2,R2
0368 .dbline 296
; Usb_Csw.dCSWTag[3] = XmtBuff.b[7];
0368 20900700 lds R2,_XmtBuff+7
036C 20922600 sts _Usb_Csw+4+3,R2
0370 .dbline 297
; Usb_Csw.bCSWStatus = 0;
0370 2224 clr R2
0372 20922B00 sts _Usb_Csw+12,R2
0376 .dbline -2
0376 .dbline 298
; }
0376 L80:
0376 .dbline 0 ; func end
0376 0895 ret
0378 .dbfunc s SCSICMD_ReadFormatCapacities _SCSICMD_ReadFormatCapacities fI
.even
0378 _SCSICMD_ReadFormatCapacities::
0378 .dbline -1
0378 .dbline 320
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_ReadFormatCapacities(void){
0378 .dbline 321
; Usb_Set_Csw();
0378 DFDF rcall _Usb_Set_Csw
037A .dbline 322
; Usb_Csw.dCSWDataResidue[0]=(unsigned char)(dCBWDaTrLen-0x0c);
037A 90912D00 lds R25,_dCBWDaTrLen+1
037E 80912C00 lds R24,_dCBWDaTrLen
0382 0C97 sbiw R24,12
0384 80932700 sts _Usb_Csw+8,R24
0388 .dbline 323
; Usb_Csw.dCSWDataResidue[1]=0;
0388 2224 clr R2
038A 20922800 sts _Usb_Csw+8+1,R2
038E .dbline 324
; Usb_Csw.dCSWDataResidue[2]=0;
038E 20922900 sts _Usb_Csw+8+2,R2
0392 .dbline 325
; Usb_Csw.dCSWDataResidue[3]=0;
0392 20922A00 sts _Usb_Csw+8+3,R2
0396 .dbline 326
; XmtBuff.pp = SCSIDATA_ReadFormatCapacities;
0396 80E0 ldi R24,<_SCSIDATA_ReadFormatCapacities
0398 90E0 ldi R25,>_SCSIDATA_ReadFormatCapacities
039A 90934300 sts _XmtBuff+66+1,R25
039E 80934200 sts _XmtBuff+66,R24
03A2 .dbline 327
; XmtBuff.wrLength = 12;
03A2 8CE0 ldi R24,12
03A4 90E0 ldi R25,0
03A6 90934100 sts _XmtBuff+64+1,R25
03AA 80934000 sts _XmtBuff+64,R24
03AE .dbline 328
; BULK_submit();
03AE 00D0 rcall _BULK_submit
03B0 .dbline -2
03B0 .dbline 329
; }
03B0 L96:
03B0 .dbline 0 ; func end
03B0 0895 ret
03B2 .dbfunc s SCSICMD_ReadCapacity _SCSICMD_ReadCapacity fI
.even
03B2 _SCSICMD_ReadCapacity::
03B2 .dbline -1
03B2 .dbline 351
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_ReadCapacity(void){
03B2 .dbline 352
; Usb_Set_Csw();
03B2 C2DF rcall _Usb_Set_Csw
03B4 .dbline 353
; Usb_Csw.dCSWDataResidue[1] = 0;
03B4 2224 clr R2
03B6 20922800 sts _Usb_Csw+8+1,R2
03BA .dbline 354
; Usb_Csw.dCSWDataResidue[2] = 0;
03BA 20922900 sts _Usb_Csw+8+2,R2
03BE .dbline 355
; Usb_Csw.dCSWDataResidue[3] = 0;
03BE 20922A00 sts _Usb_Csw+8+3,R2
03C2 .dbline 356
; Usb_Csw.dCSWDataResidue[4] = 0;
03C2 20922B00 sts _Usb_Csw+8+4,R2
03C6 .dbline 357
; XmtBuff.pp = SCSIDATA_ReadCapacity;
03C6 80E0 ldi R24,<_SCSIDATA_ReadCapacity
03C8 90E0 ldi R25,>_SCSIDATA_ReadCapacity
03CA 90934300 sts _XmtBuff+66+1,R25
03CE 80934200 sts _XmtBuff+66,R24
03D2 .dbline 358
; XmtBuff.wrLength = 8;
03D2 88E0 ldi R24,8
03D4 90E0 ldi R25,0
03D6 90934100 sts _XmtBuff+64+1,R25
03DA 80934000 sts _XmtBuff+64,R24
03DE .dbline 359
; BULK_submit();
03DE 00D0 rcall _BULK_submit
03E0 .dbline -2
03E0 .dbline 360
; }
03E0 L106:
03E0 .dbline 0 ; func end
03E0 0895 ret
03E2 .dbfunc s SCSICMD_Read10 _SCSICMD_Read10 fI
.even
03E2 _SCSICMD_Read10::
03E2 .dbline -1
03E2 .dbline 382
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_Read10(void){
03E2 .dbline 383
; Usb_Set_Csw();
03E2 AADF rcall _Usb_Set_Csw
03E4 .dbline 384
; Usb_Csw.dCSWDataResidue[0]=0;
03E4 2224 clr R2
03E6 20922700 sts _Usb_Csw+8,R2
03EA .dbline 385
; Usb_Csw.dCSWDataResidue[1]=0;
03EA 20922800 sts _Usb_Csw+8+1,R2
03EE .dbline 386
; Usb_Csw.dCSWDataResidue[2]=0;
03EE 20922900 sts _Usb_Csw+8+2,R2
03F2 .dbline 387
; Usb_Csw.dCSWDataResidue[3]=0;
03F2 20922A00 sts _Usb_Csw+8+3,R2
03F6 .dbline 388
; flashReadcmd();
03F6 00D0 rcall _flashReadcmd
03F8 .dbline 389
; flashRead();
03F8 00D0 rcall _flashRead
03FA .dbline -2
03FA .dbline 390
; }
03FA L117:
03FA .dbline 0 ; func end
03FA 0895 ret
03FC .dbfunc s SCSICMD_TestUnitReady _SCSICMD_TestUnitReady fI
.even
03FC _SCSICMD_TestUnitReady::
03FC .dbline -1
03FC .dbline 412
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_TestUnitReady(void){
03FC .dbline 413
; Usb_Set_Csw();
03FC 9DDF rcall _Usb_Set_Csw
03FE .dbline 414
; Usb_Csw.dCSWDataResidue[1] = 0;
03FE 2224 clr R2
0400 20922800 sts _Usb_Csw+8+1,R2
0404 .dbline 415
; Usb_Csw.dCSWDataResidue[2] = 0;
0404 20922900 sts _Usb_Csw+8+2,R2
0408 .dbline 416
; Usb_Csw.dCSWDataResidue[3] = 0;
0408 20922A00 sts _Usb_Csw+8+3,R2
040C .dbline 417
; Usb_Csw.dCSWDataResidue[4] = 0;
040C 20922B00 sts _Usb_Csw+8+4,R2
0410 .dbline 418
; XmtBuff.p_p=0;
0410 20924600 sts _XmtBuff+70,R2
0414 .dbline 419
; XmtBuff.p = (unsigned char *)&Usb_Csw;
0414 80E0 ldi R24,<_Usb_Csw
0416 90E0 ldi R25,>_Usb_Csw
0418 90934500 sts _XmtBuff+68+1,R25
041C 80934400 sts _XmtBuff+68,R24
0420 .dbline 420
; XmtBuff.wrLength = 13;
0420 8DE0 ldi R24,13
0422 90E0 ldi R25,0
0424 90934100 sts _XmtBuff+64+1,R25
0428 80934000 sts _XmtBuff+64,R24
042C .dbline 421
; BULK_submit();
042C 00D0 rcall _BULK_submit
042E .dbline -2
042E .dbline 422
; }
042E L125:
042E .dbline 0 ; func end
042E 0895 ret
0430 .dbfunc s SCSICMD_RequestSense _SCSICMD_RequestSense fI
.even
0430 _SCSICMD_RequestSense::
0430 .dbline -1
0430 .dbline 444
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_RequestSense(void){
0430 .dbline 445
; Usb_Set_Csw();
0430 83DF rcall _Usb_Set_Csw
0432 .dbline 446
; Usb_Csw.dCSWDataResidue[1] = 0;
0432 2224 clr R2
0434 20922800 sts _Usb_Csw+8+1,R2
0438 .dbline 447
; Usb_Csw.dCSWDataResidue[2] = 0;
0438 20922900 sts _Usb_Csw+8+2,R2
043C .dbline 448
; Usb_Csw.dCSWDataResidue[3] = 0;
043C 20922A00 sts _Usb_Csw+8+3,R2
0440 .dbline 449
; Usb_Csw.dCSWDataResidue[4] = 0;
0440 20922B00 sts _Usb_Csw+8+4,R2
0444 .dbline 450
; XmtBuff.pp = SCSIDATA_RequestSense;
0444 80E0 ldi R24,<_SCSIDATA_RequestSense
0446 90E0 ldi R25,>_SCSIDATA_RequestSense
0448 90934300 sts _XmtBuff+66+1,R25
044C 80934200 sts _XmtBuff+66,R24
0450 .dbline 451
; XmtBuff.wrLength = 18;
0450 82E1 ldi R24,18
0452 90E0 ldi R25,0
0454 90934100 sts _XmtBuff+64+1,R25
0458 80934000 sts _XmtBuff+64,R24
045C .dbline 452
; BULK_submit();
045C 00D0 rcall _BULK_submit
045E .dbline -2
045E .dbline 453
; }
045E L137:
045E .dbline 0 ; func end
045E 0895 ret
0460 .dbfunc s SCSICMD_ModeSense06 _SCSICMD_ModeSense06 fI
.even
0460 _SCSICMD_ModeSense06::
0460 .dbline -1
0460 .dbline 475
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_ModeSense06(void){
0460 .dbline 476
; Usb_Set_Csw();
0460 6BDF rcall _Usb_Set_Csw
0462 .dbline 477
; Usb_Csw.dCSWDataResidue[1]=(unsigned char)(dCBWDaTrLen-0x04);
0462 90912D00 lds R25,_dCBWDaTrLen+1
0466 80912C00 lds R24,_dCBWDaTrLen
046A 0497 sbiw R24,4
046C 80932800 sts _Usb_Csw+8+1,R24
0470 .dbline 478
; Usb_Csw.dCSWDataResidue[2] = 0;
0470 2224 clr R2
0472 20922900 sts _Usb_Csw+8+2,R2
0476 .dbline 479
; Usb_Csw.dCSWDataResidue[3] = 0;
0476 20922A00 sts _Usb_Csw+8+3,R2
047A .dbline 480
; Usb_Csw.dCSWDataResidue[4] = 0;
047A 20922B00 sts _Usb_Csw+8+4,R2
047E .dbline 481
; XmtBuff.pp = SCSIDATA_Sense;
047E 80E0 ldi R24,<_SCSIDATA_Sense
0480 90E0 ldi R25,>_SCSIDATA_Sense
0482 90934300 sts _XmtBuff+66+1,R25
0486 80934200 sts _XmtBuff+66,R24
048A .dbline 482
; XmtBuff.wrLength = 4;
048A 84E0 ldi R24,4
048C 90E0 ldi R25,0
048E 90934100 sts _XmtBuff+64+1,R25
0492 80934000 sts _XmtBuff+64,R24
0496 .dbline 483
; BULK_submit();
0496 00D0 rcall _BULK_submit
0498 .dbline -2
0498 .dbline 484
; }
0498 L148:
0498 .dbline 0 ; func end
0498 0895 ret
049A .dbfunc s SCSICMD_PreventAllowMediumRemoval _SCSICMD_PreventAllowMediumRemoval fI
.even
049A _SCSICMD_PreventAllowMediumRemoval::
049A .dbline -1
049A .dbline 506
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_PreventAllowMediumRemoval(void){
049A .dbline 507
; Usb_Set_Csw();
049A 4EDF rcall _Usb_Set_Csw
049C .dbline 508
; Usb_Csw.dCSWDataResidue[1] = 0;
049C 2224 clr R2
049E 20922800 sts _Usb_Csw+8+1,R2
04A2 .dbline 509
; Usb_Csw.dCSWDataResidue[2] = 0;
04A2 20922900 sts _Usb_Csw+8+2,R2
04A6 .dbline 510
; Usb_Csw.dCSWDataResidue[3] = 0;
04A6 20922A00 sts _Usb_Csw+8+3,R2
04AA .dbline 511
; Usb_Csw.dCSWDataResidue[4] = 0;
04AA 20922B00 sts _Usb_Csw+8+4,R2
04AE .dbline 512
; XmtBuff.p_p=0;
04AE 20924600 sts _XmtBuff+70,R2
04B2 .dbline 513
; XmtBuff.p = (unsigned char *)&Usb_Csw;
04B2 80E0 ldi R24,<_Usb_Csw
04B4 90E0 ldi R25,>_Usb_Csw
04B6 90934500 sts _XmtBuff+68+1,R25
04BA 80934400 sts _XmtBuff+68,R24
04BE .dbline 514
; XmtBuff.wrLength = 13;
04BE 8DE0 ldi R24,13
04C0 90E0 ldi R25,0
04C2 90934100 sts _XmtBuff+64+1,R25
04C6 80934000 sts _XmtBuff+64,R24
04CA .dbline 515
; BULK_submit();
04CA 00D0 rcall _BULK_submit
04CC .dbline -2
04CC .dbline 516
; }
04CC L159:
04CC .dbline 0 ; func end
04CC 0895 ret
04CE .dbfunc s SCSICMD_Write10 _SCSICMD_Write10 fI
.even
04CE _SCSICMD_Write10::
04CE .dbline -1
04CE .dbline 538
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_Write10(void){
04CE .dbline 539
; Usb_Set_Csw();
04CE 34DF rcall _Usb_Set_Csw
04D0 .dbline 540
; Usb_Csw.dCSWDataResidue[1] = 0;
04D0 2224 clr R2
04D2 20922800 sts _Usb_Csw+8+1,R2
04D6 .dbline 541
; Usb_Csw.dCSWDataResidue[2] = 0;
04D6 20922900 sts _Usb_Csw+8+2,R2
04DA .dbline 542
; Usb_Csw.dCSWDataResidue[3] = 0;
04DA 20922A00 sts _Usb_Csw+8+3,R2
04DE .dbline 543
; Usb_Csw.dCSWDataResidue[4] = 0;
04DE 20922B00 sts _Usb_Csw+8+4,R2
04E2 .dbline 544
; flashWritecmd();
04E2 00D0 rcall _flashWritecmd
04E4 .dbline 545
; XmtBuff.p_p=0;
04E4 2224 clr R2
04E6 20924600 sts _XmtBuff+70,R2
04EA .dbline 546
; XmtBuff.p = (unsigned char *)&Usb_Csw;
04EA 80E0 ldi R24,<_Usb_Csw
04EC 90E0 ldi R25,>_Usb_Csw
04EE 90934500 sts _XmtBuff+68+1,R25
04F2 80934400 sts _XmtBuff+68,R24
04F6 .dbline 547
; XmtBuff.wrLength = 13;
04F6 8DE0 ldi R24,13
04F8 90E0 ldi R25,0
04FA 90934100 sts _XmtBuff+64+1,R25
04FE 80934000 sts _XmtBuff+64,R24
0502 .dbline 548
; BULK_submit();
0502 00D0 rcall _BULK_submit
0504 .dbline -2
0504 .dbline 549
; }
0504 L171:
0504 .dbline 0 ; func end
0504 0895 ret
0506 .dbfunc s SCSICMD_Verify10 _SCSICMD_Verify10 fI
.even
0506 _SCSICMD_Verify10::
0506 .dbline -1
0506 .dbline 571
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_Verify10(void){
0506 .dbline 572
; Usb_Set_Csw();
0506 18DF rcall _Usb_Set_Csw
0508 .dbline 573
; Usb_Csw.dCSWDataResidue[1] = 0;
0508 2224 clr R2
050A 20922800 sts _Usb_Csw+8+1,R2
050E .dbline 574
; Usb_Csw.dCSWDataResidue[2] = 0;
050E 20922900 sts _Usb_Csw+8+2,R2
0512 .dbline 575
; Usb_Csw.dCSWDataResidue[3] = 0;
0512 20922A00 sts _Usb_Csw+8+3,R2
0516 .dbline 576
; Usb_Csw.dCSWDataResidue[4] = 0;
0516 20922B00 sts _Usb_Csw+8+4,R2
051A .dbline 577
; XmtBuff.p_p=0;
051A 20924600 sts _XmtBuff+70,R2
051E .dbline 578
; XmtBuff.p = (unsigned char *)&Usb_Csw;
051E 80E0 ldi R24,<_Usb_Csw
0520 90E0 ldi R25,>_Usb_Csw
0522 90934500 sts _XmtBuff+68+1,R25
0526 80934400 sts _XmtBuff+68,R24
052A .dbline 579
; XmtBuff.wrLength = 13;
052A 8DE0 ldi R24,13
052C 90E0 ldi R25,0
052E 90934100 sts _XmtBuff+64+1,R25
0532 80934000 sts _XmtBuff+64,R24
0536 .dbline 580
; BULK_submit();
0536 00D0 rcall _BULK_submit
0538 .dbline -2
0538 .dbline 581
; }
0538 L183:
0538 .dbline 0 ; func end
0538 0895 ret
053A .dbfunc s SCSICMD_ModeSense10 _SCSICMD_ModeSense10 fI
.even
053A _SCSICMD_ModeSense10::
053A .dbline -1
053A .dbline 603
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_ModeSense10(void){
053A .dbline 604
; Usb_Set_Csw();
053A FEDE rcall _Usb_Set_Csw
053C .dbline 605
; Usb_Csw.dCSWDataResidue[1] = 0;
053C 2224 clr R2
053E 20922800 sts _Usb_Csw+8+1,R2
0542 .dbline 606
; Usb_Csw.dCSWDataResidue[2] = 0;
0542 20922900 sts _Usb_Csw+8+2,R2
0546 .dbline 607
; Usb_Csw.dCSWDataResidue[3] = 0;
0546 20922A00 sts _Usb_Csw+8+3,R2
054A .dbline 608
; Usb_Csw.dCSWDataResidue[4] = 0;
054A 20922B00 sts _Usb_Csw+8+4,R2
054E .dbline 609
; XmtBuff.p_p=0;
054E 20924600 sts _XmtBuff+70,R2
0552 .dbline 610
; XmtBuff.p = (unsigned char *)&Usb_Csw;
0552 80E0 ldi R24,<_Usb_Csw
0554 90E0 ldi R25,>_Usb_Csw
0556 90934500 sts _XmtBuff+68+1,R25
055A 80934400 sts _XmtBuff+68,R24
055E .dbline 611
; XmtBuff.wrLength = 13;
055E 8DE0 ldi R24,13
0560 90E0 ldi R25,0
0562 90934100 sts _XmtBuff+64+1,R25
0566 80934000 sts _XmtBuff+64,R24
056A .dbline 612
; BULK_submit();
056A 00D0 rcall _BULK_submit
056C .dbline -2
056C .dbline 613
; }
056C L195:
056C .dbline 0 ; func end
056C 0895 ret
.area bss(ram, con, rel)
0000 .dbfile G:\source\Scsi.c
0000 _Usb_Cbw::
0000 .blkb 31
001F .dbsym s Usb_Cbw _Usb_Cbw X
001F _Usb_Csw::
001F .blkb 13
002C .dbsym s Usb_Csw _Usb_Csw X
002C _dCBWDaTrLen::
002C .blkb 2
002E .dbsym s dCBWDaTrLen _dCBWDaTrLen i
002E _BulkStausPhase::
002E .blkb 1
002F .dbsym s BulkStausPhase _BulkStausPhase c
.area lit(rom, con, rel)
007A L63:
007A 00000000 .word 0,0
.area data(ram, con, rel)
0005 .dbfile G:\source\Scsi.c
0005 L4:
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile G:\source\Scsi.c