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

📄 parallel.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615 

	TTL	d:\wince420\platform\ep931x\eboot\.\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
|EdbgVendorIds| DCW 0x0
	DCW	0x0
	DCD	0x4033
	DCB	0x1
	DCB	"AD", 0x0
	DCW	0x1050
	DCW	0x940
	DCD	0x4005
	DCB	0x1
	DCB	"LS", 0x0
	DCW	0x1050
	DCW	0x940
	DCD	0x2078
	DCB	0x1
	DCB	"LS", 0x0
	DCW	0x10ec
	DCW	0x8029
	DCD	0xc0f0
	DCB	0x1
	DCB	"KS", 0x0
	DCW	0x10ec
	DCW	0x8129
	DCD	0x0
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x10ec
	DCW	0x8139
	DCD	0x900b
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x10ec
	DCW	0x8139
	DCD	0xd0c9
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x10ec
	DCW	0x8139
	DCD	0xe04c
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x1186
	DCW	0x1300
	DCD	0x50ba
	DCB	0x4
	DCB	"DL", 0x0
	DCW	0x100b
	DCW	0x20
	DCD	0xa0cc
	DCB	0x5
	DCB	"NG", 0x0
	DCW	0x10b7
	DCW	0x9050
	DCD	0x6008
	DCB	0x6
	DCB	"3C", 0x0
	DCW	0x10b7
	DCW	0x9200
	DCD	0x476
	DCB	0x6
	DCB	"3C", 0x0
|BootHeader| DCB 0xaa
	DCB	0x55
	DCB	0x55
	DCB	0xaa
	DCB	0x0
	DCB	0x0
	%	2
|BootTail| DCB	0x5a
	DCB	0xa5
	DCB	0xa
	DCB	0x1a
	EXPORT	|ParallelPortRead|
	IMPORT	|OEMParallelPortGetByte|
; File d:\wince420\platform\ep931x\eboot\parallel.c

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

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

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

  00000		 |ParallelPortRead| PROC

; 65   : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M36624|
  00004	e1a05000	 mov       r5, r0
  00008	e1a04001	 mov       r4, r1

; 66   :     //for(;;) { OEMParallelPortGetByte();}
; 67   : 
; 68   :     int result;
; 69   :     while (cb && (result=OEMParallelPortGetByte()) != -1) {

  0000c	e3550000	 cmp       r5, #0
  00010	0a000006	 beq       |$L36558|
  00014		 |$L36557|
  00014	eb000000	 bl        OEMParallelPortGetByte
  00018	e3700001	 cmn       r0, #1
  0001c	0a000003	 beq       |$L36558|

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

  00020	e20000ff	 and       r0, r0, #0xFF
  00024	e4c40001	 strb      r0, [r4], #1

; 71   :         cb--;

  00028	e2555001	 subs      r5, r5, #1
  0002c	1afffff8	 bne       |$L36557|
  00030		 |$L36558|

; 72   :     }
; 73   :     return cb;

  00030	e1a00005	 mov       r0, r5

; 74   : }

  00034	e8bd4030	 ldmia     sp!, {r4, r5, lr}
  00038	e12fff1e	 bx        lr
  0003c		 |$M36625|

			 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
|$T36638| DCD	|ParallelPortWrite|
	DCD	0x40000f01
; Function compile flags: /Ogsy

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

  00000		 |ParallelPortWrite| PROC

; 104  : {

  00000	e92d4070	 stmdb     sp!, {r4 - r6, lr}
  00004		 |$M36636|
  00004	e1a05000	 mov       r5, r0
  00008	e1a06001	 mov       r6, r1

; 105  :     while (cb--)

  0000c	e3560000	 cmp       r6, #0
  00010	0a000006	 beq       |$L36631|
  00014	e1a04006	 mov       r4, r6
  00018		 |$L36567|

; 106  :         OEMParallelPortSendByte(*pByteSend++);

  00018	e4d50001	 ldrb      r0, [r5], #1
  0001c	e2466001	 sub       r6, r6, #1
  00020	eb000000	 bl        OEMParallelPortSendByte
  00024	e2444001	 sub       r4, r4, #1
  00028	e3540000	 cmp       r4, #0
  0002c	8afffff9	 bhi       |$L36567|
  00030		 |$L36631|

; 105  :     while (cb--)

  00030	e2460001	 sub       r0, r6, #1

; 107  :     return cb;
; 108  : }

  00034	e8bd4070	 ldmia     sp!, {r4 - r6, lr}
  00038	e12fff1e	 bx        lr
  0003c		 |$M36637|

			 ENDP  ; |ParallelPortWrite|

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

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

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

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

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

  00000		 |ParallelPreDownload| PROC

; 119  : {

  00000	e92d4070	 stmdb     sp!, {r4 - r6, lr}
  00004	e24dd00c	 sub       sp, sp, #0xC
  00008		 |$M36660|

; 120  :     unsigned char * pDestByte;
; 121  :     unsigned int    chksum;
; 122  :     unsigned int    uiTemp;
; 123  :     int             bootType;
; 124  :     unsigned        len;
; 125  :     int             i;
; 126  :     int             nReturn=0;
; 127  :     unsigned char   ParallelSendBuffer[2 + sizeof(int) + BOOT_TAIL_SIZE];
; 128  : 
; 129  :     EdbgOutputDebugString(".");

  00008	e59f00d0	 ldr       r0, [pc, #0xD0]
  0000c	eb000000	 bl        EdbgOutputDebugString
  00010	e59f30c4	 ldr       r3, [pc, #0xC4]

; 130  :     //
; 131  :     // Prepare boot packet
; 132  :     //
; 133  :     pDestByte = ParallelSendBuffer;
; 134  :     for (i = 0; i < BOOT_HEADER_SIZE; i++) 
; 135  :     {
; 136  :         *pDestByte++ = BootHeader[i];

  00014	e3a06000	 mov       r6, #0
  00018	e28d2000	 add       r2, sp, #0
  0001c	e1a00006	 mov       r0, r6
  00020		 |$L36650|
  00020	e1a01000	 mov       r1, r0
  00024	e7d30001	 ldrb      r0, [r3, +r1]
  00028	e7c20001	 strb      r0, [r2, +r1]
  0002c	e2810001	 add       r0, r1, #1
  00030	e3500006	 cmp       r0, #6
  00034	1afffff9	 bne       |$L36650|
  00038	e28d5006	 add       r5, sp, #6

; 137  :     }
; 138  :     
; 139  :     chksum = 0;

  0003c	e1a04006	 mov       r4, r6

; 140  :     len = sizeof(unsigned int) + 5;
; 141  :     
; 142  :     bootType = BOOT_TYPE; 
; 143  :     
; 144  :     uiTemp = len;

  00040	e3a02009	 mov       r2, #9
  00044	e3a03002	 mov       r3, #2
  00048		 |$L36586|

; 145  :     for (i = 0; i < 2; i++) 
; 146  :     {
; 147  :         *pDestByte++ = (unsigned char)(uiTemp & 0xFF);
; 148  :         chksum += (uiTemp & 0xFF);

  00048	e20210ff	 and       r1, r2, #0xFF
  0004c	e4c52001	 strb      r2, [r5], #1
  00050	e2433001	 sub       r3, r3, #1
  00054	e20200ff	 and       r0, r2, #0xFF
  00058	e0844001	 add       r4, r4, r1

; 149  :         uiTemp >>= 8;

  0005c	e1a02422	 mov       r2, r2, lsr #8
  00060	e3530000	 cmp       r3, #0
  00064	8afffff7	 bhi       |$L36586|

; 150  :     }
; 151  :     
; 152  :     uiTemp = bootType;

  00068	e3e02000	 mvn       r2, #0
  0006c	e3a03004	 mov       r3, #4
  00070		 |$L36591|

; 153  :     for (i = 0; i < sizeof(int); i++) 
; 154  :     {
; 155  :         *pDestByte++ = (unsigned char)(uiTemp & 0xFF);
; 156  :         chksum += (uiTemp & 0xFF);

  00070	e20210ff	 and       r1, r2, #0xFF
  00074	e4c52001	 strb      r2, [r5], #1
  00078	e2433001	 sub       r3, r3, #1
  0007c	e20200ff	 and       r0, r2, #0xFF
  00080	e0844001	 add       r4, r4, r1

; 157  :         uiTemp >>= 8;

  00084	e1a02422	 mov       r2, r2, lsr #8
  00088	e3530000	 cmp       r3, #0
  0008c	8afffff7	 bhi       |$L36591|

; 158  :     }
; 159  :     
; 160  :     *pDestByte++ = (unsigned char)((~chksum) & 0xFF);

  00090	e1e00004	 mvn       r0, r4
  00094	e59f203c	 ldr       r2, [pc, #0x3C]
  00098	e20010ff	 and       r1, r0, #0xFF
  0009c	e4c50001	 strb      r0, [r5], #1
  000a0		 |$L36652|

; 161  :     
; 162  :     for (i = 0; i < BOOT_TAIL_SIZE; i++) 
; 163  :     {
; 164  :         *pDestByte++ = BootTail[i];

  000a0	e1a01006	 mov       r1, r6
  000a4	e7d20001	 ldrb      r0, [r2, +r1]
  000a8	e2816001	 add       r6, r1, #1
  000ac	e3560004	 cmp       r6, #4
  000b0	e7c50001	 strb      r0, [r5, +r1]
  000b4	1afffff9	 bne       |$L36652|
  000b8	e2850004	 add       r0, r5, #4

; 165  :     }
; 166  : 
; 167  :     nReturn=ParallelPortWrite
; 168  :     (
; 169  :         ParallelSendBuffer, 
; 170  :         (unsigned int)(pDestByte - ParallelSendBuffer)
; 171  :     );

  000bc	e28d1000	 add       r1, sp, #0
  000c0	e0401001	 sub       r1, r0, r1
  000c4	e28d0000	 add       r0, sp, #0
  000c8	eb000000	 bl        ParallelPortWrite

; 172  :     
; 173  :     return nReturn;
; 174  : }

  000cc	e28dd00c	 add       sp, sp, #0xC
  000d0	e8bd4070	 ldmia     sp!, {r4 - r6, lr}
  000d4	e12fff1e	 bx        lr
  000d8		 |$L36664|
  000d8	00000000	 DCD       |BootTail|
  000dc	00000000	 DCD       |BootHeader|
  000e0	00000000	 DCD       |??_C@_01PJCK@?4?$AA@|
  000e4		 |$M36661|

			 ENDP  ; |ParallelPreDownload|

	END

⌨️ 快捷键说明

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