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

📄 spihw.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
  001e4	e3a02000	 mov         r2, #0
  001e8		 |$L38924|

; 405  : 		return FALSE;

  001e8	e1a00002	 mov         r0, r2

; 465  : }

  001ec	e28dd010	 add         sp, sp, #0x10
  001f0	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  001f4	e12fff1e	 bx          lr
  001f8		 |$L39561|
  001f8	00000000	 DCD         |??_C@_1II@GNDKDFJK@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@|
  001fc	00000000	 DCD         |useSSPPort|
  00200	00000000	 DCD         |??_C@_1CE@MPDJICKO@?$AAD?$AAM?$AAA?$AA_?$AAR?$AAe?$AAm?$AAo?$AAv?$AAe?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@|
  00204	00000000	 DCD         |??_C@_1CE@PKEIJDNP@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAo?$AAn?$AAf?$AAi?$AAg?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@|
  00208	00000000	 DCD         |??_C@_1CC@PDLHBDMG@?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@|
  0020c	00000000	 DCD         |??_C@_1IG@CPCFIGAI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@|
  00210	00000000	 DCD         |??_C@_1JC@FGCOOMKG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@|
  00214	00000000	 DCD         |??_C@_1HK@GOKELIML@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@|
  00218		 |$M39557|

			 ENDP  ; |activateDMAService|


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

  00000			 AREA	 |.pdata$$deactivateDMAService|, PDATA, SELECTION=5, ASSOC=|.text| { |deactivateDMAService| } ; comdat associative
|$T39570| DCD	|$L39569|
	DCD	0x40001c01
; Function compile flags: /Ogsy

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

  00000		 |deactivateDMAService| PROC

; 469  : {

  00000		 |$L39569|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M39567|
  00004	e1a04000	 mov         r4, r0

; 470  : 	if (pSpiPhy->dmaService != NULL)

  00008	e5943068	 ldr         r3, [r4, #0x68]
  0000c	e1b02003	 movs        r2, r3
  00010	0a000013	 beq         |$L38970|

; 471  : 	{
; 472  : 		if (pSpiPhy->dmaService->rxDmaDevice)

  00014	e5923004	 ldr         r3, [r2, #4]
  00018	e1b00003	 movs        r0, r3

; 473  : 			pSpiPhy->dmaService->dmaRemoveChannel(pSpiPhy->dmaService->rxDmaDevice);

  0001c	15923014	 ldrne       r3, [r2, #0x14]
  00020	11a0e00f	 movne       lr, pc
  00024	112fff13	 bxne        r3

; 474  : 		if (pSpiPhy->dmaService->txDmaDevice)

  00028	e5942068	 ldr         r2, [r4, #0x68]
  0002c	e5923008	 ldr         r3, [r2, #8]
  00030	e1b00003	 movs        r0, r3

; 475  : 			pSpiPhy->dmaService->dmaRemoveChannel(pSpiPhy->dmaService->txDmaDevice);

  00034	15923014	 ldrne       r3, [r2, #0x14]
  00038	11a0e00f	 movne       lr, pc
  0003c	112fff13	 bxne        r3

; 476  : 		if (pSpiPhy->dmaService->hdl)

  00040	e5942068	 ldr         r2, [r4, #0x68]
  00044	e5923000	 ldr         r3, [r2]
  00048	e3530000	 cmp         r3, #0

; 477  : 			FreeLibrary(pSpiPhy->dmaService->hdl);

  0004c	11a00003	 movne       r0, r3
  00050	1b000000	 blne        FreeLibrary

; 478  : 		LocalFree(pSpiPhy->dmaService);

  00054	e5940068	 ldr         r0, [r4, #0x68]
  00058	eb000000	 bl          LocalFree

; 479  : 		pSpiPhy->dmaService = NULL;

  0005c	e3a03000	 mov         r3, #0
  00060	e5843068	 str         r3, [r4, #0x68]
  00064		 |$L38970|

; 480  : 	}
; 481  : 	return TRUE;

  00064	e3a00001	 mov         r0, #1

; 482  : }

  00068	e8bd4010	 ldmia       sp!, {r4, lr}
  0006c	e12fff1e	 bx          lr
  00070		 |$M39568|

			 ENDP  ; |deactivateDMAService|

	EXPORT	|SpiRxIST|
	IMPORT	|InterruptDone|
	IMPORT	|WaitForSingleObject|

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

  00000			 AREA	 |.pdata$$SpiRxIST|, PDATA, SELECTION=5, ASSOC=|.text| { |SpiRxIST| } ; comdat associative
|$T39584| DCD	|$L39583|
	DCD	0x40001701
; Function compile flags: /Ogsy

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

  00000		 |SpiRxIST| PROC

; 486  : {

  00000		 |$L39583|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M39581|
  00004	e1a04000	 mov         r4, r0

; 487  : 	PSPIPHY pSpiPhy = (PSPIPHY)pArg;
; 488  : 
; 489  : 	pSpiPhy->RxInterruptCnt = 0;
; 490  : 	while (1)
; 491  : 	{
; 492  : 		WaitForSingleObject(pSpiPhy->SmsInterruptEvent,INFINITE);

  00008	e3a03000	 mov         r3, #0
  0000c	e5843080	 str         r3, [r4, #0x80]

; 493  : 		if (pSpiPhy->drvActive == FALSE)

  00010	ea000009	 b           |$L39580|
  00014		 |$L38982|

; 494  : 		{
; 495  : 			return;
; 496  : 		}
; 497  : 		pSpiPhy->RxInterruptCnt++;		

  00014	e5943080	 ldr         r3, [r4, #0x80]

; 498  : 		if (pSpiPhy->InterruptCallback)

  00018	e5942098	 ldr         r2, [r4, #0x98]
  0001c	e2833001	 add         r3, r3, #1
  00020	e3520000	 cmp         r2, #0

; 499  : 			pSpiPhy->InterruptCallback(pSpiPhy->intrContext);

  00024	1594008c	 ldrne       r0, [r4, #0x8C]
  00028	e5843080	 str         r3, [r4, #0x80]
  0002c	11a0e00f	 movne       lr, pc
  00030	112fff12	 bxne        r2

; 500  : 		
; 501  : 		InterruptDone(pSpiPhy->spiSysIntr);

  00034	e594007c	 ldr         r0, [r4, #0x7C]
  00038	eb000000	 bl          InterruptDone
  0003c		 |$L39580|
  0003c	e5940078	 ldr         r0, [r4, #0x78]
  00040	e3e01000	 mvn         r1, #0
  00044	eb000000	 bl          WaitForSingleObject
  00048	e5943084	 ldr         r3, [r4, #0x84]
  0004c	e3530000	 cmp         r3, #0
  00050	1affffef	 bne         |$L38982|

; 502  : 		
; 503  : 	}
; 504  : }

  00054	e8bd4010	 ldmia       sp!, {r4, lr}
  00058	e12fff1e	 bx          lr
  0005c		 |$M39582|

			 ENDP  ; |SpiRxIST|

	EXPORT	|loopBackTest1|
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	IMPORT	|Sleep|
	IMPORT	|memset|

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

  00000			 AREA	 |.pdata$$loopBackTest1|, PDATA, SELECTION=5, ASSOC=|.text| { |loopBackTest1| } ; comdat associative
|$T39617| DCD	|$L39616|
	DCD	0x40005002

  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_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@| DCB "l"
	DCB	0x0, "o", 0x0, "o", 0x0, "p", 0x0, " ", 0x0, "b", 0x0, "a"
	DCB	0x0, "c", 0x0, "k", 0x0, " ", 0x0, "e", 0x0, "r", 0x0, "r"
	DCB	0x0, "o", 0x0, "r", 0x0, " ", 0x0, "c", 0x0, "n", 0x0, "t"
	DCB	0x0, " ", 0x0, ":", 0x0, "%", 0x0, "d", 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_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@| DCB "%"
	DCB	0x0, "d", 0x0, " ", 0x0, "l", 0x0, "o", 0x0, "o", 0x0, "p"
	DCB	0x0, "B", 0x0, "a", 0x0, "c", 0x0, "k", 0x0, "T", 0x0, "e"
	DCB	0x0, "s", 0x0, "t", 0x0, "2", 0x0, "2", 0x0, "2", 0x0, " "
	DCB	0x0, "g", 0x0, "e", 0x0, "t", 0x0, " ", 0x0, "0", 0x0, "x"
	DCB	0x0, "%", 0x0, "x", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |loopBackTest1| PROC

; 508  : 	{

  00000		 |$L39616|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004	e24ddc02	 sub         sp, sp, #2, 24
  00008		 |$M39614|
  00008	e1a07000	 mov         r7, r0

; 509  : 		int i;
; 510  : 		DWORD wrd;
; 511  : 		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

; 512  : 		DWORD  Rx_loopbuf[64]= {0};
; 513  : 		DWORD err_cnt=0;
; 514  : 		for ( i= 0; i< 64; i ++)
; 515  : 		{
; 516  : 		Tx_loopbuf[i] = (4*i+3)<<12| (4*i+2)<<8| (4*i+1)<<4|4*i;
; 517  : 		Rx_loopbuf[i] = 0;

  00024	e28d3c01	 add         r3, sp, #1, 24
  00028	e283ec01	 add         lr, r3, #1, 24
  0002c	e3a08000	 mov         r8, #0
  00030	e3a02000	 mov         r2, #0
  00034	e3a04010	 mov         r4, #0x10
  00038	e3a05c02	 mov         r5, #2, 24
  0003c	e3a01a03	 mov         r1, #3, 20
  00040	e3a00000	 mov         r0, #0
  00044		 |$L39597|
  00044	e4830004	 str         r0, [r3], #4
  00048	e153000e	 cmp         r3, lr
  0004c	1afffffc	 bne         |$L39597|
  00050	e3a00601	 mov         r0, #1, 12
  00054	e3800a03	 orr         r0, r0, #3, 20
  00058	e28de000	 add         lr, sp, #0
  0005c		 |$L39598|
  0005c	e1813005	 orr         r3, r1, r5
  00060	e1833004	 orr         r3, r3, r4
  00064	e1833002	 orr         r3, r3, r2
  00068	e2811901	 add         r1, r1, #1, 18
  0006c	e782300e	 str         r3, [r2, +lr]
  00070	e2822004	 add         r2, r2, #4
  00074	e2855b01	 add         r5, r5, #1, 22
  00078	e2844040	 add         r4, r4, #0x40
  0007c	e1510000	 cmp         r1, r0
  00080	bafffff5	 blt         |$L39598|

; 518  : 		}
; 519  : 		//send 256 bytes
; 520  : 		for(i=0; i<64; i++)

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

; 521  : 		{
; 522  : 	//		wrd=ReadWriteDWord(pSpiPhy,0xa55ae77e+i);
; 523  : 			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         |$L38998|

; 524  : 			
; 525  : 		}
; 526  : 	    Sleep(100);	

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

; 527  : 		//send and receive 256 bytes
; 528  : 		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		 |$L39002|

; 529  : 		{
; 530  : 	//		wrd = ReadWriteDWord(pSpiPhy,0xa55ae77e+i);
; 531  : 			wrd=ReadWriteDWord(pSpiPhy, (DWORD)Tx_loopbuf[i]);

  000b4	e7951104	 ldr         r1, [r5, +r4, lsl #2]
  000b8	e1a00007	 mov         r0, r7
  000bc	eb000000	 bl          ReadWriteDWord
  000c0	e1a03000	 mov         r3, r0

; 532  : 			Rx_loopbuf[i] = wrd;
; 533  : 			RETAILMSG( 1, (TEXT("%d loopBackTest222 get 0x%x\r\n"),i,wrd));

  000c4	e59f0070	 ldr         r0, [pc, #0x70]
  000c8	e1a02003	 mov         r2, r3
  000cc	e1a01004	 mov         r1, r4
  000d0	e7863104	 str         r3, [r6, +r4, lsl #2]
  000d4	eb000000	 bl          NKDbgPrintfW
  000d8	e2844001	 add         r4, r4, #1
  000dc	e3540040	 cmp         r4, #0x40
  000e0	bafffff3	 blt         |$L39002|

; 534  : 		}
; 535  : 			
; 536  : 		for(i=0; i<64; i++)

  000e4	e3a05000	 mov         r5, #0
  000e8	e28d6c01	 add         r6, sp, #1, 24
  000ec	e28d7000	 add         r7, sp, #0
  000f0		 |$L39007|

; 537  : 		{
; 538  : 				RETAILMSG( 1, (TEXT("%d loopBackTest222 get 0x%x\r\n"),i, Rx_loopbuf[i]));

  000f0	e7964105	 ldr         r4, [r6, +r5, lsl #2]
  000f4	e59f0040	 ldr         r0, [pc, #0x40]
  000f8	e1a01005	 mov         r1, r5
  000fc	e1a02004	 mov         r2, r4
  00100	eb000000	 bl          NKDbgPrintfW

; 539  : 				
; 540  : 				if (Rx_loopbuf[i] != Tx_loopbuf[i])

  00104	e7973105	 ldr         r3, [r7, +r5, lsl #2]
  00108	e1540003	 cmp         r4, r3

; 541  : 				{
; 542  : 					err_cnt ++;
; 543  : 					RETAILMSG( 1, (TEXT("loop back error cnt :%d\n"),err_cnt));

⌨️ 快捷键说明

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