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

📄 cs8950.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 502  :     if ( pCD->pRxStatNext == pCD->pRxStatLimit )

  00250	e59d0014	 ldr       r0, [sp, #0x14]
  00254	e59d1014	 ldr       r1, [sp, #0x14]
  00258	e5902014	 ldr       r2, [r0, #0x14]
  0025c	e5913010	 ldr       r3, [r1, #0x10]
  00260	e1520003	 cmp       r2, r3
  00264	1a000003	 bne       |$L14066|

; 503  :     {
; 504  :         pCD->pRxStatNext = pCD->pRxStat;

  00268	e59d0014	 ldr       r0, [sp, #0x14]
  0026c	e59d1014	 ldr       r1, [sp, #0x14]
  00270	e590200c	 ldr       r2, [r0, #0xC]
  00274	e5812014	 str       r2, [r1, #0x14]
  00278		 |$L14066|

; 505  :     }        
; 506  : 
; 507  : 
; 508  :     /* Enqueue the number of receive descriptors processed to the chip */
; 509  :     WriteDWord( OpReg_RxDEQ, 1 );

  00278	e59f00cc	 ldr       r0, [pc, #0xCC]
  0027c	e5901000	 ldr       r1, [r0]
  00280	e3a02001	 mov       r2, #1
  00284	e3a0009c	 mov       r0, #0x9C
  00288	e7812000	 str       r2, [r1, +r0]

; 510  : 
; 511  :     /* Enqueue the number of receive status entries processed to the chip */
; 512  :     WriteDWord( OpReg_RxSEQ, 1 );

  0028c	e59f30b8	 ldr       r3, [pc, #0xB8]
  00290	e5930000	 ldr       r0, [r3]
  00294	e3a01001	 mov       r1, #1
  00298	e3a020ac	 mov       r2, #0xAC
  0029c	e7801002	 str       r1, [r0, +r2]

; 513  : 
; 514  : 
; 515  :     //
; 516  :     // Need to perform a dummy read to clear the interrupt status if there are no
; 517  :     // more interrupt packets.
; 518  :     //
; 519  :     Status = pCD->pRxStatNext->RxStat;

  002a0	e59d3014	 ldr       r3, [sp, #0x14]
  002a4	e5930014	 ldr       r0, [r3, #0x14]
  002a8	e5d01003	 ldrb      r1, [r0, #3]
  002ac	e1a02401	 mov       r2, r1, lsl #8
  002b0	e5d03002	 ldrb      r3, [r0, #2]
  002b4	e1831002	 orr       r1, r3, r2
  002b8	e1a02401	 mov       r2, r1, lsl #8
  002bc	e5d03001	 ldrb      r3, [r0, #1]
  002c0	e1831002	 orr       r1, r3, r2
  002c4	e1a02401	 mov       r2, r1, lsl #8
  002c8	e5d03000	 ldrb      r3, [r0]
  002cc	e1831002	 orr       r1, r3, r2
  002d0	e58d1010	 str       r1, [sp, #0x10]

; 520  :     if (!(Status & RxStat_RxFP))  

  002d4	e59d0010	 ldr       r0, [sp, #0x10]
  002d8	e3100102	 tst       r0, #2, 2
  002dc	1a000003	 bne       |$L14069|

; 521  :     {
; 522  :         Status = ReadDWord(OpReg_IntStsC);

  002e0	e59f0064	 ldr       r0, [pc, #0x64]
  002e4	e5901000	 ldr       r1, [r0]
  002e8	e591202c	 ldr       r2, [r1, #0x2C]
  002ec	e58d2010	 str       r2, [sp, #0x10]
  002f0		 |$L14069|

; 523  :     }
; 524  :    
; 525  :     Global_RxTotalCnt++;

  002f0	e59f0050	 ldr       r0, [pc, #0x50]
  002f4	e5901000	 ldr       r1, [r0]
  002f8	e2812001	 add       r2, r1, #1
  002fc	e59f0044	 ldr       r0, [pc, #0x44]
  00300	e5802000	 str       r2, [r0]

; 526  : 
; 527  : 
; 528  :     //   EdbgOutputDebugString("\nCS8950  CS8950GetFrame(): Global_RxTotalCnt=%d\n",Global_RxTotalCnt);
; 529  :  
; 530  :    //RxWorkaround();
; 531  : 
; 532  :     /* Frame Length == 0 means the received frame with error*/
; 533  :     if ( *pwLength == 0 ) 

  00304	e59d102c	 ldr       r1, [sp, #0x2C]
  00308	e1d100b0	 ldrh      r0, [r1]
  0030c	e1a02800	 mov       r2, r0, lsl #16
  00310	e1b01822	 movs      r1, r2, lsr #16
  00314	1a000004	 bne       |$L14071|

; 534  :     {
; 535  :         EdbgOutputDebugString("\n CS8950GetFrame(): Length = 0\r\n");

  00318	e59f0024	 ldr       r0, [pc, #0x24]
  0031c	eb000000	 bl        EdbgOutputDebugString

; 536  :         return FALSE; 

  00320	e3a03000	 mov       r3, #0
  00324	e1cd31bc	 strh      r3, [sp, #0x1C]
  00328	ea000001	 b         |$L14049|
  0032c		 |$L14071|

; 537  :     }
; 538  :     
; 539  :     //
; 540  :     // Lets send the frame out again as a broadcast packet.
; 541  :     //
; 542  : #if 0
; 543  :     memcpy(tempFrame, pbData,*pwLength);
; 544  :     tempFrame[0] = 0x00;
; 545  :     tempFrame[1] = 0x06;
; 546  :     tempFrame[2] = 0x5B;
; 547  :     tempFrame[3] = 0xd3;
; 548  :     tempFrame[4] = 0xFC;
; 549  :     tempFrame[5] = 0x98;
; 550  : 
; 551  :     tempFrame[6]  = 0x00;
; 552  :     tempFrame[7]  = 0x00;
; 553  :     tempFrame[8]  = 0x00;
; 554  :     tempFrame[9]  = 0x00;
; 555  :     tempFrame[10] = 0x00;
; 556  :     tempFrame[11] = 0x00;
; 557  : 
; 558  :     CS8950SendFrame
; 559  :     ( 
; 560  :         tempFrame, 
; 561  :         *pwLength
; 562  :     );
; 563  : #endif // 0
; 564  :     
; 565  : 
; 566  :     return TRUE;

  0032c	e3a00001	 mov       r0, #1
  00330	e1cd01bc	 strh      r0, [sp, #0x1C]
  00334		 |$L14049|

; 462  :         return FALSE;

  00334	e1dd01bc	 ldrh      r0, [sp, #0x1C]

; 567  : }

  00338	e28dd020	 add       sp, sp, #0x20
  0033c	e89d6000	 ldmia     sp, {sp, lr}
  00340	e12fff1e	 bx        lr
  00344		 |$L14792|
  00344	00000000	 DCD       |??_C@_0CB@HOMC@?6?5CS8950GetFrame?$CI?$CJ?3?5Length?5?$DN?50?$AN?6@|
  00348	00000000	 DCD       |Global_RxTotalCnt|
  0034c	00000000	 DCD       |gdwEthernetBase|
  00350	00000000	 DCD       |pChip|
  00354		 |$M14789|

			 ENDP  ; |CS8950GetFrame|

	EXPORT	|CS8950EnableInts|
	EXPORT	|??_C@_0BD@OEOF@CS8950EnableInts?$AN?6?$AA@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$CS8950EnableInts|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950EnableInts| } ; comdat associative
|$T14797| DCD	|CS8950EnableInts|
	DCD	0x40000f01

  00000			 AREA	 |.rdata| { |??_C@_0BD@OEOF@CS8950EnableInts?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BD@OEOF@CS8950EnableInts?$AN?6?$AA@| DCB "CS8950EnableInts", 0xd, 0xa
	DCB	0x0					; `string'
; Function compile flags: /Ods

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

  00000		 |CS8950EnableInts| PROC

; 576  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004		 |$M14795|

; 577  :     EdbgOutputDebugString("CS8950EnableInts\r\n");

  00004	e59f002c	 ldr       r0, [pc, #0x2C]
  00008	eb000000	 bl        EdbgOutputDebugString

; 578  :     WriteDWord(OpReg_IntEn, IntEn_RxEOFiE );

  0000c	e59f3020	 ldr       r3, [pc, #0x20]
  00010	e5930000	 ldr       r0, [r3]
  00014	e3a01004	 mov       r1, #4
  00018	e5801024	 str       r1, [r0, #0x24]

; 579  :     WriteDWord(OpReg_FERMask, GIntMask_Interrupt);

  0001c	e59f2010	 ldr       r2, [pc, #0x10]
  00020	e5920000	 ldr       r0, [r2]
  00024	e3a01902	 mov       r1, #2, 18
  00028	e5801064	 str       r1, [r0, #0x64]

; 580  : }

  0002c	e8bd4000	 ldmia     sp!, {lr}
  00030	e12fff1e	 bx        lr
  00034		 |$L14799|
  00034	00000000	 DCD       |gdwEthernetBase|
  00038	00000000	 DCD       |??_C@_0BD@OEOF@CS8950EnableInts?$AN?6?$AA@|
  0003c		 |$M14796|

			 ENDP  ; |CS8950EnableInts|

	EXPORT	|CS8950DisableInts|
	EXPORT	|??_C@_0BE@OOKG@CS8950DisableInts?$AN?6?$AA@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$CS8950DisableInts|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950DisableInts| } ; comdat associative
|$T14804| DCD	|CS8950DisableInts|
	DCD	0x40000f01

  00000			 AREA	 |.rdata| { |??_C@_0BE@OOKG@CS8950DisableInts?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BE@OOKG@CS8950DisableInts?$AN?6?$AA@| DCB "CS8950DisableInts", 0xd
	DCB	0xa, 0x0				; `string'
; Function compile flags: /Ods

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

  00000		 |CS8950DisableInts| PROC

; 589  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004		 |$M14802|

; 590  :     EdbgOutputDebugString("CS8950DisableInts\r\n");

  00004	e59f002c	 ldr       r0, [pc, #0x2C]
  00008	eb000000	 bl        EdbgOutputDebugString

; 591  :     WriteDWord(OpReg_IntEn, 0);

  0000c	e59f3020	 ldr       r3, [pc, #0x20]
  00010	e5930000	 ldr       r0, [r3]
  00014	e3a01000	 mov       r1, #0
  00018	e5801024	 str       r1, [r0, #0x24]

; 592  :     WriteDWord(OpReg_FERMask, 0 );

  0001c	e59f2010	 ldr       r2, [pc, #0x10]
  00020	e5920000	 ldr       r0, [r2]
  00024	e3a01000	 mov       r1, #0
  00028	e5801064	 str       r1, [r0, #0x64]

; 593  : }

  0002c	e8bd4000	 ldmia     sp!, {lr}
  00030	e12fff1e	 bx        lr
  00034		 |$L14806|
  00034	00000000	 DCD       |gdwEthernetBase|
  00038	00000000	 DCD       |??_C@_0BE@OOKG@CS8950DisableInts?$AN?6?$AA@|
  0003c		 |$M14803|

			 ENDP  ; |CS8950DisableInts|

	EXPORT	|CS8950GetPendingInterrupts|
	EXPORT	|??_C@_01FJJO@R?$AA@| [ DATA ]		; `string'
	EXPORT	|??_C@_01FMOK@n?$AA@| [ DATA ]		; `string'

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

  00000			 AREA	 |.pdata$$CS8950GetPendingInterrupts|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950GetPendingInterrupts| } ; comdat associative
|$T14812| DCD	|CS8950GetPendingInterrupts|
	DCD	0x40002402

  00000			 AREA	 |.rdata| { |??_C@_01FJJO@R?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01FJJO@R?$AA@| DCB "R", 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_01FMOK@n?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01FMOK@n?$AA@| DCB "n", 0x0			; `string'
; Function compile flags: /Ods

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

  00000		 |CS8950GetPendingInterrupts| PROC

; 603  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004	e24dd008	 sub       sp, sp, #8
  00008		 |$M14810|

; 604  :     PCD    pCD;
; 605  :     pCD    = (PCD)pChip->pData;

  00008	e59f007c	 ldr       r0, [pc, #0x7C]
  0000c	e5901000	 ldr       r1, [r0]
  00010	e591200c	 ldr       r2, [r1, #0xC]
  00014	e58d2000	 str       r2, [sp]

; 606  : 
; 607  : 
; 608  :     if (pCD->pRxStatNext->RxStat & RxStat_RxFP)  

  00018	e59d0000	 ldr       r0, [sp]
  0001c	e5901014	 ldr       r1, [r0, #0x14]
  00020	e5d12003	 ldrb      r2, [r1, #3]
  00024	e1a00402	 mov       r0, r2, lsl #8
  00028	e5d13002	 ldrb      r3, [r1, #2]
  0002c	e1832000	 orr       r2, r3, r0
  00030	e1a00402	 mov       r0, r2, lsl #8
  00034	e5d13001	 ldrb      r3, [r1, #1]
  00038	e1832000	 orr       r2, r3, r0
  0003c	e1a00402	 mov       r0, r2, lsl #8
  00040	e5d13000	 ldrb      r3, [r1]
  00044	e1832000	 orr       r2, r3, r0
  00048	e3120102	 tst       r2, #2, 2
  0004c	0a000004	 beq       |$L14087|

; 609  :     {
; 610  :         EdbgOutputDebugString("R");

  00050	e59f0030	 ldr       r0, [pc, #0x30]
  00054	eb000000	 bl        EdbgOutputDebugString

; 611  :         return INTR_TYPE_RX;

  00058	e3a03001	 mov       r3, #1
  0005c	e58d3004	 str       r3, [sp, #4]
  00060	ea000003	 b         |$L14084|
  00064		 |$L14087|

; 612  :     }        
; 613  :     EdbgOutputDebugString("n");

  00064	e59f0018	 ldr       r0, [pc, #0x18]
  00068	eb000000	 bl        EdbgOutputDebugString

; 614  :     return 0;

  0006c	e3a03000	 mov       r3, #0
  00070	e58d3004	 str       r3, [sp, #4]
  00074		 |$L14084|

; 611  :         return INTR_TYPE_RX;

  00074	e59d0004	 ldr       r0, [sp, #4]

; 615  : }

  00078	e28dd008	 add       sp, sp, #8
  0007c	e8bd4000	 ldmia     sp!, {lr}
  00080	e12fff1e	 bx        lr
  00084		 |$L14814|
  00084	00000000	 DCD       |??_C@_01FMOK@n?$AA@|
  00088	00000000	 DCD       |??_C@_01FJJO@R?$AA@|
  0008c	00000000	 DCD       |pChip|
  00090		 |$M14811|

			 ENDP  ; |CS8950GetPendingInterrupts|

	EXPORT	|CS8950ReadEEPROM|

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

  00000			 AREA	 |.pdata$$CS8950ReadEEPROM|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950ReadEEPROM| } ; comdat associative
|$T14820| DCD	|CS8950ReadEEPROM|
	DCD	0x40001504
; Function compile flags: /Ods

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

  00000		 |CS8950ReadEEPROM| PROC

; 628  : {

  00000	e1a0c00d	 mov       r12, sp
  00004	e92d0003	 stmdb     sp!, {r0, r1}
  00008	e92d5000	 stmdb     sp!, {r12, lr}
  0000c	e24dd004	 sub       sp, sp, #4
  00010		 |$M14818|

; 629  :     *pwVal = gusMacAddr[EEPROMAddress];

  00010	e1dd00bc	 ldrh      r0, [sp, #0xC]
  00014	e1a01800	 mov       r1, r0, lsl #16
  00018	e1a02821	 mov       r2, r1, lsr #16
  0001c	e3a00002	 mov       r0, #2
  00020	e0010092	 mul       r1, r2, r0
  00024	e59f0024	 ldr       r0, [pc, #0x24]
  00028	e0802001	 add       r2, r0, r1
  0002c	e1d230b0	 ldrh      r3, [r2]
  00030	e59d0010	 ldr       r0, [sp, #0x10]
  00034	e1c030b0	 strh      r3, [r0]

; 630  :     return TRUE;

  00038	e3a01001	 mov       r1, #1
  0003c	e58d1000	 str       r1, [sp]
  00040	e59d0000	 ldr       r0, [sp]

; 631  : }

  00044	e28dd004	 add       sp, sp, #4
  00048	e89d6000	 ldmia     sp, {sp, lr}

⌨️ 快捷键说明

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