spihw.cod

来自「这是mobile6.0下的DMB驱动」· COD 代码 · 共 1,779 行 · 第 1/5 页

COD
1,779
字号

  0010c	159f0024	 ldrne       r0, [pc, #0x24]
  00110	12888001	 addne       r8, r8, #1
  00114	11a01008	 movne       r1, r8
  00118	1b000000	 blne        NKDbgPrintfW
  0011c	e2855001	 add         r5, r5, #1
  00120	e3550040	 cmp         r5, #0x40
  00124	bafffff1	 blt         |$L39007|

; 544  : 				}
; 545  : 		
; 546  : 		
; 547  : 		}
; 548  : 	
; 549  : 		return TRUE;

  00128	e3a00001	 mov         r0, #1

; 550  : 	}

  0012c	e28ddc02	 add         sp, sp, #2, 24
  00130	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  00134	e12fff1e	 bx          lr
  00138		 |$L39619|
  00138	00000000	 DCD         |??_C@_1DC@GMHPLEEB@?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAb?$AAa?$AAc?$AAk?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AAc?$AAn?$AAt?$AA?5@|
  0013c	00000000	 DCD         |??_C@_1DM@INIOFAAJ@?$AA?$CF?$AAd?$AA?5?$AAl?$AAo?$AAo?$AAp?$AAB?$AAa?$AAc?$AAk?$AAT?$AAe?$AAs?$AAt?$AA2?$AA2?$AA2?$AA?5?$AAg@|
  00140		 |$M39615|

			 ENDP  ; |loopBackTest1|

	EXPORT	|loopBackTest2|
	EXPORT	|??_C@_1EK@CLOADHJK@?$AA?$CF?$AAd?$AA?0?$AA?5?$AAT?$AAX?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAx?$AA?0?$AA?5@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$loopBackTest2|, PDATA, SELECTION=5, ASSOC=|.text| { |loopBackTest2| } ; comdat associative
|$T39648| DCD	|$L39647|
	DCD	0x40004d02

  00000			 AREA	 |.rdata| { |??_C@_1EK@CLOADHJK@?$AA?$CF?$AAd?$AA?0?$AA?5?$AAT?$AAX?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAx?$AA?0?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EK@CLOADHJK@?$AA?$CF?$AAd?$AA?0?$AA?5?$AAT?$AAX?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAx?$AA?0?$AA?5@| DCB "%"
	DCB	0x0, "d", 0x0, ",", 0x0, " ", 0x0, "T", 0x0, "X", 0x0, " "
	DCB	0x0, "b", 0x0, "u", 0x0, "f", 0x0, "f", 0x0, "e", 0x0, "r"
	DCB	0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, ","
	DCB	0x0, " ", 0x0, "R", 0x0, "X", 0x0, " ", 0x0, "b", 0x0, "u"
	DCB	0x0, "f", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "0"
	DCB	0x0, "x", 0x0, "%", 0x0, "x", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'
; Function compile flags: /Ogsy

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

  00000		 |loopBackTest2| PROC

; 553  : {

  00000		 |$L39647|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004	e24ddc02	 sub         sp, sp, #2, 24
  00008		 |$M39645|
  00008	e1a07000	 mov         r7, r0

; 554  : 	int i;
; 555  : 	DWORD wrd;
; 556  : 	DWORD  Tx_loopbuf[64]= {0};

  0000c	e3a03000	 mov         r3, #0
  00010	e3a020fc	 mov         r2, #0xFC
  00014	e3a01000	 mov         r1, #0
  00018	e28d0004	 add         r0, sp, #4
  0001c	e58d3000	 str         r3, [sp]
  00020	eb000000	 bl          memset

; 557  : 	DWORD  Rx_loopbuf[64]= {0};
; 558  : 	DWORD err_cnt=0;
; 559  : 	
; 560  : 	
; 561  : 	for ( i= 0; i< 64; i ++)
; 562  : 	{
; 563  : 	  
; 564  : 	Tx_loopbuf[i] = (4*i+3)<<24| (4*i+2)<<16| (4*i+1)<<8|4*i;
; 565  : 	
; 566  : 	//RETAILMSG( 1, (TEXT("%d TX buffer 0x%x\r\n"),i,Tx_loopbuf[i]));
; 567  : 	Rx_loopbuf[i] = 0;

  00024	e28d3c01	 add         r3, sp, #1, 24
  00028	e2832c01	 add         r2, r3, #1, 24
  0002c	e3a09000	 mov         r9, #0
  00030	e3a0e000	 mov         lr, #0
  00034	e3a05802	 mov         r5, #2, 16
  00038	e3a04c01	 mov         r4, #1, 24
  0003c	e3a06403	 mov         r6, #3, 8
  00040	e3a01000	 mov         r1, #0
  00044		 |$L39630|
  00044	e4831004	 str         r1, [r3], #4
  00048	e1530002	 cmp         r3, r2
  0004c	1afffffc	 bne         |$L39630|
  00050	e3a01801	 mov         r1, #1, 16
  00054	e3811c01	 orr         r1, r1, #1, 24
  00058	e28d2000	 add         r2, sp, #0
  0005c		 |$L39631|
  0005c	e1863004	 orr         r3, r6, r4
  00060	e1833005	 orr         r3, r3, r5
  00064	e183300e	 orr         r3, r3, lr
  00068	e2844b01	 add         r4, r4, #1, 22
  0006c	e78e3002	 str         r3, [lr, +r2]
  00070	e28ee004	 add         lr, lr, #4
  00074	e2866301	 add         r6, r6, #1, 6
  00078	e2855701	 add         r5, r5, #1, 14
  0007c	e1540001	 cmp         r4, r1
  00080	bafffff5	 blt         |$L39631|

; 568  : //	RETAILMSG( 1, (TEXT("%d TX buffer 0x%x\r\n"),i,Tx_loopbuf[i]));
; 569  : 	}
; 570  : 	
; 571  : 	//send 256 bytes
; 572  : 	for(i=0; i<64; i++)

  00084	e28d4000	 add         r4, sp, #0
  00088	e3a05040	 mov         r5, #0x40
  0008c		 |$L39024|

; 573  : 	{
; 574  : //		wrd=ReadWriteDWord(pSpiPhy,0xa55ae77e+i);
; 575  : 		wrd=ReadWriteDWord(pSpiPhy, (DWORD)Tx_loopbuf[i]);

  0008c	e4941004	 ldr         r1, [r4], #4
  00090	e1a00007	 mov         r0, r7
  00094	eb000000	 bl          ReadWriteDWord
  00098	e2555001	 subs        r5, r5, #1
  0009c	1afffffa	 bne         |$L39024|

; 576  : 		
; 577  : 	}
; 578  : 
; 579  : 	Sleep(100);

  000a0	e3a00064	 mov         r0, #0x64
  000a4	eb000000	 bl          Sleep

; 580  : 	//send and receive 256 bytes
; 581  : 	for(i=0; i<64; i++)

  000a8	e3a04000	 mov         r4, #0
  000ac	e28d5000	 add         r5, sp, #0
  000b0	e28d6c01	 add         r6, sp, #1, 24
  000b4		 |$L39028|

; 582  : 	{
; 583  : //		wrd = ReadWriteDWord(pSpiPhy,0xa55ae77e+i);
; 584  : 		wrd=ReadWriteDWord(pSpiPhy, (DWORD)Tx_loopbuf[i]);

  000b4	e7941005	 ldr         r1, [r4, +r5]
  000b8	e1a00007	 mov         r0, r7
  000bc	eb000000	 bl          ReadWriteDWord

; 585  : 		Rx_loopbuf[i] = wrd;

  000c0	e7840006	 str         r0, [r4, +r6]
  000c4	e2844004	 add         r4, r4, #4
  000c8	e3540c01	 cmp         r4, #1, 24
  000cc	bafffff8	 blt         |$L39028|

; 586  : //		RETAILMSG( 1, (TEXT("%d loopBackTest222 get 0x%x\r\n"),i,wrd));
; 587  : 	}
; 588  : 	
; 589  : 	for(i=0; i<64; i++)

  000d0	e3a04000	 mov         r4, #0
  000d4	e28d7c01	 add         r7, sp, #1, 24
  000d8	e28d8000	 add         r8, sp, #0
  000dc		 |$L39032|

; 590  : 	{
; 591  : 			if (Rx_loopbuf[i] != Tx_loopbuf[i])

  000dc	e7975104	 ldr         r5, [r7, +r4, lsl #2]
  000e0	e7986104	 ldr         r6, [r8, +r4, lsl #2]
  000e4	e1550006	 cmp         r5, r6
  000e8	0a000008	 beq         |$L39033|

; 592  : 			{
; 593  : 				err_cnt ++;
; 594  : 				RETAILMSG( 1, (TEXT("loop back error cnt :%d\n"),err_cnt));

  000ec	e59f003c	 ldr         r0, [pc, #0x3C]
  000f0	e2899001	 add         r9, r9, #1
  000f4	e1a01009	 mov         r1, r9
  000f8	eb000000	 bl          NKDbgPrintfW

; 595  : 				RETAILMSG( 1, (TEXT("%d, TX buffer 0x%x, RX buffer 0x%x\r\n"), i, Tx_loopbuf[i], Rx_loopbuf[i]));

  000fc	e59f0028	 ldr         r0, [pc, #0x28]
  00100	e1a03005	 mov         r3, r5
  00104	e1a02006	 mov         r2, r6
  00108	e1a01004	 mov         r1, r4
  0010c	eb000000	 bl          NKDbgPrintfW
  00110		 |$L39033|
  00110	e2844001	 add         r4, r4, #1
  00114	e3540040	 cmp         r4, #0x40
  00118	baffffef	 blt         |$L39032|

; 596  : 			}
; 597  : 	
; 598  : 	
; 599  : 	}
; 600  : 
; 601  : 	return TRUE;

  0011c	e3a00001	 mov         r0, #1

; 602  : }

  00120	e28ddc02	 add         sp, sp, #2, 24
  00124	e8bd43f0	 ldmia       sp!, {r4 - r9, lr}
  00128	e12fff1e	 bx          lr
  0012c		 |$L39650|
  0012c	00000000	 DCD         |??_C@_1EK@CLOADHJK@?$AA?$CF?$AAd?$AA?0?$AA?5?$AAT?$AAX?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAx?$AA?0?$AA?5@|
  00130	00000000	 DCD         |??_C@_1DC@GMHPLEEB@?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAb?$AAa?$AAc?$AAk?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AAc?$AAn?$AAt?$AA?5@|
  00134		 |$M39646|

			 ENDP  ; |loopBackTest2|

	EXPORT	|loopBackTest|

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

  00000			 AREA	 |.pdata$$loopBackTest|, PDATA, SELECTION=5, ASSOC=|.text| { |loopBackTest| } ; comdat associative
|$T39666| DCD	|$L39665|
	DCD	0x40001a01
; Function compile flags: /Ogsy

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

  00000		 |loopBackTest| PROC

; 606  : {

  00000		 |$L39665|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M39663|
  00004	e1a05000	 mov         r5, r0

; 607  : 	int i;
; 608  : 	DWORD wrd;
; 609  : 	
; 610  : 	//send 256 bytes
; 611  : 	for(i=0; i<64; i++)

  00008	e59f6054	 ldr         r6, [pc, #0x54]
  0000c	e3a04000	 mov         r4, #0
  00010		 |$L39043|

; 612  : 	{
; 613  : 		wrd=ReadWriteDWord(pSpiPhy,0xa55ae77e+i);

  00010	e0441006	 sub         r1, r4, r6
  00014	e1a00005	 mov         r0, r5
  00018	eb000000	 bl          ReadWriteDWord
  0001c	e2844001	 add         r4, r4, #1
  00020	e3540040	 cmp         r4, #0x40
  00024	bafffff9	 blt         |$L39043|

; 614  : 		
; 615  : 	}
; 616  : 
; 617  : 	//send and receive 256 bytes
; 618  : 	for(i=0; i<64; i++)

  00028	e3a04000	 mov         r4, #0
  0002c		 |$L39046|

; 619  : 	{
; 620  : 		wrd = ReadWriteDWord(pSpiPhy,0xa55ae77e+i);

  0002c	e0441006	 sub         r1, r4, r6
  00030	e1a00005	 mov         r0, r5
  00034	eb000000	 bl          ReadWriteDWord
  00038	e1a02000	 mov         r2, r0

; 621  : 		RETAILMSG( 1, (TEXT("%d loopBackTest222 get 0x%x\r\n"),i,wrd));

  0003c	e59f001c	 ldr         r0, [pc, #0x1C]
  00040	e1a01004	 mov         r1, r4
  00044	eb000000	 bl          NKDbgPrintfW
  00048	e2844001	 add         r4, r4, #1
  0004c	e3540040	 cmp         r4, #0x40
  00050	bafffff5	 blt         |$L39046|

; 622  : 	}
; 623  : 
; 624  : 	return TRUE;

  00054	e3a00001	 mov         r0, #1

; 625  : }

  00058	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  0005c	e12fff1e	 bx          lr
  00060		 |$L39668|
  00060	00000000	 DCD         |??_C@_1DM@INIOFAAJ@?$AA?$CF?$AAd?$AA?5?$AAl?$AAo?$AAo?$AAp?$AAB?$AAa?$AAc?$AAk?$AAT?$AAe?$AAs?$AAt?$AA2?$AA2?$AA2?$AA?5?$AAg@|
  00064	5aa51882	 DCD         0x5aa51882
  00068		 |$M39664|

			 ENDP  ; |loopBackTest|

	EXPORT	|WriteFWtoStellar|
	EXPORT	|??_C@_1GC@EAMDIMGM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAL?$AAe?$AAn@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EI@BPANDHCA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAE?$AAn?$AAt@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EA@IMHOOLJD@?$AAS?$AAP?$AAI?$AA?$CB?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FE@JDOKHIJM@?$AAS?$AAP?$AAI?$AA?$CB?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAL?$AAe?$AAf?$AAt?$AAO?$AAv?$AAe@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$WriteFWtoStellar|, PDATA, SELECTION=5, ASSOC=|.text| { |WriteFWtoStellar| } ; comdat associative
|$T39685| DCD	|$L39684|
	DCD	0x40002c01

  00000			 AREA	 |.rdata| { |??_C@_1EA@IMHOOLJD@?$AAS?$AAP?$AAI?$AA?$CB?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@IMHOOLJD@?$AAS?$AAP?$AAI?$AA?$CB?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn@| DCB "S"
	DCB	0x0, "P", 0x0, "I", 0x0, "!", 0x0, "W", 0x0, "r", 0x0, "i"
	DCB	0x0, "t", 0x0, "e", 0x0, "F", 0x0, "W", 0x0, " ", 0x0, ":"
	DCB	0x0, "E", 0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "i"
	DCB	0x0, "n", 0x0, "g", 0x0, " ", 0x0, "P", 0x0, "h", 0x0, "a"
	DCB	0x0, "z", 0x0, "e", 0x0, " ", 0x0, "2", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FE@JDOKHIJM@?$AAS?$AAP?$AAI?$AA?$CB?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAL?$AAe?$AAf?$AAt?$AAO?$AAv?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FE@JDOKHIJM@?$AAS?$AAP?$AAI?$AA?$CB?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAL?$AAe?$AAf?$AAt?$AAO?$AAv?$AAe@| DCB "S"
	DCB	0x0, "P", 0x0, "I", 0x0, "!", 0x0, "W", 0x0, "r", 0x0, "i"
	DCB	0x0, "t", 0x0, "e", 0x0, "F", 0x0, "W", 0x0, " ", 0x0, ":"
	DCB	0x0, "L", 0x0, "e", 0x0, "f", 0x0, "t", 0x0, "O", 0x0, "v"
	DCB	0x0, "e", 0x0, "r", 0x0, " ", 0x0, "D", 0x0, "a", 0x0, "t"
	DCB	0x0, "a", 0x0, " ", 0x0, "L", 0x0, "e", 0x0, "n", 0x0, " "
	DCB	0x0, "%", 0x0, "d", 0x0, " ", 0x0, "B", 0x0, "y", 0x0, "t"
	DCB	0x0, "e", 0x0, "s", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1GC@EAMDIMGM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAL?$AAe?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GC@EAMDIMGM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAL?$AAe?$AAn@| DCB "S"
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
	DCB	0x0, " ", 0x0, "W", 0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e"
	DCB	0x0, "F", 0x0, "W", 0x0, " ", 0x0, ":", 0x0, "L", 0x0, "e"
	DCB	0x0, "n", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, " ", 0x0, "b"
	DCB	0x0, "y", 0x0, "t", 0x0, "e", 0x0, "s", 0x0, " ", 0x0, "P"
	DCB	0x0, "a", 0x0, "d", 0x0, "d", 0x0, "i", 0x0, "n", 0x0, "g"
	DCB	0x0, " ", 0x0, "%", 0x0, "d", 0x0, " ", 0x0, "B", 0x0, "y"
	DCB	0x0, "t", 0x0, "e", 0x0, "s", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EI@BPANDHCA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAE?$AAn?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EI@BPANDHCA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AAF?$AAW?$AA?5?$AA?3?$AAE?$AAn?$AAt@| DCB "S"
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
	DCB	0x0, " ", 0x0, "W", 0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e"
	DCB	0x0, "F", 0x0, "W", 0x0, " ", 0x0, ":", 0x0, "E", 0x0, "n"
	DCB	0x0,

⌨️ 快捷键说明

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