📄 eeinfo.cod
字号:
; 138 : *GPIO_PADR = ulTemp | 0x80;
001f8 e59d300c ldr r3, [sp, #0xC]
001fc e3832080 orr r2, r3, #0x80
00200 e3a03102 mov r3, #2, 2
00204 e3833721 orr r3, r3, #0x21, 14
00208 e5832000 str r2, [r3]
; 139 : }
0020c e28dd020 add sp, sp, #0x20
00210 e49de004 ldr lr, [sp], #4
00214 e12fff1e bx lr
00218 |$L38294|
00218 00000000 DCD |gBoardInformationValid|
0021c 00000000 DCD |??_C@_0CD@OFKMODLF@EEINFO?3?5SPI?5Device?5Not?5detected?4@|
00220 00000000 DCD |gBoardInformation|
00224 00000000 DCD |??_C@_04GKLMKEAK@EMAC?$AA@|
00228 00000000 DCD |??_C@_0BC@ECDBGCHG@Board?5Name?5?$DN?5?$CFs?$AN?6?$AA@|
0022c 00000000 DCD |??_C@_0CB@HOJDAEME@MAC?5Address?5?$DN?50x?$CFx?0?50x?$CFx?0?50x?$CFx?$AN?6@|
00230 00000000 DCD |??_C@_0BP@DOCAFDDJ@EEINFO?3?50x?$CFx?50x?$CFx?50x?$CFx?50x?$CFx?4?$AN?6?$AA@|
00234 00000000 DCD |??_C@_0BJ@JMNHHKIF@EEINFO?3?5EEInformation?4?$AN?6?$AA@|
00238 |$M38290|
ENDP ; |GetBoardInformation|
00000 AREA |.text| { |InitializeSPI| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$InitializeSPI|, PDATA, SELECTION=5, ASSOC=|.text| { |InitializeSPI| } ; comdat associative
|$T38300| DCD |$L38299|
DCD 0x40003501
; Function compile flags: /Ods
00000 AREA |.text| { |InitializeSPI| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |InitializeSPI| PROC
; 148 : {
00000 |$L38299|
00000 e24dd004 sub sp, sp, #4
00004 |$M38297|
; 149 : ULONG ulTemp;
; 150 :
; 151 : //
; 152 : // Set GPIO Pins 12 and 14 as outputs.
; 153 : //
; 154 : ulTemp = *GPIO_PBDDR;
00004 e59f30c4 ldr r3, [pc, #0xC4]
00008 e5933000 ldr r3, [r3]
0000c e58d3000 str r3, [sp]
; 155 : *GPIO_PBDDR = ulTemp | 0x50;
00010 e59d3000 ldr r3, [sp]
00014 e3832050 orr r2, r3, #0x50
00018 e59f30b0 ldr r3, [pc, #0xB0]
0001c e5832000 str r2, [r3]
; 156 :
; 157 : //
; 158 : // Set GPIO pins 12 and 14 to high to disable the keyboard.
; 159 : //
; 160 : ulTemp = *GPIO_PBDR;
00020 e59f30a4 ldr r3, [pc, #0xA4]
00024 e5933000 ldr r3, [r3]
00028 e58d3000 str r3, [sp]
; 161 : *GPIO_PBDR = ulTemp | 0x50;
0002c e59d3000 ldr r3, [sp]
00030 e3832050 orr r2, r3, #0x50
00034 e59f3090 ldr r3, [pc, #0x90]
00038 e5832000 str r2, [r3]
; 162 :
; 163 : //
; 164 : // Set GPIO pins 7 as an output.
; 165 : //
; 166 : ulTemp = *GPIO_PADDR;
0003c e59f3084 ldr r3, [pc, #0x84]
00040 e5933000 ldr r3, [r3]
00044 e58d3000 str r3, [sp]
; 167 : *GPIO_PADDR = ulTemp | 0x80;
00048 e59d3000 ldr r3, [sp]
0004c e3832080 orr r2, r3, #0x80
00050 e59f3070 ldr r3, [pc, #0x70]
00054 e5832000 str r2, [r3]
; 168 :
; 169 : //
; 170 : // Clear GPIO pins 7 to enable the frame line.
; 171 : //
; 172 : ulTemp = *GPIO_PADR;
00058 e3a03102 mov r3, #2, 2
0005c e3833721 orr r3, r3, #0x21, 14
00060 e5933000 ldr r3, [r3]
00064 e58d3000 str r3, [sp]
; 173 : *GPIO_PADR = ulTemp & ~0x80;
00068 e59d2000 ldr r2, [sp]
0006c e3e03080 mvn r3, #0x80
00070 e0022003 and r2, r2, r3
00074 e3a03102 mov r3, #2, 2
00078 e3833721 orr r3, r3, #0x21, 14
0007c e5832000 str r2, [r3]
; 174 :
; 175 :
; 176 : //
; 177 : // Program the CR0 register.
; 178 : //
; 179 : *SPI_CR0 = SPICR0_FRF_MOTOROLA | SPICR0_SPO |
; 180 : SPICR0_SPH | (8-1) | (SPICR0_SCR_MASK & 0x600);
00080 e3a03102 mov r3, #2, 2
00084 e383288a orr r2, r3, #0x8A, 16
00088 e3a03d1b mov r3, #0x1B, 26
0008c e3833007 orr r3, r3, #7
00090 e5823000 str r3, [r2]
; 181 :
; 182 : //
; 183 : // Program the predivisor register. This will give us an
; 184 : // 14.7Mhz / ((6 +1) * 2) = Approx 1Mhz.
; 185 : //
; 186 : // The Max is 20Mhz for the AT25F1024.
; 187 : //
; 188 : *SPI_CPSR = 2;
00094 e59f2028 ldr r2, [pc, #0x28]
00098 e3a03002 mov r3, #2
0009c e5823000 str r3, [r2]
; 189 :
; 190 : //
; 191 : // Program the CR1 register.
; 192 : //
; 193 : *SPI_CR1 = 0;
000a0 e59f2018 ldr r2, [pc, #0x18]
000a4 e3a03000 mov r3, #0
000a8 e5823000 str r3, [r2]
; 194 :
; 195 : //
; 196 : // Hit the enable bit
; 197 : //
; 198 : *SPI_CR1 = SPICR1_SSE;
000ac e59f200c ldr r2, [pc, #0xC]
000b0 e3a03010 mov r3, #0x10
000b4 e5823000 str r3, [r2]
; 199 : }
000b8 e28dd004 add sp, sp, #4
000bc e12fff1e bx lr
000c0 |$L38302|
000c0 808a0004 DCD 0x808a0004
000c4 808a0010 DCD 0x808a0010
000c8 80840010 DCD 0x80840010
000cc 80840004 DCD 0x80840004
000d0 80840014 DCD 0x80840014
000d4 |$M38298|
ENDP ; |InitializeSPI|
00000 AREA |.text| { |TestSPI| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$TestSPI|, PDATA, SELECTION=5, ASSOC=|.text| { |TestSPI| } ; comdat associative
|$T38309| DCD |$L38308|
DCD 0x40001c02
; Function compile flags: /Ods
00000 AREA |.text| { |TestSPI| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |TestSPI| PROC
; 213 : {
00000 |$L38308|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd010 sub sp, sp, #0x10
00008 |$M38306|
; 214 : ULONG ulManufacturer, ulDevice, ulTemp;
; 215 : // ULONGLONG ullStart, ullMax, ullCurrent;
; 216 :
; 217 : //
; 218 : // Issue the command for reading the SPI Product ID register.
; 219 : //
; 220 : *SPI_DR = SPIEE_RDID;
00008 e59f205c ldr r2, [pc, #0x5C]
0000c e3a03015 mov r3, #0x15
00010 e5823000 str r3, [r2]
; 221 : *SPI_DR = 0;
00014 e59f2050 ldr r2, [pc, #0x50]
00018 e3a03000 mov r3, #0
0001c e5823000 str r3, [r2]
; 222 : *SPI_DR = 0;
00020 e59f2044 ldr r2, [pc, #0x44]
00024 e3a03000 mov r3, #0
00028 e5823000 str r3, [r2]
; 223 :
; 224 : //
; 225 : // Wait until the transmit fifo is flushed.
; 226 : //
; 227 : WaitTillTransmitFifoEmpty();
0002c eb000000 bl WaitTillTransmitFifoEmpty
; 228 :
; 229 : //
; 230 : // Read one byte and throw it away.
; 231 : //
; 232 : ulTemp = *SPI_DR;
00030 e59f3034 ldr r3, [pc, #0x34]
00034 e5933000 ldr r3, [r3]
00038 e58d3008 str r3, [sp, #8]
; 233 :
; 234 : //
; 235 : // Read the Manufacturers code.
; 236 : //
; 237 : ulManufacturer = *SPI_DR;
0003c e59f3028 ldr r3, [pc, #0x28]
00040 e5933000 ldr r3, [r3]
00044 e58d3000 str r3, [sp]
; 238 :
; 239 : //
; 240 : // Read the device code.
; 241 : //
; 242 : ulDevice = *SPI_DR;
00048 e59f301c ldr r3, [pc, #0x1C]
0004c e5933000 ldr r3, [r3]
00050 e58d3004 str r3, [sp, #4]
; 243 :
; 244 : //
; 245 : // Check to see if the Manufacturer is atmel if so return 1.
; 246 : //
; 247 : //return (ulManufacturer ==0x1F);
; 248 : return TRUE;
00054 e3a03001 mov r3, #1
00058 e58d300c str r3, [sp, #0xC]
0005c e59d000c ldr r0, [sp, #0xC]
; 249 : }
00060 e28dd010 add sp, sp, #0x10
00064 e49de004 ldr lr, [sp], #4
00068 e12fff1e bx lr
0006c |$L38311|
0006c 808a0008 DCD 0x808a0008
00070 |$M38307|
ENDP ; |TestSPI|
EXPORT |??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@| [ DATA ] ; `string'
EXPORT |??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@| [ DATA ] ; `string'
EXPORT |??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@| [ DATA ] ; `string'
EXPORT |??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@| [ DATA ] ; `string'
IMPORT |GetSystemTimeInUSec|
00000 AREA |.text| { |ReadEEWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ReadEEWord|, PDATA, SELECTION=5, ASSOC=|.text| { |ReadEEWord| } ; comdat associative
|$T38320| DCD |$L38319|
DCD 0x4000d604
00000 AREA |.rdata| { |??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@| DCB "E"
DCB "EINFO: Receive = 0x%x, Transmit = 0x%x.", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@| DCB "EEINF"
DCB "O: ReadEEWord 2nd Timeout.", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@| DCB "EEINFO: "
DCB "ReadEEWord 1rst Timeout.", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@| DCB "EEINFO: Cl"
DCB "earReceiveFifo Timeout.", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |ReadEEWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ReadEEWord| PROC
; 261 : {
00000 |$L38319|
00000 e1a0c00d mov r12, sp
00004 e92d0007 stmdb sp!, {r0 - r2}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd088 sub sp, sp, #0x88
00010 |$M38317|
; 262 : ULONG ulCount, ulTransmitCount = 0;
00010 e3a03000 mov r3, #0
00014 e58d3018 str r3, [sp, #0x18]
; 263 : ULONG ulReceiveCount = 0;
00018 e3a03000 mov r3, #0
0001c e58d3028 str r3, [sp, #0x28]
; 264 : volatile ULONG ulTemp;
; 265 : ULONGLONG ullStart, ullMax, ullCurrent;
; 266 : BOOL bRet;
; 267 :
; 268 :
; 269 : //
; 270 : // Make sure that the receive fifo is clear.
; 271 : //
; 272 : bRet = ClearReceiveFifo();
00020 eb000000 bl ClearReceiveFifo
00024 e58d0030 str r0, [sp, #0x30]
00028 e59d3030 ldr r3, [sp, #0x30]
0002c e58d301c str r3, [sp, #0x1C]
; 273 : if(!bRet)
00030 e59d301c ldr r3, [sp, #0x1C]
00034 e3530000 cmp r3, #0
00038 1a000004 bne |$L38188|
; 274 : {
; 275 : EdbgOutputDebugString("EEINFO: ClearReceiveFifo Timeout.\r\n");
0003c e59f0310 ldr r0, [pc, #0x310]
00040 eb000000 bl EdbgOutputDebugString
; 276 : return bRet;
00044 e59d301c ldr r3, [sp, #0x1C]
00048 e58d302c str r3, [sp, #0x2C]
0004c ea0000b7 b |$L38179|
00050 |$L38188|
; 277 : }
; 278 :
; 279 : //
; 280 : // Send the Chip Read command.
; 281 : //
; 282 : *SPI_DR = SPIEE_READ_LOW;
00050 e59f22f0 ldr r2, [pc, #0x2F0]
00054 e3a03003 mov r3, #3
00058 e5823000 str r3, [r2]
; 283 :
; 284 : //
; 285 : // Send the three byte address.
; 286 : //
; 287 : *SPI_DR = (ulAddress >> 16) & 0xFF;
0005c e59d3090 ldr r3, [sp, #0x90]
00060 e1a03403 mov r3, r3, lsl #8
00064 e1a02c23 mov r2, r3, lsr #24
00068 e59f32d8 ldr r3, [pc, #0x2D8]
0006c e5832000 str r2, [r3]
; 288 : *SPI_DR = (ulAddress >> 8) & 0xFF;
00070 e59d3090 ldr r3, [sp, #0x90]
00074 e1a03803 mov r3, r3, lsl #16
00078 e1a02c23 mov r2, r3, lsr #24
0007c e59f32c4 ldr r3, [pc, #0x2C4]
00080 e5832000 str r2, [r3]
; 289 : *SPI_DR = ulAddress & 0xFF;
00084 e59d3090 ldr r3, [sp, #0x90]
00088 e20320ff and r2, r3, #0xFF
0008c e59f32b4 ldr r3, [pc, #0x2B4]
00090 e5832000 str r2, [r3]
; 290 :
; 291 : //
; 292 : // Wait until we send 3 bytes.
; 293 : //
; 294 : ulCount = 0;
00094 e3a03000 mov r3, #0
00098 e58d3020 str r3, [sp, #0x20]
; 295 : ullStart = GetSystemTimeInUSec();
0009c eb000000 bl GetSystemTimeInUSec
000a0 e58d103c str r1, [sp, #0x3C]
000a4 e58d0038 str r0, [sp, #0x38]
000a8 e59d3038 ldr r3, [sp, #0x38]
000ac e58d3008 str r3, [sp, #8]
000b0 e59d303c ldr r3, [sp, #0x3C]
000b4 e58d300c str r3, [sp, #0xC]
; 296 : ullMax = ullStart + SPI_MINTIME + 3 * SPI_BYTETIME;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -