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

📄 strata16.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;161    }
000248  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.588|
00024c  636f6c42          DCB      "Bloc"
000250  78255f6b          DCB      "k_%x"
000254  61724520          DCB      " Era"
000258  4f206573          DCB      "se O"
00025c  202e4b2e          DCB      ".K. "
000260  0000000a          DCB      "\n\0\0\0"
                  |L1.612|
000264  00000000          DCD      ||.bss$2||
                          ENDP

                  Strata_BlankCheck PROC
;;;164    int Strata_BlankCheck(int targetAddr,int targetSize) 
;;;165    {
000268  e92d40f8          STMFD    sp!,{r3-r7,lr}
00026c  e1a06000          MOV      r6,r0
000270  e1a07001          MOV      r7,r1
;;;166        int i,j;
;;;167        for (i=0; i<targetSize; i+=2) 
000274  e3a04000          MOV      r4,#0
                  |L1.632|
000278  e1540007          CMP      r4,r7
00027c  aa00000d          BGE      |L1.696|
000280  ea000001          B        |L1.652|
                  |L1.644|
000284  e2844002          ADD      r4,r4,#2
000288  eafffffa          B        |L1.632|
;;;168        {
;;;169            j=*((volatile U16 *)(i+targetAddr));
                  |L1.652|
00028c  e19450b6          LDRH     r5,[r4,r6]
;;;170            if (j!=0xffff)      // In erasure it changes all block dta to 0xff
000290  e245ccff          SUB      r12,r5,#0xff00
000294  e25cc0ff          SUBS     r12,r12,#0xff
000298  0a000005          BEQ      |L1.692|
;;;171            {
;;;172                Uart_Printf("E : %x = %x\n", (i+targetAddr), j);
00029c  e0841006          ADD      r1,r4,r6
0002a0  e1a02005          MOV      r2,r5
0002a4  e28f0014          ADR      r0,|L1.704|
0002a8  ebfffffe          BL       _printf
;;;173                return 0;
0002ac  e3a00000          MOV      r0,#0
;;;174            }
;;;175        }
;;;176        return 1;
;;;177    }
                  |L1.688|
0002b0  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.692|
0002b4  eafffff2          B        |L1.644|              ;175
                  |L1.696|
0002b8  e3a00001          MOV      r0,#1                 ;176
0002bc  eafffffb          B        |L1.688|              ;176
                  |L1.704|
0002c0  203a2045          DCB      "E : "                ;176
0002c4  3d207825          DCB      "%x ="                ;176
0002c8  0a782520          DCB      " %x\n"               ;176
0002cc  00000000          DCB      "\0\0\0\0"            ;176
                          ENDP

                  Strata_ProgFlash PROC
;;;181    int Strata_ProgFlash(U32 realAddr,U16 data) 
;;;182    	{
0002d0  e92d41f0          STMFD    sp!,{r4-r8,lr}
0002d4  e1a04000          MOV      r4,r0
0002d8  e1a07001          MOV      r7,r1
;;;183    		volatile U16 *ptargetAddr;
;;;184    		unsigned int ReadStatus, status;
;;;185    		unsigned int bSR7,bSR1,bSR4;	  // Write State Machine Status, 8MB Intel Strate Flash ROM
;;;186    	
;;;187    		ptargetAddr = (volatile U16 *)realAddr;
0002dc  e1a08004          MOV      r8,r4
;;;188    
;;;189    
;;;190    		_WR(realAddr, 0x0040);	// realAddr is any valid adress within the device
0002e0  e3a00040          MOV      r0,#0x40
0002e4  e1c400b0          STRH     r0,[r4,#0]
;;;191    		*ptargetAddr=data;			// 16 bit data
0002e8  e1a04008          MOV      r4,r8
0002ec  e1c870b0          STRH     r7,[r8,#0]
;;;192    	
;;;193    		_WR(realAddr, 0x0070);	// Read Status Register
0002f0  e3a00070          MOV      r0,#0x70
0002f4  e1c400b0          STRH     r0,[r4,#0]
;;;194    		ReadStatus=_RD(realAddr);	// realAddr is any valid address within the device
0002f8  e1d400b0          LDRH     r0,[r4,#0]
0002fc  e1a05000          MOV      r5,r0
;;;195    		bSR7=ReadStatus & (1<<7);
000300  e2056080          AND      r6,r5,#0x80
;;;196    
;;;197    		while(!bSR7 ) 
000304  e1a00000          NOP      
                  |L1.776|
000308  e3560000          CMP      r6,#0
00030c  1a000005          BNE      |L1.808|
;;;198    		{
;;;199    			_WR(realAddr, 0x0070);		  // Read Status Register
000310  e3a00070          MOV      r0,#0x70
000314  e1c400b0          STRH     r0,[r4,#0]
;;;200    			ReadStatus=_RD(realAddr);
000318  e1d400b0          LDRH     r0,[r4,#0]
00031c  e1a05000          MOV      r5,r0
;;;201    			bSR7=ReadStatus & (1<<7);
000320  e2056080          AND      r6,r5,#0x80
;;;202    		}
000324  eafffff7          B        |L1.776|
;;;203    		
;;;204    		_WR(realAddr, 0x0070); 
                  |L1.808|
000328  e3a00070          MOV      r0,#0x70
00032c  e1c400b0          STRH     r0,[r4,#0]
;;;205    		ReadStatus=_RD(realAddr);			  // Real Status Register
000330  e1d400b0          LDRH     r0,[r4,#0]
000334  e1a05000          MOV      r5,r0
;;;206    	
;;;207    		if(ReadStatus&(1<<3))
000338  e3150008          TST      r5,#8
00033c  0a000005          BEQ      |L1.856|
;;;208    		{
;;;209    		Uart_Printf("Voltage Range Error\n");
000340  e28f0054          ADR      r0,|L1.924|
000344  ebfffffe          BL       _printf
;;;210    			_WR(realAddr, 0x0050);			// Clear Status Register	
000348  e3a00050          MOV      r0,#0x50
00034c  e1c400b0          STRH     r0,[r4,#0]
;;;211    		return 0;
000350  e3a00000          MOV      r0,#0
;;;212    		}	
;;;213    		if(ReadStatus&(1<<1))
;;;214    		{
;;;215    		Uart_Printf("Device Protect Error\n");
;;;216    			_WR(realAddr, 0x0050);			// Clear Status Register	
;;;217    		return 0;
;;;218    		}	
;;;219    		if(ReadStatus&(1<<4))
;;;220    		{
;;;221    		Uart_Printf("Programming Error\n");
;;;222    			_WR(realAddr, 0x0050);			// Clear Status Register	
;;;223    		return 0;
;;;224    		}	
;;;225    	
;;;226    	}
                  |L1.852|
000354  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.856|
000358  e3150002          TST      r5,#2                 ;213
00035c  0a000005          BEQ      |L1.888|              ;213
000360  e28f004c          ADR      r0,|L1.948|           ;215
000364  ebfffffe          BL       _printf               ;215
000368  e3a00050          MOV      r0,#0x50              ;216
00036c  e1c400b0          STRH     r0,[r4,#0]            ;216
000370  e3a00000          MOV      r0,#0                 ;217
000374  eafffff6          B        |L1.852|              ;217
                  |L1.888|
000378  e3150010          TST      r5,#0x10              ;219
00037c  0a000005          BEQ      |L1.920|              ;219
000380  e28f0044          ADR      r0,|L1.972|           ;221
000384  ebfffffe          BL       _printf               ;221
000388  e3a00050          MOV      r0,#0x50              ;222
00038c  e1c400b0          STRH     r0,[r4,#0]            ;222
000390  e3a00000          MOV      r0,#0                 ;223
000394  eaffffee          B        |L1.852|              ;223
                  |L1.920|
000398  eaffffed          B        |L1.852|
                  |L1.924|
00039c  746c6f56          DCB      "Volt"
0003a0  20656761          DCB      "age "
0003a4  676e6152          DCB      "Rang"
0003a8  72452065          DCB      "e Er"
0003ac  0a726f72          DCB      "ror\n"
0003b0  00000000          DCB      "\0\0\0\0"
                  |L1.948|
0003b4  69766544          DCB      "Devi"
0003b8  50206563          DCB      "ce P"
0003bc  65746f72          DCB      "rote"
0003c0  45207463          DCB      "ct E"
0003c4  726f7272          DCB      "rror"
0003c8  0000000a          DCB      "\n\0\0\0"
                  |L1.972|
0003cc  676f7250          DCB      "Prog"
0003d0  6d6d6172          DCB      "ramm"
0003d4  20676e69          DCB      "ing "
0003d8  6f727245          DCB      "Erro"
0003dc  00000a72          DCB      "r\n\0\0"
                          ENDP

                  InputAddresses PROC
;;;329    static void InputAddresses(void)
;;;330    {
0003e0  e92d4008          STMFD    sp!,{r3,lr}
;;;331        Uart_Printf("\n[ 28F128J3A Writing Program ]\n");
0003e4  e28f008c          ADR      r0,|L1.1144|
0003e8  ebfffffe          BL       _printf
;;;332    
;;;333        Uart_Printf("\nSource size [0x?] : 0h~%xh\n",downloadProgramSize);
0003ec  e59f00a4          LDR      r0,|L1.1176|
0003f0  e5901000          LDR      r1,[r0,#0]  ; downloadProgramSize
0003f4  e28f00a0          ADR      r0,|L1.1180|
0003f8  ebfffffe          BL       _printf
;;;334        Uart_Printf("\nAvailable Target Offset Address:0h,10000h,20000h, ..., ff0000h\n"); 
0003fc  e59f00b8          LDR      r0,|L1.1212|
000400  ebfffffe          BL       _printf
;;;335        Uart_Printf("Input target address offset [0x?] : ");
000404  e28f00b4          ADR      r0,|L1.1216|
000408  ebfffffe          BL       _printf
;;;336        targetOffset=Uart_GetIntNum();
00040c  ebfffffe          BL       Uart_GetIntNum
000410  e59f10d0          LDR      r1,|L1.1256|
000414  e5810000          STR      r0,[r1,#0]  ; targetOffset
;;;337    	if(targetOffset==(U32)(-1)) targetOffset=0x0;	
000418  e59f00c8          LDR      r0,|L1.1256|
00041c  e5900000          LDR      r0,[r0,#0]  ; targetOffset
000420  e3700001          CMN      r0,#1
000424  1a000002          BNE      |L1.1076|
000428  e3a00000          MOV      r0,#0
00042c  e59f10b4          LDR      r1,|L1.1256|
000430  e5810000          STR      r0,[r1,#0]  ; targetOffset
;;;338        if(targetSize==0)
                  |L1.1076|
000434  e59f00b0          LDR      r0,|L1.1260|
000438  e5900000          LDR      r0,[r0,#0]  ; targetSize
00043c  e3500000          CMP      r0,#0
000440  1a00000b          BNE      |L1.1140|
;;;339        {
;;;340            Uart_Printf("Input target size [0x?] : ");
000444  e28f00a4          ADR      r0,|L1.1264|
000448  ebfffffe          BL       _printf
;;;341    		if(targetOffset==(U32)(-1)) targetOffset=0x0;	
00044c  e59f0094          LDR      r0,|L1.1256|
000450  e5900000          LDR      r0,[r0,#0]  ; targetOffset
000454  e3700001          CMN      r0,#1
000458  1a000002          BNE      |L1.1128|
00045c  e3a00000          MOV      r0,#0
000460  e59f1080          LDR      r1,|L1.1256|
000464  e5810000          STR      r0,[r1,#0]  ; targetOffset
;;;342            targetSize=Uart_GetIntNum();
                  |L1.1128|
000468  ebfffffe          BL       Uart_GetIntNum
00046c  e59f1078          LDR      r1,|L1.1260|
000470  e5810000          STR      r0,[r1,#0]  ; targetSize
;;;343        }
;;;344    }
                  |L1.1140|
000474  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.1144|
000478  32205b0a          DCB      "\n[ 2"
00047c  32314638          DCB      "8F12"
000480  41334a38          DCB      "8J3A"
000484  69725720          DCB      " Wri"
000488  676e6974          DCB      "ting"
00048c  6f725020          DCB      " Pro"
000490  6d617267          DCB      "gram"
000494  000a5d20          DCB      " ]\n\0"
                  |L1.1176|
000498  00000000          DCD      downloadProgramSize
                  |L1.1180|
00049c  756f530a          DCB      "\nSou"
0004a0  20656372          DCB      "rce "
0004a4  657a6973          DCB      "size"
0004a8  78305b20          DCB      " [0x"
0004ac  3a205d3f          DCB      "?] :"
0004b0  7e683020          DCB      " 0h~"
0004b4  0a687825          DCB      "%xh\n"
0004b8  00000000          DCB      "\0\0\0\0"
                  |L1.1212|
0004bc  00000000          DCD      ||.constdata$1||
                  |L1.1216|
0004c0  75706e49          DCB      "Inpu"
0004c4  61742074          DCB      "t ta"
0004c8  74656772          DCB      "rget"
0004cc  64646120          DCB      " add"
0004d0  73736572          DCB      "ress"
0004d4  66666f20          DCB      " off"
0004d8  20746573          DCB      "set "
0004dc  3f78305b          DCB      "[0x?"

⌨️ 快捷键说明

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