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

📄 parallel.cod

📁 Ep93XX TionProV2 BSP
💻 COD
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237 

	TTL	C:\WINCE500\PLATFORM\Ep93xx\Src\Bootloader\Common\.\parallel.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|BootHeader| [ DATA ]
	EXPORT	|BootTail| [ DATA ]

  00000			 AREA	 |.rdata|, DATA, READONLY
|BootTail| DCB	0x5a
	DCB	0xa5
	DCB	0xa
	DCB	0x1a
|BootHeader| DCB 0xaa
	DCB	0x55
	DCB	0x55
	DCB	0xaa
	DCB	0x0
	DCB	0x0
	%	6
|EdbgVendorIds| DCW 0x0
	DCW	0x0
	DCD	0x4033
	DCB	0x1
	DCB	0x0
	DCB	"AD", 0x0
	%	3
	DCW	0x1050
	DCW	0x940
	DCD	0x4005
	DCB	0x1
	DCB	0x0
	DCB	"LS", 0x0
	%	3
	DCW	0x1050
	DCW	0x940
	DCD	0x2078
	DCB	0x1
	DCB	0x0
	DCB	"LS", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8029
	DCD	0xc0f0
	DCB	0x1
	DCB	0x0
	DCB	"KS", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8129
	DCD	0x0
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8139
	DCD	0x900b
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8139
	DCD	0xd0c9
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8139
	DCD	0xe04c
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x1186
	DCW	0x1300
	DCD	0x50ba
	DCB	0x4
	DCB	0x0
	DCB	"DL", 0x0
	%	3
	DCW	0x100b
	DCW	0x20
	DCD	0xa0cc
	DCB	0x5
	DCB	0x0
	DCB	"NG", 0x0
	%	3
	DCW	0x10b7
	DCW	0x9050
	DCD	0x6008
	DCB	0x6
	DCB	0x0
	DCB	"3C", 0x0
	%	3
	DCW	0x10b7
	DCW	0x9200
	DCD	0x476
	DCB	0x6
	DCB	0x0
	DCB	"3C", 0x0
	%	3
	DCW	0x8086
	DCW	0x1039
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x103a
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x1051
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x1229
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x2449
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	EXPORT	|ParallelPortRead|
	IMPORT	|OEMParallelPortGetByte|
; File c:\wince500\platform\ep93xx\src\bootloader\common\parallel.c

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

  00000			 AREA	 |.pdata$$ParallelPortRead|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPortRead| } ; comdat associative
|$T38114| DCD	|$L38113|
	DCD	0x40001f04
; Function compile flags: /Ods

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

  00000		 |ParallelPortRead| PROC

; 72   : {

  00000		 |$L38113|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0003	 stmdb       sp!, {r0, r1}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd00c	 sub         sp, sp, #0xC
  00010		 |$M38111|
  00010		 |$L38051|

; 73   :     //for(;;) { OEMParallelPortGetByte();}
; 74   : 
; 75   :     int result;
; 76   :     while (cb && (result=OEMParallelPortGetByte()) != -1) {

  00010	e59d3014	 ldr         r3, [sp, #0x14]
  00014	e3530000	 cmp         r3, #0
  00018	0a000011	 beq         |$L38052|
  0001c	eb000000	 bl          OEMParallelPortGetByte
  00020	e58d0008	 str         r0, [sp, #8]
  00024	e59d3008	 ldr         r3, [sp, #8]
  00028	e58d3000	 str         r3, [sp]
  0002c	e59d3000	 ldr         r3, [sp]
  00030	e3730001	 cmn         r3, #1
  00034	0a00000a	 beq         |$L38052|

; 77   :         *pByteReceived++= (unsigned char)result;

  00038	e59d3000	 ldr         r3, [sp]
  0003c	e20320ff	 and         r2, r3, #0xFF
  00040	e59d3018	 ldr         r3, [sp, #0x18]
  00044	e5c32000	 strb        r2, [r3]
  00048	e59d3018	 ldr         r3, [sp, #0x18]
  0004c	e2833001	 add         r3, r3, #1
  00050	e58d3018	 str         r3, [sp, #0x18]

; 78   :         cb--;

  00054	e59d3014	 ldr         r3, [sp, #0x14]
  00058	e2433001	 sub         r3, r3, #1
  0005c	e58d3014	 str         r3, [sp, #0x14]

; 79   :     }

  00060	eaffffea	 b           |$L38051|
  00064		 |$L38052|

; 80   :     return cb;

  00064	e59d3014	 ldr         r3, [sp, #0x14]
  00068	e58d3004	 str         r3, [sp, #4]
  0006c	e59d0004	 ldr         r0, [sp, #4]

; 81   : }

  00070	e28dd00c	 add         sp, sp, #0xC
  00074	e89d6000	 ldmia       sp, {sp, lr}
  00078	e12fff1e	 bx          lr
  0007c		 |$M38112|

			 ENDP  ; |ParallelPortRead|

	EXPORT	|ParallelPortWrite|
	IMPORT	|OEMParallelPortSendByte|

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

  00000			 AREA	 |.pdata$$ParallelPortWrite|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPortWrite| } ; comdat associative
|$T38122| DCD	|$L38121|
	DCD	0x40001904
; Function compile flags: /Ods

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

  00000		 |ParallelPortWrite| PROC

; 111  : {

  00000		 |$L38121|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0003	 stmdb       sp!, {r0, r1}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd008	 sub         sp, sp, #8
  00010		 |$M38119|
  00010		 |$L38061|

; 112  :     while (cb--)

  00010	e59d3014	 ldr         r3, [sp, #0x14]
  00014	e3530000	 cmp         r3, #0
  00018	e59d3014	 ldr         r3, [sp, #0x14]
  0001c	e2433001	 sub         r3, r3, #1
  00020	e58d3014	 str         r3, [sp, #0x14]
  00024	0a000008	 beq         |$L38062|

; 113  :         OEMParallelPortSendByte(*pByteSend++);

  00028	e59d3010	 ldr         r3, [sp, #0x10]
  0002c	e5d33000	 ldrb        r3, [r3]
  00030	e5cd3004	 strb        r3, [sp, #4]
  00034	e5dd0004	 ldrb        r0, [sp, #4]
  00038	eb000000	 bl          OEMParallelPortSendByte
  0003c	e59d3010	 ldr         r3, [sp, #0x10]
  00040	e2833001	 add         r3, r3, #1
  00044	e58d3010	 str         r3, [sp, #0x10]
  00048	eafffff0	 b           |$L38061|
  0004c		 |$L38062|

; 114  :     return cb;

  0004c	e59d3014	 ldr         r3, [sp, #0x14]
  00050	e58d3000	 str         r3, [sp]
  00054	e59d0000	 ldr         r0, [sp]

; 115  : }

  00058	e28dd008	 add         sp, sp, #8
  0005c	e89d6000	 ldmia       sp, {sp, lr}
  00060	e12fff1e	 bx          lr
  00064		 |$M38120|

			 ENDP  ; |ParallelPortWrite|

	EXPORT	|ParallelPreDownload|
	EXPORT	|??_C@_01LFCBOECM@?4?$AA@| [ DATA ]	; `string'
	IMPORT	|EdbgOutputDebugString|

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

  00000			 AREA	 |.pdata$$ParallelPreDownload|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPreDownload| } ; comdat associative
|$T38130| DCD	|$L38129|
	DCD	0x40008602

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

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

  00000		 |ParallelPreDownload| PROC

; 126  : {

  00000		 |$L38129|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd034	 sub         sp, sp, #0x34
  00008		 |$M38127|

; 127  :     unsigned char * pDestByte;
; 128  :     unsigned int    chksum;
; 129  :     unsigned int    uiTemp;
; 130  :     int             bootType;
; 131  :     unsigned        len;
; 132  :     int             i;
; 133  :     int             nReturn=0;

  00008	e3a03000	 mov         r3, #0
  0000c	e58d3024	 str         r3, [sp, #0x24]

; 134  :     unsigned char   ParallelSendBuffer[2 + sizeof(int) + BOOT_TAIL_SIZE];
; 135  : 
; 136  :     EdbgOutputDebugString(".");

  00010	e59f01fc	 ldr         r0, [pc, #0x1FC]
  00014	eb000000	 bl          EdbgOutputDebugString

; 137  :     //
; 138  :     // Prepare boot packet
; 139  :     //
; 140  :     pDestByte = ParallelSendBuffer;

  00018	e28d3018	 add         r3, sp, #0x18
  0001c	e58d3004	 str         r3, [sp, #4]

; 141  :     for (i = 0; i < BOOT_HEADER_SIZE; i++) 

  00020	e3a03000	 mov         r3, #0
  00024	e58d3008	 str         r3, [sp, #8]
  00028	ea000002	 b           |$L38076|
  0002c		 |$L38077|
  0002c	e59d3008	 ldr         r3, [sp, #8]
  00030	e2833001	 add         r3, r3, #1
  00034	e58d3008	 str         r3, [sp, #8]
  00038		 |$L38076|
  00038	e59d3008	 ldr         r3, [sp, #8]
  0003c	e3530006	 cmp         r3, #6
  00040	2a000009	 bcs         |$L38078|

; 142  :     {
; 143  :         *pDestByte++ = BootHeader[i];

  00044	e59f21c4	 ldr         r2, [pc, #0x1C4]
  00048	e59d3008	 ldr         r3, [sp, #8]
  0004c	e0823003	 add         r3, r2, r3
  00050	e5d32000	 ldrb        r2, [r3]
  00054	e59d3004	 ldr         r3, [sp, #4]
  00058	e5c32000	 strb        r2, [r3]
  0005c	e59d3004	 ldr         r3, [sp, #4]
  00060	e2833001	 add         r3, r3, #1
  00064	e58d3004	 str         r3, [sp, #4]

; 144  :     }

  00068	eaffffef	 b           |$L38077|
  0006c		 |$L38078|

; 145  :     
; 146  :     chksum = 0;

  0006c	e3a03000	 mov         r3, #0
  00070	e58d300c	 str         r3, [sp, #0xC]

; 147  :     len = sizeof(unsigned int) + 5;

  00074	e3a03009	 mov         r3, #9
  00078	e58d3010	 str         r3, [sp, #0x10]

; 148  :     
; 149  :     bootType = BOOT_TYPE; 

  0007c	e3e03000	 mvn         r3, #0
  00080	e58d3028	 str         r3, [sp, #0x28]

; 150  :     
; 151  :     uiTemp = len;

  00084	e59d3010	 ldr         r3, [sp, #0x10]
  00088	e58d3000	 str         r3, [sp]

; 152  :     for (i = 0; i < 2; i++) 

  0008c	e3a03000	 mov         r3, #0
  00090	e58d3008	 str         r3, [sp, #8]
  00094	ea000002	 b           |$L38080|
  00098		 |$L38081|
  00098	e59d3008	 ldr         r3, [sp, #8]
  0009c	e2833001	 add         r3, r3, #1
  000a0	e58d3008	 str         r3, [sp, #8]
  000a4		 |$L38080|
  000a4	e59d3008	 ldr         r3, [sp, #8]
  000a8	e3530002	 cmp         r3, #2
  000ac	aa000010	 bge         |$L38082|

; 153  :     {
; 154  :         *pDestByte++ = (unsigned char)(uiTemp & 0xFF);

  000b0	e59d3000	 ldr         r3, [sp]
  000b4	e20330ff	 and         r3, r3, #0xFF
  000b8	e20320ff	 and         r2, r3, #0xFF
  000bc	e59d3004	 ldr         r3, [sp, #4]
  000c0	e5c32000	 strb        r2, [r3]
  000c4	e59d3004	 ldr         r3, [sp, #4]
  000c8	e2833001	 add         r3, r3, #1
  000cc	e58d3004	 str         r3, [sp, #4]

; 155  :         chksum += (uiTemp & 0xFF);

  000d0	e59d3000	 ldr         r3, [sp]
  000d4	e20320ff	 and         r2, r3, #0xFF
  000d8	e59d300c	 ldr         r3, [sp, #0xC]
  000dc	e0833002	 add         r3, r3, r2
  000e0	e58d300c	 str         r3, [sp, #0xC]

; 156  :         uiTemp >>= 8;

  000e4	e59d3000	 ldr         r3, [sp]
  000e8	e1a03423	 mov         r3, r3, lsr #8
  000ec	e58d3000	 str         r3, [sp]

; 157  :     }

  000f0	eaffffe8	 b           |$L38081|
  000f4		 |$L38082|

; 158  :     
; 159  :     uiTemp = bootType;

  000f4	e59d3028	 ldr         r3, [sp, #0x28]
  000f8	e58d3000	 str         r3, [sp]

; 160  :     for (i = 0; i < sizeof(int); i++) 

  000fc	e3a03000	 mov         r3, #0
  00100	e58d3008	 str         r3, [sp, #8]
  00104	ea000002	 b           |$L38085|
  00108		 |$L38086|
  00108	e59d3008	 ldr         r3, [sp, #8]
  0010c	e2833001	 add         r3, r3, #1
  00110	e58d3008	 str         r3, [sp, #8]
  00114		 |$L38085|
  00114	e59d3008	 ldr         r3, [sp, #8]
  00118	e3530004	 cmp         r3, #4
  0011c	2a000010	 bcs         |$L38087|

; 161  :     {
; 162  :         *pDestByte++ = (unsigned char)(uiTemp & 0xFF);

  00120	e59d3000	 ldr         r3, [sp]
  00124	e20330ff	 and         r3, r3, #0xFF
  00128	e20320ff	 and         r2, r3, #0xFF
  0012c	e59d3004	 ldr         r3, [sp, #4]
  00130	e5c32000	 strb        r2, [r3]
  00134	e59d3004	 ldr         r3, [sp, #4]
  00138	e2833001	 add         r3, r3, #1
  0013c	e58d3004	 str         r3, [sp, #4]

; 163  :         chksum += (uiTemp & 0xFF);

  00140	e59d3000	 ldr         r3, [sp]
  00144	e20320ff	 and         r2, r3, #0xFF
  00148	e59d300c	 ldr         r3, [sp, #0xC]
  0014c	e0833002	 add         r3, r3, r2
  00150	e58d300c	 str         r3, [sp, #0xC]

; 164  :         uiTemp >>= 8;

  00154	e59d3000	 ldr         r3, [sp]
  00158	e1a03423	 mov         r3, r3, lsr #8
  0015c	e58d3000	 str         r3, [sp]

; 165  :     }

  00160	eaffffe8	 b           |$L38086|
  00164		 |$L38087|

; 166  :     
; 167  :     *pDestByte++ = (unsigned char)((~chksum) & 0xFF);

  00164	e59d300c	 ldr         r3, [sp, #0xC]
  00168	e1e03003	 mvn         r3, r3
  0016c	e20330ff	 and         r3, r3, #0xFF
  00170	e20320ff	 and         r2, r3, #0xFF
  00174	e59d3004	 ldr         r3, [sp, #4]
  00178	e5c32000	 strb        r2, [r3]
  0017c	e59d3004	 ldr         r3, [sp, #4]
  00180	e2833001	 add         r3, r3, #1
  00184	e58d3004	 str         r3, [sp, #4]

; 168  :     
; 169  :     for (i = 0; i < BOOT_TAIL_SIZE; i++) 

  00188	e3a03000	 mov         r3, #0
  0018c	e58d3008	 str         r3, [sp, #8]
  00190	ea000002	 b           |$L38090|
  00194		 |$L38091|
  00194	e59d3008	 ldr         r3, [sp, #8]
  00198	e2833001	 add         r3, r3, #1
  0019c	e58d3008	 str         r3, [sp, #8]
  001a0		 |$L38090|
  001a0	e59d3008	 ldr         r3, [sp, #8]
  001a4	e3530004	 cmp         r3, #4
  001a8	2a000009	 bcs         |$L38092|

; 170  :     {
; 171  :         *pDestByte++ = BootTail[i];

  001ac	e59f2058	 ldr         r2, [pc, #0x58]
  001b0	e59d3008	 ldr         r3, [sp, #8]
  001b4	e0823003	 add         r3, r2, r3
  001b8	e5d32000	 ldrb        r2, [r3]
  001bc	e59d3004	 ldr         r3, [sp, #4]
  001c0	e5c32000	 strb        r2, [r3]
  001c4	e59d3004	 ldr         r3, [sp, #4]
  001c8	e2833001	 add         r3, r3, #1
  001cc	e58d3004	 str         r3, [sp, #4]

; 172  :     }

  001d0	eaffffef	 b           |$L38091|
  001d4		 |$L38092|

; 173  : 
; 174  :     nReturn=ParallelPortWrite
; 175  :     (
; 176  :         ParallelSendBuffer, 
; 177  :         (unsigned int)(pDestByte - ParallelSendBuffer)
; 178  :     );

  001d4	e59d2004	 ldr         r2, [sp, #4]
  001d8	e28d3018	 add         r3, sp, #0x18
  001dc	e0421003	 sub         r1, r2, r3
  001e0	e28d0018	 add         r0, sp, #0x18
  001e4	eb000000	 bl          ParallelPortWrite
  001e8	e58d0030	 str         r0, [sp, #0x30]
  001ec	e59d3030	 ldr         r3, [sp, #0x30]
  001f0	e58d3024	 str         r3, [sp, #0x24]

; 179  :     
; 180  :     return nReturn;

  001f4	e59d3024	 ldr         r3, [sp, #0x24]
  001f8	e58d302c	 str         r3, [sp, #0x2C]
  001fc	e59d002c	 ldr         r0, [sp, #0x2C]

; 181  : }

  00200	e28dd034	 add         sp, sp, #0x34
  00204	e49de004	 ldr         lr, [sp], #4
  00208	e12fff1e	 bx          lr
  0020c		 |$L38132|
  0020c	00000000	 DCD         |BootTail|
  00210	00000000	 DCD         |BootHeader|
  00214	00000000	 DCD         |??_C@_01LFCBOECM@?4?$AA@|
  00218		 |$M38128|

			 ENDP  ; |ParallelPreDownload|

	END

⌨️ 快捷键说明

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