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

📄 dl_device_serial.cod

📁 平台PXA270, Mobile6.0 这是270的mobile6.0的bootloader
💻 COD
📖 第 1 页 / 共 2 页
字号:
; 106  :     {
; 107  : 	    case SOH:  /* 128-byte incoming packet */
; 108  :             *len = 128;

  00064	e3a03080	 mov         r3, #0x80
  00068		 |$L43067|

; 109  :             if(GetPacketData(buf, len, blocknum) == FALSE)

  00068	e1a02005	 mov         r2, r5
  0006c	e1a01004	 mov         r1, r4
  00070	e1a00006	 mov         r0, r6
  00074	e5843000	 str         r3, [r4]
  00078	eb000000	 bl          GetPacketData
  0007c	e3500000	 cmp         r0, #0

; 110  :             	return FALSE;

  00080	0afffff0	 beq         |$L43066|
  00084		 |$L42926|

; 125  :             break;
; 126  :         default:
; 127  :             return FALSE;
; 128  :             break;
; 129  :     }
; 130  :     return TRUE;

  00084	e3a00001	 mov         r0, #1
  00088		 |$L42918|

; 131  : }

  00088	e28dd004	 add         sp, sp, #4
  0008c	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00090	e12fff1e	 bx          lr
  00094		 |$M43069|

			 ENDP  ; |GetPacket|

	EXPORT	|serial_preinit|
	IMPORT	|OEMWriteDebugLED|
	IMPORT	|msWait|

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

  00000			 AREA	 |.pdata$$serial_preinit|, PDATA, SELECTION=5, ASSOC=|.text| { |serial_preinit| } ; comdat associative
|$T43094| DCD	|$L43093|
	DCD	0x40001a01
; Function compile flags: /Ogsy

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

  00000		 |serial_preinit| PROC

; 134  : {

  00000		 |$L43093|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M43091|
  00004	e59f5058	 ldr         r5, [pc, #0x58]
  00008		 |$L42938|

; 135  :     int timeout;
; 136  : 
; 137  :     // send boot requests indefinitely      
; 138  :     while(1)
; 139  :     {
; 140  :     	//We do not use crc check.
; 141  :         OEMWriteDebugByte(NAK);

  00008	e3a00015	 mov         r0, #0x15
  0000c	eb000000	 bl          OEMWriteDebugByte

; 142  :         for(timeout = 0;timeout < 500; timeout++)

  00010	e3a04000	 mov         r4, #0
  00014		 |$L42940|

; 143  :         {
; 144  :             msWait(1);

  00014	e3a00001	 mov         r0, #1
  00018	eb000000	 bl          msWait

; 145  :             OEMWriteDebugLED(0, 2);

  0001c	e3a01002	 mov         r1, #2
  00020	e3a00000	 mov         r0, #0
  00024	eb000000	 bl          OEMWriteDebugLED

; 146  :             if(GetCharReady())

  00028	e5953000	 ldr         r3, [r5]

; 147  :             	return TRUE;
; 148  :             msWait(1);

  0002c	e3a00001	 mov         r0, #1
  00030	e5933014	 ldr         r3, [r3, #0x14]
  00034	e3130001	 tst         r3, #1
  00038	1a000007	 bne         |$L43086|
  0003c	eb000000	 bl          msWait

; 149  :             OEMWriteDebugLED(0, 4); 

  00040	e3a01004	 mov         r1, #4
  00044	e3a00000	 mov         r0, #0
  00048	eb000000	 bl          OEMWriteDebugLED
  0004c	e2844001	 add         r4, r4, #1
  00050	e3540f7d	 cmp         r4, #0x7D, 30
  00054	baffffee	 blt         |$L42940|

; 150  :         }        
; 151  :     }

  00058	eaffffea	 b           |$L42938|
  0005c		 |$L43086|

; 152  : }

  0005c	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00060	e12fff1e	 bx          lr
  00064		 |$L43096|
  00064	00000000	 DCD         |g_pUARTReg|
  00068		 |$M43092|

			 ENDP  ; |serial_preinit|

	EXPORT	|Serial_Init|
	EXPORT	|??_C@_0BH@NEHCIJDN@Serial?5Init?5success?$CB?$AN?6?$AA@| [ DATA ] ; `string'
	IMPORT	|OALPAtoVA|
	IMPORT	|EdbgOutputDebugString|

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

  00000			 AREA	 |.pdata$$Serial_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |Serial_Init| } ; comdat associative
|$T43104| DCD	|$L43103|
	DCD	0x40000f01

  00000			 AREA	 |.rdata| { |??_C@_0BH@NEHCIJDN@Serial?5Init?5success?$CB?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BH@NEHCIJDN@Serial?5Init?5success?$CB?$AN?6?$AA@| DCB "Serial Ini"
	DCB	"t success!", 0xd, 0xa, 0x0		; `string'
; Function compile flags: /Ogsy

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

  00000		 |Serial_Init| PROC

; 156  : {

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

; 157  :     g_pUARTReg = (volatile BULVERDE_UART_REG *) OALPAtoVA(BULVERDE_BASE_REG_PA_BTUART, FALSE);

  00004	e3a00101	 mov         r0, #1, 2
  00008	e3800602	 orr         r0, r0, #2, 12
  0000c	e3a01000	 mov         r1, #0
  00010	eb000000	 bl          OALPAtoVA
  00014	e59f301c	 ldr         r3, [pc, #0x1C]
  00018	e1a02000	 mov         r2, r0

; 158  :     EdbgOutputDebugString("Serial Init success!\r\n");

  0001c	e59f0010	 ldr         r0, [pc, #0x10]
  00020	e5832000	 str         r2, [r3]
  00024	eb000000	 bl          EdbgOutputDebugString

; 159  :     return TRUE;

  00028	e3a00001	 mov         r0, #1

; 160  : }

  0002c	e49de004	 ldr         lr, [sp], #4
  00030	e12fff1e	 bx          lr
  00034		 |$L43106|
  00034	00000000	 DCD         |??_C@_0BH@NEHCIJDN@Serial?5Init?5success?$CB?$AN?6?$AA@|
  00038	00000000	 DCD         |g_pUARTReg|
  0003c		 |$M43102|

			 ENDP  ; |Serial_Init|

	EXPORT	|Serial_Deinit|

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

  00000			 AREA	 |.pdata$$Serial_Deinit|, PDATA, SELECTION=5, ASSOC=|.text| { |Serial_Deinit| } ; comdat associative
|$T43114| DCD	|$L43113|
	DCD	0x40001602
; Function compile flags: /Ogsy

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

  00000		 |Serial_Deinit| PROC

; 163  : {

  00000		 |$L43113|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M43111|

; 164  :     char c;
; 165  :     
; 166  :     //通知主机下载已完成
; 167  :     OEMWriteDebugByte(ACK);

  00008	e3a00006	 mov         r0, #6
  0000c	eb000000	 bl          OEMWriteDebugByte

; 168  :     GetBytes(&c, 1);

  00010	e3a01001	 mov         r1, #1
  00014	e28d0000	 add         r0, sp, #0
  00018	eb000000	 bl          GetBytes

; 169  :     if(c == EOT)

  0001c	e5dd3000	 ldrb        r3, [sp]
  00020	e3530004	 cmp         r3, #4
  00024	1a000006	 bne         |$L42951|

; 170  :     {
; 171  :         OEMWriteDebugByte(ACK);

  00028	e3a00006	 mov         r0, #6
  0002c	eb000000	 bl          OEMWriteDebugByte

; 176  :     }
; 177  :     g_SerialInitialized = FALSE;

  00030	e59f301c	 ldr         r3, [pc, #0x1C]
  00034	e3a02000	 mov         r2, #0

; 178  :     return TRUE;

  00038	e3a00001	 mov         r0, #1
  0003c	e5832000	 str         r2, [r3]
  00040	ea000000	 b           |$L42949|
  00044		 |$L42951|

; 172  :     }
; 173  :     else
; 174  :     {
; 175  :         return FALSE;        

  00044	e3a00000	 mov         r0, #0
  00048		 |$L42949|

; 179  : }

  00048	e28dd004	 add         sp, sp, #4
  0004c	e49de004	 ldr         lr, [sp], #4
  00050	e12fff1e	 bx          lr
  00054		 |$L43116|
  00054	00000000	 DCD         |g_SerialInitialized|
  00058		 |$M43112|

			 ENDP  ; |Serial_Deinit|

	EXPORT	|Serial_ReadData|
	IMPORT	|memcpy|

  00008			 AREA	 |.bss|, NOINIT
|?buf@?1??Serial_ReadData@@9@9| % 0x400			; `Serial_ReadData'::`2'::buf

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

  00000			 AREA	 |.pdata$$Serial_ReadData|, PDATA, SELECTION=5, ASSOC=|.text| { |Serial_ReadData| } ; comdat associative
|$T43131| DCD	|$L43130|
	DCD	0x40004201
; Function compile flags: /Ogsy

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

  00000		 |Serial_ReadData| PROC

; 182  : {

  00000		 |$L43130|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004		 |$M43128|
  00004	e1a08001	 mov         r8, r1
  00008	e1b07000	 movs        r7, r0

; 183  :     static unsigned char buf[PKTLEN_1K]; //using 1024 bytes buffer for data read
; 184  :     static int Front =- 1,Tail = 0;
; 185  :     static unsigned char BlockNum = 1;
; 186  :     LPBYTE pOutBuffer = pbData;
; 187  :     
; 188  :     while(cbData)

  0000c	0a000030	 beq         |$L42969|
  00010	e59f40ec	 ldr         r4, [pc, #0xEC]
  00014	e59f50e4	 ldr         r5, [pc, #0xE4]
  00018	e3e09000	 mvn         r9, #0
  0001c	e5940400	 ldr         r0, [r4, #0x400]
  00020	e5956004	 ldr         r6, [r5, #4]
  00024	e3a0a000	 mov         r10, #0
  00028	e3a0b001	 mov         r11, #1
  0002c		 |$L42968|

; 189  :     {
; 190  :         if(Front == -1)

  0002c	e3760001	 cmn         r6, #1
  00030	1a000019	 bne         |$L42974|

; 191  :         {
; 192  :             if(g_SerialInitialized == TRUE)

  00034	e5943404	 ldr         r3, [r4, #0x404]
  00038	e3530001	 cmp         r3, #1
  0003c	1a000003	 bne         |$L42971|

; 193  :             {
; 194  :                 OEMWriteDebugByte(ACK); //return ACK to server for new packet

  00040	e3a00006	 mov         r0, #6
  00044	eb000000	 bl          OEMWriteDebugByte

; 195  :             }
; 196  :             else

  00048	e5d52000	 ldrb        r2, [r5]
  0004c	ea000008	 b           |$L42972|
  00050		 |$L42971|

; 197  :             {
; 198  :                 serial_preinit(); //when receive first packet, we must init serial

  00050	eb000000	 bl          serial_preinit

; 199  :                 OEMWriteDebugLED(0, 1);

  00054	e3a01001	 mov         r1, #1
  00058	e3a00000	 mov         r0, #0
  0005c	eb000000	 bl          OEMWriteDebugLED

; 200  :                 Front = -1;
; 201  :                 Tail = 0;
; 202  :                 BlockNum = 1;

  00060	e3a02001	 mov         r2, #1
  00064	e5c52000	 strb        r2, [r5]
  00068	e5859004	 str         r9, [r5, #4]
  0006c	e584a400	 str         r10, [r4, #0x400]

; 203  :                 g_SerialInitialized = TRUE;

  00070	e584b404	 str         r11, [r4, #0x404]
  00074		 |$L42972|

; 204  :             }
; 205  :             
; 206  :             if(GetPacket(buf, &Tail, BlockNum) == TRUE)

  00074	e2841b01	 add         r1, r4, #1, 22
  00078	e1a00004	 mov         r0, r4
  0007c	eb000000	 bl          GetPacket
  00080	e3500001	 cmp         r0, #1
  00084	1a00001a	 bne         |$L42973|

; 207  :             {
; 208  :                 Front = 0;
; 209  :                 BlockNum++;

  00088	e5d53000	 ldrb        r3, [r5]
  0008c	e5940400	 ldr         r0, [r4, #0x400]
  00090	e3a06000	 mov         r6, #0
  00094	e2833001	 add         r3, r3, #1
  00098	e5c53000	 strb        r3, [r5]
  0009c		 |$L42974|

; 214  :             }
; 215  :         }
; 216  :         if((Tail - Front) > (int)cbData)

  0009c	e0402006	 sub         r2, r0, r6
  000a0	e1520007	 cmp         r2, r7

; 220  :             cbData = 0;
; 221  :         }
; 222  :         else
; 223  :         {
; 224  :             memcpy((char *)pOutBuffer, (buf+Front), Tail - Front);

  000a4	e0861004	 add         r1, r6, r4
  000a8	e1a00008	 mov         r0, r8
  000ac	ca00000b	 bgt         |$L43121|
  000b0	eb000000	 bl          memcpy

; 225  :             pOutBuffer += Tail - Front;

  000b4	e5940400	 ldr         r0, [r4, #0x400]
  000b8	e0403006	 sub         r3, r0, r6

; 226  :             cbData -= Tail - Front;

  000bc	e0462000	 sub         r2, r6, r0

; 227  :             Front =- 1;

  000c0	e3e06000	 mvn         r6, #0
  000c4	e5856004	 str         r6, [r5, #4]
  000c8	e0888003	 add         r8, r8, r3
  000cc	e0977002	 adds        r7, r7, r2
  000d0	1affffd5	 bne         |$L42968|
  000d4		 |$L42969|

; 228  :         }
; 229  :     }
; 230  :     return TRUE;

  000d4	e3a00001	 mov         r0, #1

; 231  : }

  000d8	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  000dc	e12fff1e	 bx          lr
  000e0		 |$L43121|

; 217  :         {
; 218  :             memcpy((char *)pOutBuffer, (buf+Front), cbData);

  000e0	e1a02007	 mov         r2, r7
  000e4	eb000000	 bl          memcpy

; 219  :             Front += cbData;

  000e8	e0863007	 add         r3, r6, r7
  000ec	e5853004	 str         r3, [r5, #4]
  000f0	eafffff7	 b           |$L42969|
  000f4		 |$L42973|

; 210  :             }
; 211  :             else
; 212  :             {
; 213  :             	return FALSE;

  000f4	e3a00000	 mov         r0, #0

; 231  : }

  000f8	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  000fc	e12fff1e	 bx          lr
  00100		 |$L43133|
  00100	00000000	 DCD         |?BlockNum@?1??Serial_ReadData@@9@9|
  00104	00000000	 DCD         |?buf@?1??Serial_ReadData@@9@9|
  00108		 |$M43129|

			 ENDP  ; |Serial_ReadData|

	END

⌨️ 快捷键说明

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