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

📄 flash.cod

📁 一个berry eboot 源代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 401  :         // Put each block back into read mode
; 402  :         for (j = 0; j < num_blocks; j++)

  003ac	e3550000	 cmp         r5, #0
  003b0	0a00000d	 beq         |$L40114|
  003b4	e59f3094	 ldr         r3, [pc, #0x94]
  003b8	e59de000	 ldr         lr, [sp]
  003bc	e3a008ff	 mov         r0, #0xFF, 16
  003c0	e5933000	 ldr         r3, [r3]
  003c4	e38000ff	 orr         r0, r0, #0xFF
  003c8	e1a0112e	 mov         r1, lr, lsr #2
  003cc	e1a03123	 mov         r3, r3, lsr #2
  003d0		 |$L40112|

; 403  :         {
; 404  :             *pFlash = 0x00FF00FF;
; 405  : 
; 406  :             if ( num_l3_blocks_erased )

  003d0	e35a0000	 cmp         r10, #0
  003d4	e5820000	 str         r0, [r2]

; 407  :             {
; 408  :                 pFlash += (L3_BLOCK_SIZE / 4);

  003d8	10822103	 addne       r2, r2, r3, lsl #2

; 409  :                 num_l3_blocks_erased--;
; 410  :             }
; 411  :             else
; 412  :             {
; 413  :                 pFlash += (BLOCK_SIZE / 4);

  003dc	00822101	 addeq       r2, r2, r1, lsl #2
  003e0	124aa001	 subne       r10, r10, #1
  003e4	e2555001	 subs        r5, r5, #1
  003e8	1afffff8	 bne         |$L40112|
  003ec		 |$L40114|

; 414  :             }
; 415  :         }
; 416  :         // Now reset the flash pointer
; 417  :         pFlash = (volatile UINT32 *)(FlashStart);

  003ec	e1a02007	 mov         r2, r7
  003f0		 |$L40118|

; 422  :     }
; 423  : 
; 424  :     // Flash erase verification.
; 425  :     for (i = 0; i < FlashLength / 4; i++)

  003f0	e59d3010	 ldr         r3, [sp, #0x10]
  003f4	e3a01000	 mov         r1, #0
  003f8	e1b00123	 movs        r0, r3, lsr #2
  003fc	0a000005	 beq         |$L40121|
  00400		 |$L40119|

; 426  :     {
; 427  :         if (*pFlash++ != 0xFFFFFFFF)

  00400	e4923004	 ldr         r3, [r2], #4
  00404	e3730001	 cmn         r3, #1
  00408	1a000006	 bne         |$L40341|
  0040c	e2811001	 add         r1, r1, #1
  00410	e1510000	 cmp         r1, r0
  00414	3afffff9	 bcc         |$L40119|
  00418		 |$L40121|

; 432  :         }
; 433  :     }
; 434  : 
; 435  : 
; 436  :     return(TRUE);

  00418	e3a00001	 mov         r0, #1
  0041c		 |$L40035|

; 437  : }

  0041c	e28dd014	 add         sp, sp, #0x14
  00420	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  00424	e12fff1e	 bx          lr
  00428		 |$L40341|

; 428  :         {
; 429  :             EdbgOutputDebugString("ERROR: FlashErase: erase verification failure at address 0x%X Data 0x%X.\r\n", pFlash-1, *(pFlash-1));

  00428	e2421004	 sub         r1, r2, #4
  0042c	e5912000	 ldr         r2, [r1]
  00430	e59f0014	 ldr         r0, [pc, #0x14]
  00434	eb000000	 bl          EdbgOutputDebugString
  00438		 |$L40101|

; 430  :             EdbgOutputDebugString("ERROR: FlashErase: unrecoverable failure encountered while erasing flash.\r\n");

  00438	e59f0008	 ldr         r0, [pc, #8]
  0043c		 |$L40372|
  0043c	eb000000	 bl          EdbgOutputDebugString

; 431  :             return(FALSE);

  00440	e3a00000	 mov         r0, #0
  00444	eafffff4	 b           |$L40035|
  00448		 |$L40378|
  00448	00000000	 DCD         |??_C@_0EM@NACFEOGP@ERROR?3?5FlashErase?3?5unrecoverable@|
  0044c	00000000	 DCD         |??_C@_0EL@DOJKFNA@ERROR?3?5FlashErase?3?5erase?5verific@|
  00450	00000000	 DCD         |L3_BLOCK_SIZE|
  00454	00000000	 DCD         |??_C@_0EF@CDGLJFKL@ERROR?3?5FlashErase?3?5block?5erase?5f@|
  00458	00000000	 DCD         |??_C@_0EF@BGCELHEH@ERROR?3?5FlashErase?3?5block?5erase?5f@|
  0045c	00000000	 DCD         |??_C@_02PCIJFNDE@?$AN?6?$AA@|
  00460	00000000	 DCD         |g_FlashDeviceType|
  00464	00000000	 DCD         |??_C@_01LFCBOECM@?4?$AA@|
  00468	00000000	 DCD         |??_C@_0DN@CNHGHOKP@INFO?3?5FlashErase?3?5erasing?5flash?5@|
  0046c	00000000	 DCD         |??_C@_0FM@DKNOGHIG@ERROR?3?5FlashErase?3?5unrecoverable@|
  00470	00000000	 DCD         |??_C@_0DD@CNMLMBBN@ERROR?3?5FlashErase?3?5status?5regist@|
  00474	00000000	 DCD         |??_C@_0DM@LJJPKICB@ERROR?3?5FlashErase?3?5clear?5lock?5bi@|
  00478	00000000	 DCD         |??_C@_0DM@MGNKKOMD@ERROR?3?5FlashErase?3?5clear?5lock?5bi@|
  0047c	00000000	 DCD         |??_C@_0DN@DBAEMJLA@ERROR?3?5FlashErase?3?5command?5seque@|
  00480	00000000	 DCD         |??_C@_0DN@EOEBMPFC@ERROR?3?5FlashErase?3?5command?5seque@|
  00484	00000000	 DCD         |??_C@_0DK@BGKLKEKO@ERROR?3?5FlashErase?3?5voltage?5range@|
  00488	00000000	 DCD         |??_C@_0DK@GJOOKCEM@ERROR?3?5FlashErase?3?5voltage?5range@|
  0048c	00000000	 DCD         |??_C@_0DN@FJFKBFNH@WARNING?3?5FlashErase?3?5calculation@|
  00490	00000000	 DCD         |??_C@_0CO@LAPCIDHL@ERROR?3?5FlashErase?3?5unrecognized?5@|
  00494		 |$M40374|

			 ENDP  ; |FlashErase|

	EXPORT	|FlashInit|

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

  00000			 AREA	 |.pdata$$FlashInit|, PDATA, SELECTION=5, ASSOC=|.text| { |FlashInit| } ; comdat associative
|$T40402| DCD	|$L40401|
	DCD	0x40003401
; Function compile flags: /Ogsy

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

  00000		 |FlashInit| PROC

; 441  : {

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

; 442  :     // Read the device ID and determine the flash part type.
; 443  :     //
; 444  :     g_FlashDeviceType = DetectFlashDevice(FlashStart);

  00004	e3a03609	 mov         r3, #9, 12
  00008	e3833090	 orr         r3, r3, #0x90
  0000c	e5803000	 str         r3, [r0]
  00010	e5903004	 ldr         r3, [r0, #4]
  00014	e3a01cff	 mov         r1, #0xFF, 24
  00018	e38110ff	 orr         r1, r1, #0xFF
  0001c	e3a0eb22	 mov         lr, #0x22, 22
  00020	e0031001	 and         r1, r3, r1
  00024	e38ee00c	 orr         lr, lr, #0xC
  00028	e3a028ff	 mov         r2, #0xFF, 16
  0002c	e041300e	 sub         r3, r1, lr
  00030	e38220ff	 orr         r2, r2, #0xFF
  00034	e3530003	 cmp         r3, #3
  00038	e5802000	 str         r2, [r0]
  0003c	93a02001	 movls       r2, #1
  00040	9a000018	 bls         |$L40384|
  00044	e3a03b22	 mov         r3, #0x22, 22
  00048	e3833012	 orr         r3, r3, #0x12
  0004c	e0413003	 sub         r3, r1, r3
  00050	e3530003	 cmp         r3, #3
  00054	93a02002	 movls       r2, #2
  00058	9a000012	 bls         |$L40384|
  0005c	e3a03b22	 mov         r3, #0x22, 22
  00060	e3833001	 orr         r3, r3, #1
  00064	e0413003	 sub         r3, r1, r3
  00068	e3530002	 cmp         r3, #2
  0006c	93a02003	 movls       r2, #3
  00070	9a00000c	 bls         |$L40384|
  00074	e3a03b22	 mov         r3, #0x22, 22
  00078	e3833005	 orr         r3, r3, #5
  0007c	e0413003	 sub         r3, r1, r3
  00080	e3530002	 cmp         r3, #2
  00084	93a02004	 movls       r2, #4
  00088	9a000006	 bls         |$L40384|
  0008c	e2413016	 sub         r3, r1, #0x16
  00090	e3530002	 cmp         r3, #2
  00094	93a02005	 movls       r2, #5
  00098	9a000002	 bls         |$L40384|
  0009c	e59f0028	 ldr         r0, [pc, #0x28]
  000a0	eb000000	 bl          EdbgOutputDebugString
  000a4	e3a02000	 mov         r2, #0
  000a8		 |$L40384|
  000a8	e59f3018	 ldr         r3, [pc, #0x18]

; 445  : 
; 446  :     return((g_FlashDeviceType != NONE) ? TRUE : FALSE);

  000ac	e3520000	 cmp         r2, #0
  000b0	13a00001	 movne       r0, #1
  000b4	e5832000	 str         r2, [r3]

; 447  : }

  000b8	149de004	 ldrne       lr, [sp], #4

; 445  : 
; 446  :     return((g_FlashDeviceType != NONE) ? TRUE : FALSE);

  000bc	03a00000	 moveq       r0, #0

; 447  : }

  000c0	049de004	 ldreq       lr, [sp], #4
  000c4	e12fff1e	 bx          lr
  000c8		 |$L40404|
  000c8	00000000	 DCD         |g_FlashDeviceType|
  000cc	00000000	 DCD         |??_C@_0DH@OBMGOPJF@INFO?3?5DetectFlashDevice?3?5flash?5t@|
  000d0		 |$M40400|

			 ENDP  ; |FlashInit|

	EXPORT	|FlashRead|
	IMPORT	|memcpy|

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

  00000			 AREA	 |.pdata$$FlashRead|, PDATA, SELECTION=5, ASSOC=|.text| { |FlashRead| } ; comdat associative
|$T40416| DCD	|$L40415|
	DCD	0x40000b01
; Function compile flags: /Ogsy

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

  00000		 |FlashRead| PROC

; 451  : {

  00000		 |$L40415|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M40413|
  00004	e1b03001	 movs        r3, r1

; 452  :     if (!pDataBuffer) return(FALSE);

  00008	03a00000	 moveq       r0, #0

; 458  : }

  0000c	049de004	 ldreq       lr, [sp], #4
  00010	012fff1e	 bxeq        lr

; 453  : 
; 454  :     // TODO - check flash address...
; 455  :     memcpy((void *)pDataBuffer, (const void *)FlashStart, DataLength);

  00014	e1a01000	 mov         r1, r0
  00018	e1a00003	 mov         r0, r3
  0001c	eb000000	 bl          memcpy

; 456  : 
; 457  :     return(TRUE);

  00020	e3a00001	 mov         r0, #1

; 458  : }

  00024	e49de004	 ldr         lr, [sp], #4
  00028	e12fff1e	 bx          lr
  0002c		 |$M40414|

			 ENDP  ; |FlashRead|

	EXPORT	|??_C@_0DB@PKAGHONA@?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?5FlashStart_Addr?5?$DN?50x?$CF@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CO@BHODJGNH@ERROR?3?5FlashWrite?3?5unrecognized?5@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CI@KIPMHENK@INFO?3?5FlashWrite?3?5writing?5to?5fla@| [ DATA ] ; `string'
	EXPORT	|??_C@_0FM@EPPFHNCB@ERROR?3?5FlashWrite?3?5flash?5program@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DL@HPDDOHNE@INFO?3?5FlashWrite?3?5verifying?5the?5@| [ DATA ] ; `string'
	EXPORT	|??_C@_0FH@HBFAGKLL@ERROR?3?5FlashWrite?3?5verification?5@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DD@IDDBKFOE@INFO?3?5FlashWrite?3?5flash?5programm@| [ DATA ] ; `string'
	EXPORT	|FlashWrite|

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

  00000			 AREA	 |.pdata$$FlashWrite|, PDATA, SELECTION=5, ASSOC=|.text| { |FlashWrite| } ; comdat associative
|$T40463| DCD	|$L40462|
	DCD	0x4000af02

  00000			 AREA	 |.rdata| { |??_C@_0DD@IDDBKFOE@INFO?3?5FlashWrite?3?5flash?5programm@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DD@IDDBKFOE@INFO?3?5FlashWrite?3?5flash?5programm@| DCB "INFO: Fl"
	DCB	"ashWrite: flash programmed successfully!", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0FH@HBFAGKLL@ERROR?3?5FlashWrite?3?5verification?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0FH@HBFAGKLL@ERROR?3?5FlashWrite?3?5verification?5@| DCB "ERROR: F"
	DCB	"lashWrite: verification failure at address 0x%x (expecte"
	DCB	"d 0x%x actual 0x%x))", 0xd, 0xa, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DL@HPDDOHNE@INFO?3?5FlashWrite?3?5verifying?5the?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DL@HPDDOHNE@INFO?3?5FlashWrite?3?5verifying?5the?5@| DCB "INFO: F"
	DCB	"lashWrite: verifying the data written to flash...", 0xd, 0xa
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_0FM@EPPFHNCB@ERROR?3?5FlashWrite?3?5flash?5program@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0FM@EPPFHNCB@ERROR?3?5FlashWrite?3?5flash?5program@| DCB "ERROR: F"
	DCB	"lashWrite: flash programming failure at address 0x%x (ex"
	DCB	"pected 0x%x actual 0x%x).", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CI@KIPMHENK@INFO?3?5FlashWrite?3?5writing?5to?5fla@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CI@KIPMHENK@INFO?3?5FlashWrite?3?5writing?5to?5fla@| DCB "INFO: F"
	DCB	"lashWrite: writing to flash...", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CO@BHODJGNH@ERROR?3?5FlashWrite?3?5unrecognized?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CO@BHODJGNH@ERROR?3?5FlashWrite?3?5unrecognized?5@| DCB "ERROR: F"
	DCB	"lashWrite: unrecognized flash part.", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DB@PKAGHONA@?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?5FlashStart_Addr?5?$DN?50x?$CF@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DB@PKAGHONA@?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?$CK?5FlashStart_Addr?5?$DN?50x?$CF@| DCB "*"
	DCB	"********* FlashStart_Addr = 0x%x ************", 0xd, 0xa
	DCB	0x0					; `string'
; Function compile flags: /Ogsy

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

  00000		 |FlashWrite| PROC

; 463  : {

  00000		 |$L40462|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd01c	 sub         sp, sp, #0x1C
  00008		 |$M40460|
  00008	e1a04002	 mov         r4, r2
  0000c	e1a07001	 mov         r7, r1

; 464  :     UINT32 i,j,b;
; 465  :     UINT32 sizeFlashCache; // size in bytes of the flash cache
; 466  :     UINT32 chunksPerBlock;
; 467  :     UINT32 count;
; 468  :     UINT32 val = 0;
; 469  :     UINT32 dwLength = DataLength;
; 470  : 
; 471  :     volatile UINT32 FlashStart = (volatile UINT32 *)(Cache_FlashStart | CACHED_TO_UNCACHED_OFFSET);	//SG2 ADD

  00010	e3803202	 orr         r3, r0, #2, 4
  00014	e58d3000	 str         r3, [sp]

; 472  :     
; 473  :     volatile UINT32 *pFlash         = (volatile UINT32 *) FlashStart;
; 474  :     volatile UINT32 *pBlockAddress  = (volatile UINT32 *) (FlashStart);
; 475  :     volatile UINT32 *pDeviceAddress = (volatile UINT32 *) FlashStart;
; 476  :     volatile UINT32 *pFlashCache    = (UINT32 *) pDataBuffer;
; 477  : 
; 478  :     volatile UINT32 *pdwFlashStart;
; 479  :     volatile UINT32 *pdwRamStart;
; 480  : 
; 481  :     EdbgOutputDebugString("********** FlashStart_Addr = 0x%x ************\r\n",FlashStart);

  00018	e59f0298	 ldr         r0, [pc, #0x298]
  0001c	e59d3000	 ldr         r3, [sp]
  00020	e59db000	 ldr         r11, [sp]
  00024	e58d4018	 str         r4, [sp, #0x18]
  00028	e58d3014	 str         r3, [sp, #0x14]
  0002c	e59d3000	 ldr         r3, [sp]
  00030	e59d1000	 ldr         r1, [sp]
  00034	e58d7008	 str         r7, [sp, #8]
  00038	e58d3010	 str         r3, [sp, #0x10]
  0003c	eb000000	 bl          EdbgOutputDebugString

; 482  : 
; 483  :     if (g_FlashDeviceType == NONE)

  00040	e59f6260	 ldr         r6, [pc, #0x260]
  00044	e5963000	 ldr         r3, [r6]
  00048	e3530000	 cmp         r3, #0
  0004c	1a000003	 bne         |$L40167|

; 484  :     {
; 485  :         EdbgOutputDebugString("ERROR: FlashWrite: unrecognized flash part.\r\n");

  00050	e59f025c	 ldr         r0, [pc, #0x25C]

⌨️ 快捷键说明

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