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

📄 am29f800.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
0005ac  e51f008c          LDR      r0,|L1.1320|
0005b0  e5901000          LDR      r1,[r0,#0]  ; targetAddress
0005b4  e28f0f54          ADR      r0,|L1.1804|
0005b8  ebfffffe          BL       Uart_Printf
;;;137        Uart_Printf("target block size=0x%x\n",targetSize);
0005bc  e51f0098          LDR      r0,|L1.1324|
0005c0  e5901000          LDR      r1,[r0,#0]  ; targetSize
0005c4  e28f0f56          ADR      r0,|L1.1828|
0005c8  ebfffffe          BL       Uart_Printf
;;;138        
;;;139        if(srcOffset<0x4000)nextSrcOffset=0x4000;
0005cc  e51f00e8          LDR      r0,|L1.1260|
0005d0  e5900000          LDR      r0,[r0,#0]  ; srcOffset
0005d4  e3500c40          CMP      r0,#0x4000
0005d8  2a000003          BCS      |L1.1516|
0005dc  e3a00c40          MOV      r0,#0x4000
0005e0  e51f111c          LDR      r1,|L1.1228|
0005e4  e5810000          STR      r0,[r1,#0]  ; nextSrcOffset@InputTargetAddr_1
0005e8  ea00001c          B        |L1.1632|
;;;140        else if(srcOffset<0x6000)nextSrcOffset=0x6000;
                  |L1.1516|
0005ec  e51f0108          LDR      r0,|L1.1260|
0005f0  e5900000          LDR      r0,[r0,#0]  ; srcOffset
0005f4  e3500c60          CMP      r0,#0x6000
0005f8  2a000003          BCS      |L1.1548|
0005fc  e3a00c60          MOV      r0,#0x6000
000600  e51f113c          LDR      r1,|L1.1228|
000604  e5810000          STR      r0,[r1,#0]  ; nextSrcOffset@InputTargetAddr_1
000608  ea000014          B        |L1.1632|
;;;141        else if(srcOffset<0x8000)nextSrcOffset=0x8000;
                  |L1.1548|
00060c  e51f0128          LDR      r0,|L1.1260|
000610  e5900000          LDR      r0,[r0,#0]  ; srcOffset
000614  e3500c80          CMP      r0,#0x8000
000618  2a000003          BCS      |L1.1580|
00061c  e3a00c80          MOV      r0,#0x8000
000620  e51f115c          LDR      r1,|L1.1228|
000624  e5810000          STR      r0,[r1,#0]  ; nextSrcOffset@InputTargetAddr_1
000628  ea00000c          B        |L1.1632|
;;;142        else if(srcOffset<0x10000)nextSrcOffset=0x10000; 
                  |L1.1580|
00062c  e51f0148          LDR      r0,|L1.1260|
000630  e5900000          LDR      r0,[r0,#0]  ; srcOffset
000634  e3500b40          CMP      r0,#0x10000
000638  2a000003          BCS      |L1.1612|
00063c  e3a00b40          MOV      r0,#0x10000
000640  e51f117c          LDR      r1,|L1.1228|
000644  e5810000          STR      r0,[r1,#0]  ; nextSrcOffset@InputTargetAddr_1
000648  ea000004          B        |L1.1632|
;;;143        else nextSrcOffset=srcOffset+0x10000;
                  |L1.1612|
00064c  e51f0168          LDR      r0,|L1.1260|
000650  e5900000          LDR      r0,[r0,#0]  ; srcOffset
000654  e2800b40          ADD      r0,r0,#0x10000
000658  e51f1194          LDR      r1,|L1.1228|
00065c  e5810000          STR      r0,[r1,#0]  ; nextSrcOffset@InputTargetAddr_1
;;;144        
;;;145        if(targetAddress<0x4000)nextTargetAddr=0x4000;
                  |L1.1632|
000660  e51f0140          LDR      r0,|L1.1320|
000664  e5900000          LDR      r0,[r0,#0]  ; targetAddress
000668  e3500c40          CMP      r0,#0x4000
00066c  2a000003          BCS      |L1.1664|
000670  e3a00c40          MOV      r0,#0x4000
000674  e51f118c          LDR      r1,|L1.1264|
000678  e5810000          STR      r0,[r1,#0]  ; nextTargetAddr@InputTargetAddr_0
00067c  ea00001c          B        |L1.1780|
;;;146        else if(targetAddress<0x6000)nextTargetAddr=0x6000;
                  |L1.1664|
000680  e51f0160          LDR      r0,|L1.1320|
000684  e5900000          LDR      r0,[r0,#0]  ; targetAddress
000688  e3500c60          CMP      r0,#0x6000
00068c  2a000003          BCS      |L1.1696|
000690  e3a00c60          MOV      r0,#0x6000
000694  e51f11ac          LDR      r1,|L1.1264|
000698  e5810000          STR      r0,[r1,#0]  ; nextTargetAddr@InputTargetAddr_0
00069c  ea000014          B        |L1.1780|
;;;147        else if(targetAddress<0x8000)nextTargetAddr=0x8000;
                  |L1.1696|
0006a0  e51f0180          LDR      r0,|L1.1320|
0006a4  e5900000          LDR      r0,[r0,#0]  ; targetAddress
0006a8  e3500c80          CMP      r0,#0x8000
0006ac  2a000003          BCS      |L1.1728|
0006b0  e3a00c80          MOV      r0,#0x8000
0006b4  e51f11cc          LDR      r1,|L1.1264|
0006b8  e5810000          STR      r0,[r1,#0]  ; nextTargetAddr@InputTargetAddr_0
0006bc  ea00000c          B        |L1.1780|
;;;148        else if(targetAddress<0x10000)nextTargetAddr=0x10000; 
                  |L1.1728|
0006c0  e51f01a0          LDR      r0,|L1.1320|
0006c4  e5900000          LDR      r0,[r0,#0]  ; targetAddress
0006c8  e3500b40          CMP      r0,#0x10000
0006cc  2a000003          BCS      |L1.1760|
0006d0  e3a00b40          MOV      r0,#0x10000
0006d4  e51f11ec          LDR      r1,|L1.1264|
0006d8  e5810000          STR      r0,[r1,#0]  ; nextTargetAddr@InputTargetAddr_0
0006dc  ea000004          B        |L1.1780|
;;;149        else nextTargetAddr=targetAddress+0x10000;
                  |L1.1760|
0006e0  e51f01c0          LDR      r0,|L1.1320|
0006e4  e5900000          LDR      r0,[r0,#0]  ; targetAddress
0006e8  e2800b40          ADD      r0,r0,#0x10000
0006ec  e51f1204          LDR      r1,|L1.1264|
0006f0  e5810000          STR      r0,[r1,#0]  ; nextTargetAddr@InputTargetAddr_0
;;;150     
;;;151    
;;;152    }
                  |L1.1780|
0006f4  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.1784|
0006f8  72756f73          DCB      "sour"
0006fc  6f206563          DCB      "ce o"
000700  65736666          DCB      "ffse"
000704  78303d74          DCB      "t=0x"
000708  000a7825          DCB      "%x\n\0"
                  |L1.1804|
00070c  67726174          DCB      "targ"
000710  61207465          DCB      "et a"
000714  65726464          DCB      "ddre"
000718  303d7373          DCB      "ss=0"
00071c  0a782578          DCB      "x%x\n"
000720  00000000          DCB      "\0\0\0\0"
                  |L1.1828|
000724  67726174          DCB      "targ"
000728  62207465          DCB      "et b"
00072c  6b636f6c          DCB      "lock"
000730  7a697320          DCB      " siz"
000734  78303d65          DCB      "e=0x"
000738  000a7825          DCB      "%x\n\0"
                          ENDP

                  ProgramAM29F800 PROC
;;;35     void ProgramAM29F800(void)
;;;36     {
00073c  e92d4010          STMFD    sp!,{r4,lr}
;;;37         int i;
;;;38     
;;;39         InputTargetAddr();
000740  ebfffffe          BL       InputTargetAddr
;;;40         
;;;41         if(downloadProgramSize==0)
000744  e51f02e4          LDR      r0,|L1.1128|
000748  e5900000          LDR      r0,[r0,#0]  ; downloadProgramSize
00074c  e3500000          CMP      r0,#0
000750  1a000008          BNE      |L1.1912|
;;;42         {
;;;43             Uart_Printf("The data must be downloaded using ICE from %x\n",downloadAddress);
000754  e59f00e0          LDR      r0,|L1.2108|
000758  e5901000          LDR      r1,[r0,#0]  ; downloadAddress
00075c  e28f00dc          ADR      r0,|L1.2112|
000760  ebfffffe          BL       Uart_Printf
;;;44         	srcAddress=downloadAddress;
000764  e59f00d0          LDR      r0,|L1.2108|
000768  e5900000          LDR      r0,[r0,#0]  ; downloadAddress
00076c  e59f10fc          LDR      r1,|L1.2160|
000770  e5810000          STR      r0,[r1,#0]  ; srcAddress
000774  ea000004          B        |L1.1932|
;;;45         }
;;;46         else
;;;47         	srcAddress=downloadAddress+4; //to discard the data head for the size
                  |L1.1912|
000778  e59f00bc          LDR      r0,|L1.2108|
00077c  e5900000          LDR      r0,[r0,#0]  ; downloadAddress
000780  e2800004          ADD      r0,r0,#4
000784  e59f10e4          LDR      r1,|L1.2160|
000788  e5810000          STR      r0,[r1,#0]  ; srcAddress
;;;48         	
;;;49     
;;;50         Uart_Printf("[Check AM29LVxxx]\n");
                  |L1.1932|
00078c  e28f00e0          ADR      r0,|L1.2164|
000790  ebfffffe          BL       Uart_Printf
;;;51         switch(AM29F800_CheckId())  //04.01.12 junon
000794  ebfffffe          BL       AM29F800_CheckId
000798  e3500001          CMP      r0,#1
00079c  0a000006          BEQ      |L1.1980|
0007a0  e3500002          CMP      r0,#2
0007a4  0a000007          BEQ      |L1.1992|
0007a8  e3500003          CMP      r0,#3
0007ac  0a000008          BEQ      |L1.2004|
0007b0  e3500004          CMP      r0,#4
0007b4  1a00000c          BNE      |L1.2028|
0007b8  ea000008          B        |L1.2016|
;;;52         {
;;;53     	case 1 :
;;;54     	    Uart_Printf("This device is AM29LV200B!\n");	
                  |L1.1980|
0007bc  e28f00c4          ADR      r0,|L1.2184|
0007c0  ebfffffe          BL       Uart_Printf
;;;55     	    break;
0007c4  ea00000b          B        |L1.2040|
;;;56     	case 2 :
;;;57     	    Uart_Printf("This device is AM29LV400B!\n");	
                  |L1.1992|
0007c8  e28f00d4          ADR      r0,|L1.2212|
0007cc  ebfffffe          BL       Uart_Printf
;;;58     	    break;
0007d0  ea000008          B        |L1.2040|
;;;59     	case 3 :
;;;60     	    Uart_Printf("This device is AM29LV800B!\n");	
                  |L1.2004|
0007d4  e28f00e4          ADR      r0,|L1.2240|
0007d8  ebfffffe          BL       Uart_Printf
;;;61     	    break;
0007dc  ea000005          B        |L1.2040|
;;;62     	case 4 :
;;;63     	    Uart_Printf("This device is AM29LV160B!\n");	
                  |L1.2016|
0007e0  e28f00f4          ADR      r0,|L1.2268|
0007e4  ebfffffe          BL       Uart_Printf
;;;64     	    break;
0007e8  ea000002          B        |L1.2040|
;;;65         	default:
;;;66     	    Uart_Printf("ID Check Error!!!\n");
                  |L1.2028|
0007ec  e28f0f41          ADR      r0,|L1.2296|
0007f0  ebfffffe          BL       Uart_Printf
;;;67     	    return;
;;;68         }
;;;69         
;;;70         Uart_Printf("\nErase the sector:0x%x.\n",targetAddress);
;;;71         
;;;72         AM29F800_EraseSector(targetAddress);
;;;73         if(!BlankCheck(targetAddress,targetSize))
;;;74         {
;;;75     	Uart_Printf("Blank Check Error!!!\n");
;;;76     	return;
;;;77         }
;;;78     
;;;79         Uart_Printf("\nStart of the data writing.\n");
;;;80     
;;;81         for(i=0x0;i<targetSize;i+=2) 
;;;82         {
;;;83             AM29F800_ProgFlash(  i+targetAddress,*( (U16 *)(srcAddress+srcOffset+i) )  );
;;;84             if((i%0x1000)==0)Uart_Printf("%x ",i);
;;;85         }
;;;86         Uart_Printf("\nEnd of the data writing!!!\n");
;;;87     
;;;88         _RESET();
;;;89     
;;;90         Uart_Printf("\nVerifying Start.\n");
;;;91         for(i=0x0;i<targetSize;i+=2) 
;;;92         {
;;;93             if(*( (U16 *)(i+targetAddress) )!=*( (U16 *)(srcAddress+srcOffset+i) )  )
;;;94     	{    
;;;95     	    Uart_Printf("%x=verify error\n",i+targetAddress);
;;;96     	    return;
;;;97     	}
;;;98             if((i%0x1000)==0)Uart_Printf("%x ",i);
;;;99         }
;;;100        Uart_Printf("\nVerifying End!!!\n");
;;;101    
;;;102        Uart_Printf("Do you want another programming without additional download? [y/n]\n");
;;;103        if(Uart_Getch()=='y')ProgramAM29F800();
;;;104    }
                  |L1.2036|
0007f4  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.2040|
0007f8  e51f02d8          LDR      r0,|L1.1320|          ;70
0007fc  e5901000          LDR      r1,[r0,#0]            ;70  ; targetAddress
000800  e28f0f41          ADR      r0,|L1.2316|          ;70
000804  ebfffffe          BL       Uart_Printf           ;70
000808  e51f02e8          LDR      r0,|L1.1320|          ;72
00080c  e5900000          LDR      r0,[r0,#0]            ;72  ; targetAddress
000810  ebfffffe          BL       AM29F800_EraseSector  ;72
000814  e51f02f0          LDR      r0,|L1.1324|          ;73
000818  e5901000          LDR      r1,[r0,#0]            ;73  ; targetSize
00081c  e51f02fc          LDR      r0,|L1.1320|          ;73
000820  e5900000          LDR      r0,[r0,#0]            ;73  ; targetAddress
000824  ebfffffe          BL       BlankCheck            ;73
000828  e3500000          CMP      r0,#0                 ;73
00082c  1a000043          BNE      |L1.2368|             ;73
000830  e28f00f0          ADR      r0,|L1.2344|          ;75
000834  ebfffffe          BL       Uart_Printf           ;75
000838  eaffffed          B        |L1.2036|             ;76
                  |L1.2108|
00083c  00000000          DCD      downloadAddress       ;76
                  |L1.2112|
000840  20656854          DCB      "The "                ;76
000844  61746164          DCB      "data"                ;76

⌨️ 快捷键说明

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