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

📄 mstick.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000b10  206b636f          DCB      "ock "
000b14  6f662023          DCB      "# fo"
000b18  65722072          DCB      "r re"
000b1c  62206461          DCB      "ad b"
000b20  6b636f6c          DCB      "lock"
000b24  00203a20          DCB      " : \0"
                  |L1.2856|
000b28  505f734d          DCB      "Ms_P"
000b2c  5f656761          DCB      "age_"
000b30  64616552          DCB      "Read"
000b34  2c642528          DCB      "(%d,"
000b38  0a296425          DCB      "%d)\n"
000b3c  00000000          DCB      "\0\0\0\0"
                  |L1.2880|
000b40  63656843          DCB      "Chec"
000b44  6d75736b          DCB      "ksum"
000b48  52524520          DCB      " ERR"
000b4c  4928524f          DCB      "OR(I"
000b50  78253a4e          DCB      "N:%x"
000b54  6c61432c          DCB      ",Cal"
000b58  78253a63          DCB      "c:%x"
000b5c  00000a29          DCB      ")\n\0\0"
                  |L1.2912|
000b60  7478450a          DCB      "\nExt"
000b64  64206172          DCB      "ra d"
000b68  20617461          DCB      "ata "
000b6c  00007369          DCB      "is\0\0"
                  |L1.2928|
000b70  7833250a          DCB      "\n%3x"
000b74  0020203a          DCB      ":  \0"
                  |L1.2936|
000b78  3230255b          DCB      "[%02"
000b7c  00005d78          DCB      "x]\0\0"
                  |L1.2944|
000b80  6165520a          DCB      "\nRea"
000b84  61502064          DCB      "d Pa"
000b88  64206567          DCB      "ge d"
000b8c  20617461          DCB      "ata "
000b90  00007369          DCB      "is\0\0"
                  |L1.2964|
000b94  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  Mstpc_Write_Status_Reg PROC
;;;1039   int Mstpc_Write_Status_Reg(U8 Status_Addr, U8 Status_Size, U8 *Buffer)
;;;1040   {
000b98  e92d41f0          STMFD    sp!,{r4-r8,lr}
000b9c  e1a08000          MOV      r8,r0
000ba0  e1a04001          MOV      r4,r1
000ba4  e1a06002          MOV      r6,r2
;;;1041   	//int i, cnt;
;;;1042   	int i;
;;;1043   	//U16 IntStatus1, htmp;
;;;1044   	U16 htmp;
;;;1045   
;;;1046   	//Status_Size = (Status_Size+1)*2 / 2;
;;;1047   	if(Status_Size%2) Status_Size+=1;
000ba8  e3140001          TST      r4,#1
000bac  0a000001          BEQ      |L1.3000|
000bb0  e2840001          ADD      r0,r4,#1
000bb4  e20040ff          AND      r4,r0,#0xff
;;;1048   	
;;;1049   	// Set R/W register address
;;;1050   	Mstpc_Write_Rw_Reg_Addr(0x0, 0x0, Status_Addr, Status_Size);
                  |L1.3000|
000bb8  e1a03004          MOV      r3,r4
000bbc  e1a02008          MOV      r2,r8
000bc0  e3a01000          MOV      r1,#0
000bc4  e3a00000          MOV      r0,#0
000bc8  ebfffffe          BL       Mstpc_Write_Rw_Reg_Addr
;;;1051   
;;;1052   	// Status read command.
;;;1053   	rTP_CMD = WRITE_REG | (Status_Size);
000bcc  e3840cb0          ORR      r0,r4,#0xb000
000bd0  e51f1ad0          LDR      r1,|L1.264|
000bd4  e5810000          STR      r0,[r1,#0]
;;;1054   	// Read status data.
;;;1055   	for(i=0; i<Status_Size; i+=2) {
000bd8  e3a05000          MOV      r5,#0
                  |L1.3036|
000bdc  e1550004          CMP      r5,r4
000be0  aa00000e          BGE      |L1.3104|
000be4  ea000001          B        |L1.3056|
                  |L1.3048|
000be8  e2855002          ADD      r5,r5,#2
000bec  eafffffa          B        |L1.3036|
;;;1056   		htmp = ((U16)Buffer[i+1])<<8 |(U16)Buffer[i]; 
                  |L1.3056|
000bf0  e7d60005          LDRB     r0,[r6,r5]
000bf4  e0861005          ADD      r1,r6,r5
000bf8  e5d11001          LDRB     r1,[r1,#1]
000bfc  e1807401          ORR      r7,r0,r1,LSL #8
;;;1057   		rDAT_FIFO = htmp;
000c00  e51f0b00          LDR      r0,|L1.264|
000c04  e5807008          STR      r7,[r0,#8]
;;;1058   		while(!TBE);
000c08  e1a00000          NOP      
                  |L1.3084|
000c0c  e51f0b0c          LDR      r0,|L1.264|
000c10  e5900004          LDR      r0,[r0,#4]
000c14  e3100002          TST      r0,#2
000c18  0afffffb          BEQ      |L1.3084|
;;;1059   	}
000c1c  eafffff1          B        |L1.3048|
;;;1060   	while(!INT_P_END);
                  |L1.3104|
000c20  e1a00000          NOP      
                  |L1.3108|
000c24  e51f0b24          LDR      r0,|L1.264|
000c28  e590000c          LDR      r0,[r0,#0xc]
000c2c  e3100080          TST      r0,#0x80
000c30  0afffffb          BEQ      |L1.3108|
;;;1061   	
;;;1062   }
000c34  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                          ENDP

                  Check_Wp PROC
;;;544    int Check_Wp(void)
;;;545    {
000c38  e92d4008          STMFD    sp!,{r3,lr}
;;;546    	U8 tmps[2];
;;;547    	
;;;548    	Mstpc_Read_Status_Reg(0x2, 0x1, tmps);
000c3c  e1a0200d          MOV      r2,sp
000c40  e3a01001          MOV      r1,#1
000c44  e3a00002          MOV      r0,#2
000c48  ebfffffe          BL       Mstpc_Read_Status_Reg
;;;549    	if(tmps[0] & STATUS_WP) {	// Write protect is enabled.
000c4c  e5dd0000          LDRB     r0,[sp,#0]
000c50  e3100001          TST      r0,#1
000c54  0a000001          BEQ      |L1.3168|
;;;550    		return 1;
000c58  e3a00001          MOV      r0,#1
;;;551    	}
;;;552    	else return 0;	// Not write-protect.
;;;553    	
;;;554    }
                  |L1.3164|
000c5c  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.3168|
000c60  e3a00000          MOV      r0,#0                 ;552
000c64  eafffffc          B        |L1.3164|             ;552
                          ENDP

                  Ms_Page_Write PROC
;;;557    int Ms_Page_Write(U32 Block_Addr, U32 Page_Addr, U8 *Write_Buffer)
;;;558    {
000c68  e92d43fe          STMFD    sp!,{r1-r9,lr}
000c6c  e1a09000          MOV      r9,r0
000c70  e1a08001          MOV      r8,r1
000c74  e1a06002          MOV      r6,r2
;;;559    	//int i, cnt=0;
;;;560    	int i;
;;;561    	//unsigned short IntStatus1, IntStatus2;
;;;562    	static int offset=0;
;;;563    	U8 Extra_Buffer[EXTRA_SIZE];
;;;564    	U16 Chksum, htmp;
;;;565    
;;;566    	//Uart_Printf("write data.\n");
;;;567    
;;;568    	// Check if write protect...
;;;569    	if(Check_Wp()==1) {	// Write protect is enabled.
000c78  ebfffffe          BL       Check_Wp
000c7c  e3500001          CMP      r0,#1
000c80  1a000001          BNE      |L1.3212|
;;;570    		return -1;
000c84  e3e00000          MVN      r0,#0
;;;571    	}
;;;572    	
;;;573    	// 1. SET R/W address in device TPC
;;;574    	Mstpc_Write_Rw_Reg_Addr(0x0, 0x0, 0x10, 0x6);
;;;575    
;;;576    	// 2. Write_Reg TPC
;;;577    	Mstpc_Write_Param_Reg(Block_Addr, PARAM_BAMD, Page_Addr, DE_AREA);
;;;578    
;;;579    	// make checksum...
;;;580    	for(Chksum=0, i=0; i<ONEPAGE_SIZE; i++)
;;;581    	{
;;;582    		Chksum += Write_Buffer[i];
;;;583    	
;;;584    	}
;;;585    	Uart_Printf("Write checksum is [%04x]\n", Chksum);
;;;586    	
;;;587    	// Write checksum.
;;;588    	Extra_Buffer[1] = (U8)(Chksum>>8);
;;;589    	Extra_Buffer[0] = (U8)Chksum;
;;;590    
;;;591    	Mstpc_Write_Status_Reg(CHKSUM_REG_START, CHKSUM_SIZE, Extra_Buffer);
;;;592    
;;;593    	
;;;594    	// SET_CMD TPC
;;;595    	Mstpc_Set_Command(BLOCK_WRITE);
;;;596    
;;;597    	// Get INT register
;;;598    	Int_Status = Mstpc_Get_Int(1, INT_BREQ);
;;;599    	//Uart_Printf("Page write cnt(%x).\n", Int_Status);
;;;600    
;;;601    
;;;602    	rTP_CMD = WRITE_PAGE_DATA | ONEPAGE_SIZE;
;;;603    	for(i=0; i<ONEPAGE_SIZE; i+=2)
;;;604    	{
;;;605    		htmp = ((U16)(Write_Buffer[i+1]))<<8 | (U8)Write_Buffer[i];
;;;606    		rDAT_FIFO = htmp;
;;;607    		while(!TBE);
;;;608    	}
;;;609    	while(!INT_P_END);
;;;610    
;;;611    	Int_Status = Mstpc_Get_Int(1, INT_CED);
;;;612    	//Uart_Printf("Page write end cnt(%x).\n", Int_Status);
;;;613    
;;;614    	offset++;
;;;615    }
                  |L1.3208|
000c88  e8bd83fe          LDMFD    sp!,{r1-r9,pc}
                  |L1.3212|
000c8c  e3a03006          MOV      r3,#6                 ;574
000c90  e3a02010          MOV      r2,#0x10              ;574
000c94  e3a01000          MOV      r1,#0                 ;574
000c98  e3a00000          MOV      r0,#0                 ;574
000c9c  ebfffffe          BL       Mstpc_Write_Rw_Reg_Addr ;574
000ca0  e3a03020          MOV      r3,#0x20              ;577
000ca4  e20820ff          AND      r2,r8,#0xff           ;577
000ca8  e3a01080          MOV      r1,#0x80              ;577
000cac  e1a00009          MOV      r0,r9                 ;577
000cb0  ebfffffe          BL       Mstpc_Write_Param_Reg ;577
000cb4  e3a05000          MOV      r5,#0                 ;580
000cb8  e3a04000          MOV      r4,#0                 ;580
                  |L1.3260|
000cbc  e3540f80          CMP      r4,#0x200             ;580
000cc0  aa000006          BGE      |L1.3296|             ;580
000cc4  ea000001          B        |L1.3280|             ;580
                  |L1.3272|
000cc8  e2844001          ADD      r4,r4,#1              ;580
000ccc  eafffffa          B        |L1.3260|             ;580
                  |L1.3280|
000cd0  e7d60004          LDRB     r0,[r6,r4]            ;582
000cd4  e0800005          ADD      r0,r0,r5              ;582
000cd8  e3c05b40          BIC      r5,r0,#0x10000        ;582
000cdc  eafffff9          B        |L1.3272|             ;584
                  |L1.3296|
000ce0  e1a01005          MOV      r1,r5                 ;585
000ce4  e28f00cc          ADR      r0,|L1.3512|          ;585
000ce8  ebfffffe          BL       _printf               ;585
000cec  e1a00425          MOV      r0,r5,LSR #8          ;588
000cf0  e5cd0001          STRB     r0,[sp,#1]            ;588
000cf4  e5cd5000          STRB     r5,[sp,#0]            ;589
000cf8  e1a0200d          MOV      r2,sp                 ;591
000cfc  e3a01002          MOV      r1,#2                 ;591
000d00  e3a0001a          MOV      r0,#0x1a              ;591
000d04  ebfffffe          BL       Mstpc_Write_Status_Reg ;591
000d08  e3a00055          MOV      r0,#0x55              ;595
000d0c  ebfffffe          BL       Mstpc_Set_Command     ;595
000d10  e3a01020          MOV      r1,#0x20              ;598
000d14  e3a00001          MOV      r0,#1                 ;598
000d18  ebfffffe          BL       Mstpc_Get_Int         ;598
000d1c  e51f1220          LDR      r1,|L1.2820|          ;598
000d20  e5c10000          STRB     r0,[r1,#0]            ;598  ; Int_Status
000d24  e3a00cd2          MOV      r0,#0xd200            ;602
000d28  e51f1c28          LDR      r1,|L1.264|           ;602
000d2c  e5810000          STR      r0,[r1,#0]            ;602
000d30  e3a04000          MOV      r4,#0                 ;603
                  |L1.3380|
000d34  e3540f80          CMP      r4,#0x200             ;603
000d38  aa00000e          BGE      |L1.3448|             ;603
000d3c  ea000001          B        |L1.3400|             ;603
                  |L1.3392|
000d40  e2844002          ADD      r4,r4,#2              ;603
000d44  eafffffa          B        |L1.3380|             ;603
                  |L1.3400|
000d48  e7d60004          LDRB     r0,[r6,r4]            ;605
000d4c  e0861004          ADD      r1,r6,r4              ;605
000d50  e5d11001          LDRB     r1,[r1,#1]            ;605
000d54  e1807401          ORR      r7,r0,r1,LSL #8       ;605
000d58  e51f0c58          LDR      r0,|L1.264|           ;606
000d5c  e5807008          STR      r7,[r0,#8]            ;606
000d60  e1a00000          NOP                            ;607
                  |L1.3428|
000d64  e51f0c64          LDR      r0,|L1.264|           ;607
000d68  e5900004          LDR      r0,[r0,#4]            ;607
000d6c  e3100002          TST      r0,#2                 ;607
000d70  0afffffb          BEQ      |L1.3428|             ;607
000d74  eafffff1          B        |L1.3392|             ;608
                  |L1.3448|
000d78  e1a00000          NOP                            ;609
                  |L1.3452|
000d7c  e51f0c7c          LDR      r0,|L1.264|           ;609
000d80  e590000c          LDR      r0,[r0,#0xc]          ;609
000d84  e3100080          TST      r0,#0x80              ;609
000d88  0afffffb          BEQ      |L1.3452|             ;609
000d8c  e3a01080          MOV      r1,#0x80              ;611
000d90  e3a00001          MOV      r0,#1                 ;611
000d94  ebfffffe          BL       Mstpc_Get_Int         ;611
000d98  e51f129c          LDR      r1,|L1.2820|          ;611
000d9c  e5c10000          STRB     r0,[r1,#0]            ;611  ; Int_Status
000da0  e59f002c          LDR      r0,|L1.3540|          ;614
000da4  e5900000          LDR      r0,[r0,#0]            ;614  ; offset@Ms_Page_Write_0
000da8  e2800001          ADD      r0,r0,#1              ;614
000dac  e59f1020          LDR      r1,|L1.3540|          ;614
000db0  e5810000          STR      r0,[r1,#0]            ;614  ; offset@Ms_Page_Write_0
000db4  eaffffb3          B        |L1.3208|
                  |L1.3512|
000db8  74697257          DCB      "Writ"
000dbc  68632065          DCB      "e ch"
000dc0  736b6365          DCB      "ecks"
000dc4  69206d75          DCB      "um i"
000dc8  255b2073          DCB      "s [%"
000dcc  5d783430          DCB      "04x]"
                  |L1.3536|
000dd0  0000000a          DCB      "\n\0\0\0"
                  |L1.3540|
000dd4  0000000c          DCD      ||.bss$2|| + 12
                          ENDP

                  Test_Ms_Block_Write PROC
;;;166    void Test_Ms_Block_Write

⌨️ 快捷键说明

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