⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dl_device_usbwin.cod

📁 平台PXA270, Mobile6.0 这是270的mobile6.0的bootloader
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00044	0a000017	 beq         |$L43638|

; 451  : 	{
; 452  : 	 while (word_count)

  00048	e59d3008	 ldr         r3, [sp, #8]
  0004c	e3530000	 cmp         r3, #0
  00050	0a000014	 beq         |$L43638|
  00054		 |$L43637|

; 453  : 	 {
; 454  : 		 rx_word1 = UDC_DR_0( pUSBDrvInfo );

  00054	e5963098	 ldr         r3, [r6, #0x98]
  00058	e5933300	 ldr         r3, [r3, #0x300]
  0005c	e58d3000	 str         r3, [sp]

; 455  : 		 //pRxWord[0] = rx_word1;
; 456  : 		 //pRxWord++;
; 457  : 
; 458  : 		 pData[0] = (BYTE) (rx_word1 & 0xFF);

  00060	e59d4000	 ldr         r4, [sp]

; 459  : 		 pData[1] = (BYTE) ((rx_word1>>8)  & 0xFF);

  00064	e59d2000	 ldr         r2, [sp]

; 460  : 		 pData[2] = (BYTE) ((rx_word1>>16) & 0xFF);

  00068	e59d1000	 ldr         r1, [sp]

; 461  : 		 pData[3] = (BYTE) ((rx_word1>>24) & 0xFF);

  0006c	e59d0000	 ldr         r0, [sp]

; 462  : 
; 463  : 		 pData +=4;
; 464  : 		 word_count--;

  00070	e59d3008	 ldr         r3, [sp, #8]
  00074	e1a0e422	 mov         lr, r2, lsr #8
  00078	e1a01821	 mov         r1, r1, lsr #16
  0007c	e2433001	 sub         r3, r3, #1
  00080	e58d3008	 str         r3, [sp, #8]
  00084	e1a03c20	 mov         r3, r0, lsr #24
  00088	e59d2008	 ldr         r2, [sp, #8]
  0008c	e5c54000	 strb        r4, [r5]
  00090	e5c5e001	 strb        lr, [r5, #1]
  00094	e5c51002	 strb        r1, [r5, #2]
  00098	e5c53003	 strb        r3, [r5, #3]
  0009c	e3520000	 cmp         r2, #0
  000a0	e2855004	 add         r5, r5, #4
  000a4	1affffea	 bne         |$L43637|
  000a8		 |$L43638|

; 465  : 	 }
; 466  : 	}
; 467  : 	  
; 468  : 	if (byte_count)

  000a8	e59d3004	 ldr         r3, [sp, #4]
  000ac	e3530000	 cmp         r3, #0
  000b0	0a00001e	 beq         |$L43644|

; 469  : 	{
; 470  : 		//temp_byte_count = byte_count;
; 471  : 		rx_word1 = UDC_DR_0( pUSBDrvInfo );

  000b4	e5963098	 ldr         r3, [r6, #0x98]
  000b8	e5933300	 ldr         r3, [r3, #0x300]
  000bc	e58d3000	 str         r3, [sp]

; 472  : 
; 473  : 		//while (temp_byte_count)
; 474  : 		//{
; 475  : 		//	pData[0] = (BYTE) (rx_word1 & 0xFF);
; 476  : 		//	pData++;
; 477  : 		//	rx_word1 = (rx_word1>>8);
; 478  : 		//	temp_byte_count--;
; 479  : 		//}
; 480  : 	    
; 481  : 		if (byte_count == 1)

  000c0	e59d3004	 ldr         r3, [sp, #4]
  000c4	e3530001	 cmp         r3, #1

; 482  : 		{
; 483  : 			pData[0] = (BYTE) (rx_word1 & 0xFF);

  000c8	059d3000	 ldreq       r3, [sp]
  000cc	05c53000	 streqb      r3, [r5]
  000d0	0a000011	 beq         |$L43653|

; 484  : 		}
; 485  : 		else if (byte_count == 2)

  000d4	e59d3004	 ldr         r3, [sp, #4]
  000d8	e3530002	 cmp         r3, #2

; 486  : 		{
; 487  : 			pData[0] = (BYTE) (rx_word1 & 0xFF);

  000dc	059d3000	 ldreq       r3, [sp]

; 488  : 			pData[1] = (BYTE) ((rx_word1>>8)  & 0xFF);

  000e0	059d2000	 ldreq       r2, [sp]
  000e4	05c53000	 streqb      r3, [r5]
  000e8	01a03422	 moveq       r3, r2, lsr #8
  000ec	05c53001	 streqb      r3, [r5, #1]
  000f0	0a000009	 beq         |$L43653|

; 489  : 		}
; 490  : 		else if (byte_count == 3)

  000f4	e59d3004	 ldr         r3, [sp, #4]
  000f8	e3530003	 cmp         r3, #3

; 491  : 		{
; 492  : 			pData[0] = (BYTE) (rx_word1 & 0xFF);

  000fc	059d3000	 ldreq       r3, [sp]

; 493  : 			pData[1] = (BYTE) ((rx_word1>>8)  & 0xFF);

  00100	059d2000	 ldreq       r2, [sp]

; 494  : 			pData[2] = (BYTE) ((rx_word1>>16) & 0xFF);

  00104	059d1000	 ldreq       r1, [sp]
  00108	05c53000	 streqb      r3, [r5]
  0010c	01a02422	 moveq       r2, r2, lsr #8
  00110	01a03821	 moveq       r3, r1, lsr #16
  00114	05c53002	 streqb      r3, [r5, #2]
  00118	05c52001	 streqb      r2, [r5, #1]
  0011c		 |$L43653|

; 495  : 		}
; 496  : 
; 497  : 		pData+= byte_count;

  0011c	e59d2004	 ldr         r2, [sp, #4]

; 498  : 		byte_count -= byte_count;

  00120	e59d1004	 ldr         r1, [sp, #4]
  00124	e59d3004	 ldr         r3, [sp, #4]
  00128	e0413003	 sub         r3, r1, r3
  0012c	e58d3004	 str         r3, [sp, #4]
  00130		 |$L43644|

; 499  : 	}
; 500  : 
; 501  : 	//SA_USB_Dump_Data( (PBYTE)dataP, bytes_to_read );
; 502  : 
; 503  :     udcStats.readCount++;

  00130	e59f2018	 ldr         r2, [pc, #0x18]

; 504  : 
; 505  : 	return 0;

  00134	e3a00000	 mov         r0, #0
  00138	e5923014	 ldr         r3, [r2, #0x14]
  0013c	e2833001	 add         r3, r3, #1
  00140	e5823014	 str         r3, [r2, #0x14]

; 506  : }

  00144	e28dd00c	 add         sp, sp, #0xC
  00148	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  0014c	e12fff1e	 bx          lr
  00150		 |$L44866|
  00150	00000000	 DCD         |udcStats|
  00154		 |$M44862|

			 ENDP  ; |getCommand|


  00000			 AREA	 |.text| { |getCommandEightBytes| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$getCommandEightBytes|, PDATA, SELECTION=5, ASSOC=|.text| { |getCommandEightBytes| } ; comdat associative
|$T44877| DCD	|$L44876|
	DCD	0x40000400
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |getCommandEightBytes| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |getCommandEightBytes| PROC

; 519  : {

  00000		 |$L44876|
  00000		 |$M44874|
  00000		 |$L43667|

; 520  : 	unsigned long * bufP_a = (unsigned long*) dataP;
; 521  : 	unsigned int nTotalBytes = 8;
; 522  : 
; 523  : 	while (nTotalBytes)
; 524  : 	{
; 525  : 		*bufP_a++ = (unsigned long) UDC_DR_0(pUSBDrvInfo);

  00000	e5903098	 ldr         r3, [r0, #0x98]
  00004	e5933300	 ldr         r3, [r3, #0x300]
  00008	e4813004	 str         r3, [r1], #4
  0000c	eafffffb	 b           |$L43667|
  00010		 |$M44875|

			 ENDP  ; |getCommandEightBytes|

	EXPORT	|XmitEP0Data|
	EXPORT	|??_C@_0CG@FFDMAMJO@XmitEP0Data?3?5Premature?5status?5st@| [ DATA ] ; `string'
	EXPORT	|??_C@_0BH@HMBKGDNO@XmitEP0Data?3?5a?5stall?$AN?6?$AA@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |XmitEP0Data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XmitEP0Data|, PDATA, SELECTION=5, ASSOC=|.text| { |XmitEP0Data| } ; comdat associative
|$T44905| DCD	|$L44904|
	DCD	0x40006701

  00000			 AREA	 |.rdata| { |??_C@_0BH@HMBKGDNO@XmitEP0Data?3?5a?5stall?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BH@HMBKGDNO@XmitEP0Data?3?5a?5stall?$AN?6?$AA@| DCB "XmitEP0Data:"
	DCB	" a stall", 0xd, 0xa, 0x0		; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CG@FFDMAMJO@XmitEP0Data?3?5Premature?5status?5st@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CG@FFDMAMJO@XmitEP0Data?3?5Premature?5status?5st@| DCB "XmitEP0Da"
	DCB	"ta: Premature status stage", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XmitEP0Data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XmitEP0Data| PROC

; 541  : {

  00000		 |$L44904|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004		 |$M44902|
  00004	e1a04000	 mov         r4, r0

; 542  : 	int nXferCount, nIndex;
; 543  : 	BOOL bSetIPR = FALSE;
; 544  : 	PBYTE pData;
; 545  : 	unsigned int lastPacketLen = 0;
; 546  : 	unsigned int word_count, byte_count;
; 547  : 	unsigned long tx_word; //*pTxWord, 
; 548  : 	//unsigned char *pTxByte;
; 549  : 	volatile  BYTE  *pEP0FIFO = NULL;
; 550  :     BYTE ch1, ch2, ch3;
; 551  : 
; 552  : 	pEP0FIFO = (volatile  BYTE  *) &(UDC_DR_0( pUSBDrvInfo ));

  00008	e594e098	 ldr         lr, [r4, #0x98]
  0000c	e3a07000	 mov         r7, #0

; 553  : 
; 554  : 	// Check for premature status stage.
; 555  : 	if(UDC_CSR0( pUSBDrvInfo) & XLLP_UDC_UDCCSR0_OPR && !(UDC_CSR0(pUSBDrvInfo) & XLLP_UDC_UDCCSR0_SA)) 

  00010	e59e3100	 ldr         r3, [lr, #0x100]
  00014	e3130001	 tst         r3, #1
  00018	0a000012	 beq         |$L43692|
  0001c	e59e3100	 ldr         r3, [lr, #0x100]
  00020	e3130080	 tst         r3, #0x80
  00024	1a00000f	 bne         |$L43692|

; 556  : 	{
; 557  : 		// Premature status stage.  Flush the xmit fifo and return back to
; 558  : 		// a wait for setup state.
; 559  : 		EdbgOutputDebugString( "XmitEP0Data: Premature status stage\r\n" );

  00028	e59f0168	 ldr         r0, [pc, #0x168]
  0002c	eb000000	 bl          EdbgOutputDebugString

; 560  : 
; 561  : 		// Clear the xmit fifo
; 562  : 		UDC_CSR0_MWRITE( UDC_CSR0(pUSBDrvInfo), XLLP_UDC_UDCCSR0_FTF );

  00030	e5942098	 ldr         r2, [r4, #0x98]

; 563  : 
; 564  : 		// Clear the OPR bit
; 565  : 		UDC_CSR0_MWRITE( UDC_CSR0(pUSBDrvInfo), XLLP_UDC_UDCCSR0_OPR );

  00034	e5923100	 ldr         r3, [r2, #0x100]

; 566  : 
; 567  : 		// Go back to waiting for setup.
; 568  : 		UDC_STATE( pUSBDrvInfo ) = WAIT_FOR_SETUP;

  00038	e3c33091	 bic         r3, r3, #0x91
  0003c	e3833004	 orr         r3, r3, #4
  00040	e5823100	 str         r3, [r2, #0x100]
  00044	e5942098	 ldr         r2, [r4, #0x98]
  00048	e5923100	 ldr         r3, [r2, #0x100]
  0004c	e3c33090	 bic         r3, r3, #0x90
  00050	e3833001	 orr         r3, r3, #1
  00054		 |$L44901|
  00054	e3a01001	 mov         r1, #1
  00058	e5823100	 str         r3, [r2, #0x100]
  0005c	e58410a4	 str         r1, [r4, #0xA4]

; 665  : 	}
; 666  : }

  00060	e8bd43f0	 ldmia       sp!, {r4 - r9, lr}
  00064	e12fff1e	 bx          lr
  00068		 |$L43692|

; 569  : 
; 570  : 		return;
; 571  : 	}
; 572  : 
; 573  : 	// Is there a stall?
; 574  : 	if( UDC_CSR0( pUSBDrvInfo ) & XLLP_UDC_UDCCSR0_SST ) 

  00068	e59e3100	 ldr         r3, [lr, #0x100]
  0006c	e3130010	 tst         r3, #0x10
  00070	0a00000b	 beq         |$L43699|

; 575  : 	{
; 576  : 		// Stall has been detected.  Clear the condition and go back to wait for setup.
; 577  : 		EdbgOutputDebugString( "XmitEP0Data: a stall\r\n" );

  00074	e59f0118	 ldr         r0, [pc, #0x118]
  00078	eb000000	 bl          EdbgOutputDebugString

; 578  : 
; 579  : 		UDC_CSR0_MWRITE( UDC_CSR0(pUSBDrvInfo), XLLP_UDC_UDCCSR0_SST );

  0007c	e5942098	 ldr         r2, [r4, #0x98]

; 580  : 		UDC_CSR0_MWRITE( UDC_CSR0(pUSBDrvInfo), XLLP_UDC_UDCCSR0_FTF );

  00080	e5923100	 ldr         r3, [r2, #0x100]

; 581  : 
; 582  : 		UDC_STATE( pUSBDrvInfo ) = WAIT_FOR_SETUP;

  00084	e3c33081	 bic         r3, r3, #0x81
  00088	e3833010	 orr         r3, r3, #0x10
  0008c	e5823100	 str         r3, [r2, #0x100]
  00090	e5942098	 ldr         r2, [r4, #0x98]
  00094	e5923100	 ldr         r3, [r2, #0x100]
  00098	e3c33091	 bic         r3, r3, #0x91
  0009c	e3833004	 orr         r3, r3, #4

; 583  : 
; 584  : 		return;

  000a0	eaffffeb	 b           |$L44901|
  000a4		 |$L43699|

; 585  : 	}
; 586  : 
; 587  : 	// The ParseSetup has already setup the structure to determine how much
; 588  : 	// data to send.  Determine if this is the last data packet.
; 589  : 	if( pUSBDrvInfo->nXmitLength < EP0Len ) 

  000a4	e59430a8	 ldr         r3, [r4, #0xA8]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -