forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-06 b39a40b0191e0a8b155db74e885ff66e17b91896
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "system_flash_mem_manage.h"
#include "off_chip_flash.h"
#include "system_general_para.h"
 
 
 
//flashÊý¾ÝдÈëºÍ¶ÁÈ¡¼ì²é,Ö»Ö§³Ö1024¸ö×Ö½ÚµÄдÈëÓë¶ÁÈ¡¼ì²é
ErrorStatus    FlashWriteAndReadCheck(uint8_t * write_data,uint32_t addr,uint16_t length)
{
    uint8_t    buf_l[1024];
    
    if(length >1024)    
        return FAIL;
    
 
    Out_Flash_MultipleWrite(write_data,addr,length);
    
    Out_Flash_MultipleRead(buf_l,addr,length);
    
    return ucharcmp(write_data,buf_l,length);
}
 
 
//flashÊý¾Ý¶à´ÎдÈ룬дÈë´íÎóʱ¶à´ÎÖØÐ´
ErrorStatus    FlashMultipleWriteAndReadCheck(uint8_t * write_data,uint32_t addrA,uint16_t length)
{
    ErrorStatus    return_flag = PASS;
    if(FlashWriteAndReadCheck(write_data,addrA,length)==FAIL)
    {
        if(FlashWriteAndReadCheck(write_data,addrA,length)==FAIL)
        {
            return_flag = FAIL;
        }
    }
    
    return return_flag;
}
 
 
 
/*flashÈÕÖ¾²Ù×÷µØÖ·ÅжÏ,ÌõÊýÈç¹ûÌ«¶à£¬¿ÉÄÜÑ­»·±È½Ï±È½Ï·Ñʱ¼ä£¬ÐèÒª²âÊÔ!!!!!!!!!
*input£ºOpAddr:²Ù×÷µØÖ·£»  StartAddr£ºÆðʼµØÖ·    length£ºµ¥ÌõÈÕÖ¾³¤¶È            MaxNum£ºÈÕÖ¾×î´óÌõÊý
*return£º·µ»ØFAIL±íʾµØÖ·²»ÕýÈ·
*/
ErrorStatus    FlashLogAddrCheck(uint32_t OpAddr,uint32_t StartAddr,uint16_t length,uint16_t MaxNum)
{
    uint32_t    count_i = 0;
    uint32_t    next_addr = StartAddr;
    if((MaxNum ==0)||(OpAddr>=OUT_FLASH_ALL_SIZE)||(StartAddr>=OUT_FLASH_ALL_SIZE)||(length >1024))
        return FAIL;
    
    while(count_i<MaxNum){
        
        if(OpAddr == next_addr)
            return PASS;
        else
            next_addr += length;
        
        if(++count_i > 0xFFFF){
            break;
        }
    }
    
    return FAIL;
}