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

📄 ether.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 3 页
字号:
  000c4	e5832008	 str       r2, [r3, #8]
  000c8	e28d1028	 add       r1, sp, #0x28
  000cc	e3a02010	 mov       r2, #0x10
  000d0	eb000000	 bl        memcpy

; 278  : 
; 279  :     //
; 280  :     //pDriverGlobals->eth.etherFlags = LDRFL_USE_EDBG | LDRFL_ADDR_VALID | LDRFL_JUMPIMG;
; 281  :     //
; 282  :     if (pDHCPLeaseTime)
; 283  :         pDriverGlobals->eth.DHCPLeaseTime = *pDHCPLeaseTime;	// DHCP

  000d4	e59d001c	 ldr       r0, [sp, #0x1C]
  000d8	e3a03b22	 mov       r3, #0x22, 22
  000dc	e3833058	 orr       r3, r3, #0x58
  000e0	e5830000	 str       r0, [r3]

; 284  :     else
; 285  :         pDriverGlobals->eth.DHCPLeaseTime = 0;			// Static IP
; 286  : 
; 287  :     return(fGotJumpImg? BL_JUMP : BL_DOWNLOAD);

  000e4	e59d1020	 ldr       r1, [sp, #0x20]
  000e8	e3510000	 cmp       r1, #0
  000ec	01a05006	 moveq     r5, r6
  000f0		 |$L37566|

; 269  :     {
; 270  :         return(BL_ERROR);

  000f0	e1a00005	 mov       r0, r5

; 288  : }

  000f4	e28dd038	 add       sp, sp, #0x38
  000f8	e8bd4070	 ldmia     sp!, {r4 - r6, lr}
  000fc	e12fff1e	 bx        lr
  00100		 |$L37714|
  00100	00000000	 DCD       |??_C@_0BP@OBGL@INFO?3?5Using?5device?5name?3?5?8?$CFs?8?6?$AA@|
  00104	00000000	 DCD       |MyAddr|
  00108	00424f52	 DCD       0x424f52
  0010c		 |$M37711|

			 ENDP  ; |OEMEthPreDownload|

	EXPORT	|OEMEthGetSecs|
	IMPORT	|GetSystemTimeInUSec|

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

  00000			 AREA	 |.pdata$$OEMEthGetSecs|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthGetSecs| } ; comdat associative
|$T37720| DCD	|OEMEthGetSecs|
	DCD	0x40000701
; Function compile flags: /Ogsy

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

  00000		 |OEMEthGetSecs| PROC

; 298  : {

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

; 299  :     DWORD dwReturnValue;
; 300  : 
; 301  : 
; 302  :     //
; 303  :     // Debug timer.
; 304  :     //
; 305  :     dwReturnValue = (DWORD)(GetSystemTimeInUSec()>>(ULONGLONG)20);

  00004	eb000000	 bl        GetSystemTimeInUSec
  00008	e1a03000	 mov       r3, r0
  0000c	e1a00601	 mov       r0, r1, lsl #12
  00010	e1800a23	 orr       r0, r0, r3, lsr #20

; 306  :     return(dwReturnValue);
; 307  : }

  00014	e8bd4000	 ldmia     sp!, {lr}
  00018	e12fff1e	 bx        lr
  0001c		 |$M37719|

			 ENDP  ; |OEMEthGetSecs|

	EXPORT	|SC_WriteDebugLED|

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

  00000			 AREA	 |.pdata$$SC_WriteDebugLED|, PDATA, SELECTION=5, ASSOC=|.text| { |SC_WriteDebugLED| } ; comdat associative
|$T37726| DCD	|SC_WriteDebugLED|
	DCD	0x40000100
; Function compile flags: /Ogsy

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

  00000		 |SC_WriteDebugLED| PROC

; 312  : {

  00000		 |$M37724|

; 313  :     return;
; 314  : }

  00000	e12fff1e	 bx        lr
  00004		 |$M37725|

			 ENDP  ; |SC_WriteDebugLED|

	IMPORT	|strcpy|
	IMPORT	|strlen|

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

  00000			 AREA	 |.pdata$$CreateDeviceName|, PDATA, SELECTION=5, ASSOC=|.text| { |CreateDeviceName| } ; comdat associative
|$T37737| DCD	|CreateDeviceName|
	DCD	0x40001501
; Function compile flags: /Ogsy

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

  00000		 |CreateDeviceName| PROC

; 375  : {

  00000	e92d4070	 stmdb     sp!, {r4 - r6, lr}
  00004		 |$M37735|
  00004	e1a05000	 mov       r5, r0
  00008	e1a06001	 mov       r6, r1
  0000c	e1a04002	 mov       r4, r2

; 376  :     DWORD dwUpperMAC = UpperDWFromMAC(pMyAddr);

  00010	eb000000	 bl        UpperDWFromMAC

; 377  : 
; 378  :     strcpy(szBuf, szPlatformString);

  00014	e1a01004	 mov       r1, r4
  00018	e1a00006	 mov       r0, r6
  0001c	eb000000	 bl        strcpy

; 379  :     szBuf += strlen(szBuf);    

  00020	e1a00006	 mov       r0, r6
  00024	eb000000	 bl        strlen
  00028	e1a03000	 mov       r3, r0

; 380  :     itoa10(((pMyAddr->wMAC[2]>>8) | ((pMyAddr->wMAC[2] & 0x00ff) << 8)), szBuf);

  0002c	e1d500b8	 ldrh      r0, [r5, #8]
  00030	e0831006	 add       r1, r3, r6
  00034	e1a04800	 mov       r4, r0, lsl #16
  00038	e1a02824	 mov       r2, r4, lsr #16
  0003c	e20200ff	 and       r0, r2, #0xFF
  00040	e1a02400	 mov       r2, r0, lsl #8
  00044	e1820c24	 orr       r0, r2, r4, lsr #24
  00048	eb000000	 bl        itoa10

; 381  : }

  0004c	e8bd4070	 ldmia     sp!, {r4 - r6, lr}
  00050	e12fff1e	 bx        lr
  00054		 |$M37736|

			 ENDP  ; |CreateDeviceName|


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

  00000			 AREA	 |.pdata$$itoa10|, PDATA, SELECTION=5, ASSOC=|.text| { |itoa10| } ; comdat associative
|$T37761| DCD	|itoa10|
	DCD	0x40002901
; Function compile flags: /Ogsy

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

  00000		 |itoa10| PROC

; 321  : {

  00000	e92d40f0	 stmdb     sp!, {r4 - r7, lr}
  00004		 |$M37759|
  00004	e1a04000	 mov       r4, r0
  00008	e1a06001	 mov       r6, r1

; 322  :     int i = 0; 

  0000c	e3a07000	 mov       r7, #0

; 323  : 
; 324  :     // Get absolute value of number
; 325  :     unsigned int val = (unsigned int)((n < 0) ? -n : n);

  00010	e3540000	 cmp       r4, #0
  00014	e2642000	 rsb       r2, r4, #0
  00018	e1a05007	 mov       r5, r7
  0001c	51a02004	 movpl     r2, r4
  00020		 |$L37603|

; 326  : 
; 327  :     // Extract digits in reverse order
; 328  :     do {
; 329  :         s[i++] = (val % 10) + '0';

  00020	e59f0078	 ldr       r0, [pc, #0x78]
  00024	e0810092	 umull     r0, r1, r2, r0
  00028	e1a031a1	 mov       r3, r1, lsr #3
  0002c	e0830103	 add       r0, r3, r3, lsl #2
  00030	e0421080	 sub       r1, r2, r0, lsl #1
  00034	e2812030	 add       r2, r1, #0x30
  00038	e1a00c02	 mov       r0, r2, lsl #24
  0003c	e1a01c40	 mov       r1, r0, asr #24
  00040	e7c51006	 strb      r1, [r5, +r6]

; 330  :     } while (val /= 10);

  00044	e1b02003	 movs      r2, r3
  00048	e2855001	 add       r5, r5, #1
  0004c	1afffff3	 bne       |$L37603|

; 331  : 
; 332  :     // Add sign if number negative
; 333  :     if (n < 0) s[i++] = '-';

  00050	e3540000	 cmp       r4, #0
  00054	43a0002d	 movmi     r0, #0x2D
  00058	47c50006	 strmib    r0, [r5, +r6]
  0005c	42855001	 addmi     r5, r5, #1

; 334  : 
; 335  :     s[i--] = '\0';

  00060	e2454001	 sub       r4, r5, #1
  00064	e7c57006	 strb      r7, [r5, +r6]

; 336  : 
; 337  :     // Reverse string
; 338  :     for (n = 0; n < i; n++, i--) {

  00068	e3540000	 cmp       r4, #0
  0006c	da000009	 ble       |$L37609|
  00070		 |$L37607|
  00070	e1a02007	 mov       r2, r7
  00074	e1a01004	 mov       r1, r4

; 339  :         char swap = s[n];

  00078	e1b230d6	 ldrsb     r3, [r2, +r6]!

; 340  :         s[n] = s[i];

  0007c	e1b100d6	 ldrsb     r0, [r1, +r6]!
  00080	e2877001	 add       r7, r7, #1
  00084	e2444001	 sub       r4, r4, #1
  00088	e1570004	 cmp       r7, r4
  0008c	e5c20000	 strb      r0, [r2]

; 341  :         s[i] = swap;

  00090	e5c13000	 strb      r3, [r1]
  00094	bafffff5	 blt       |$L37607|
  00098		 |$L37609|

; 342  :     }
; 343  : }

  00098	e8bd40f0	 ldmia     sp!, {r4 - r7, lr}
  0009c	e12fff1e	 bx        lr
  000a0		 |$L37763|
  000a0	cccccccd	 DCD       0xcccccccd
  000a4		 |$M37760|

			 ENDP  ; |itoa10|


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

  00000			 AREA	 |.pdata$$UpperDWFromMAC|, PDATA, SELECTION=5, ASSOC=|.text| { |UpperDWFromMAC| } ; comdat associative
|$T37770| DCD	|UpperDWFromMAC|
	DCD	0x40000f01
; Function compile flags: /Ogsy

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

  00000		 |UpperDWFromMAC| PROC

; 346  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37768|
  00004	e1a02000	 mov       r2, r0

; 347  :     DWORD ret;
; 348  : 
; 349  :     //
; 350  :     // The WORDs in wMAC field are in net order, so we need to do some
; 351  :     // serious shifting around.
; 352  :     // A hex ethernet address of 12 34 56 78 9a bc is stored in wMAC array as
; 353  :     // wMAC[0] = 3412, wMAC[1] = 7856, wMAC[2] = bc9a.
; 354  :     // The 4 byte return value should look like 0x00123456
; 355  :     //
; 356  :     ret = (pAddr->wMAC[0] & 0x00ff) << 16;
; 357  :     ret |= pAddr->wMAC[0] & 0xff00;
; 358  :     ret |= pAddr->wMAC[1] & 0x00ff;
; 359  :     return ret;

  00008	e1d200b4	 ldrh      r0, [r2, #4]
  0000c	e1a01800	 mov       r1, r0, lsl #16
  00010	e1d200b6	 ldrh      r0, [r2, #6]
  00014	e1a04821	 mov       r4, r1, lsr #16
  00018	e1a01800	 mov       r1, r0, lsl #16
  0001c	e1a02821	 mov       r2, r1, lsr #16
  00020	e20200ff	 and       r0, r2, #0xFF
  00024	e20430ff	 and       r3, r4, #0xFF
  00028	e1803803	 orr       r3, r0, r3, lsl #16
  0002c	e2041cff	 and       r1, r4, #0xFF, 24
  00030	e1830001	 orr       r0, r3, r1

; 360  : }

  00034	e8bd4010	 ldmia     sp!, {r4, lr}
  00038	e12fff1e	 bx        lr
  0003c		 |$M37769|

			 ENDP  ; |UpperDWFromMAC|

	END

⌨️ 快捷键说明

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