Ejemplo n.º 1
0
/************************************************************************
* NAME: fapp_mem_erase_all
*
* DESCRIPTION: 
************************************************************************/
void fapp_mem_erase_all(fnet_shell_desc_t desc)
{
    fnet_uint32_t                   addr;
    const struct fapp_mem_region    *region = fapp_mem_regions;
    
    fnet_uint32_t log_start_addr;
    fnet_size_t   log_erase_size;
    fnet_size_t   log_skip_size;

   	/* Check all regions if it has erase function. */
   	while(region->description)
	{
        if((region->erase) && (region->erase_size))
        {
            addr = region->address;
            
            log_start_addr = addr;
            log_erase_size = 0u;
            log_skip_size = 0u;
            
            while(addr < (region->address+region->size)) 
            {
                if(fapp_mem_erase((void *)addr, region->erase_size) == FNET_OK)
                {
                    if(log_skip_size)
                    {
                        fnet_shell_println(desc, FAPP_MEM_ERASE_SKIPPED, log_start_addr, log_start_addr+log_skip_size-1u); 
                        log_skip_size = 0u;
                        log_start_addr = addr;
                    }
                    
                    log_erase_size += region->erase_size;
                }
                else
                {
                    if(log_erase_size)
                    {
                        fnet_shell_println(desc, FAPP_MEM_ERASE_ERASED, log_start_addr, log_start_addr+log_erase_size-1u); 
                        log_erase_size = 0u;
                        log_start_addr = addr;
                    }
                    
                    log_skip_size += region->erase_size;
                }
                addr+=region->erase_size;
            }
            
            if(log_erase_size)
            {
                fnet_shell_println(desc, FAPP_MEM_ERASE_ERASED, log_start_addr, log_start_addr+log_erase_size-1u);
            }
            else
            {
                fnet_shell_println(desc, FAPP_MEM_ERASE_SKIPPED, log_start_addr, log_start_addr+log_skip_size-1u); 
            }
    	}
    	region++;
	}
}
Ejemplo n.º 2
0
/************************************************************************
* NAME: fapp_mem_erase_cmd
*
* DESCRIPTION:  
************************************************************************/
void fapp_mem_erase_cmd ( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t ** argv )
{
	fnet_uint32_t   address;
	fnet_size_t     size;
	fnet_char_t     *p;
	fnet_return_t   result;

    FNET_COMP_UNUSED_ARG(desc);
	
	fnet_shell_println(desc, "Erasing...");
	
	if (argc == 3u)
	{
		address = fnet_strtoul(argv[1],&p,16u);
		if ((address == 0u) && (p == argv[1]))
        {
            fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1] );     
            return;
        }
        
        size = fnet_strtoul(argv[2],&p,10u);
		if ((size == 0u) && (p == argv[2]))
        {
            fnet_shell_println(desc, FAPP_PARAM_ERR, argv[2] );     
            return;
        }
        
        result = fapp_mem_erase( (void *)address, size);
        if( result == FNET_OK)
        {
            fnet_shell_println(desc, FAPP_MEM_ERASE_ERASED, address, address+size-1u );
        }
        else
        {
            fnet_shell_println(desc, FAPP_MEM_ERASE_FAILED, address, address+size-1u );
        }
    }
    else if ((argc == 2u) && (fnet_strcasecmp(FAPP_MEM_ERASE_ALL, argv[1]) == 0)) /* Erase all */
    {
        fapp_mem_erase_all(desc);
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}
Ejemplo n.º 3
0
/************************************************************************
* NAME: fapp_mem_erase_cmd
*
* DESCRIPTION:  
************************************************************************/
void fapp_mem_erase_cmd ( fnet_shell_desc_t desc, int argc, char ** argv )
{
	unsigned long address;
	unsigned long size;
	char *p;
	int result;

    FNET_COMP_UNUSED_ARG(desc);
	
	fnet_shell_println(desc, "Erasing...");
	
	if (argc == 3)
	{
		address = fnet_strtoul(argv[1],&p,16);
		if ((address == 0) && (p == argv[1]))
        {
            fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1] );     
            return;
        }
        
        size = fnet_strtoul(argv[2],&p,10);
		if ((size == 0) && (p == argv[2]))
        {
            fnet_shell_println(desc, FAPP_PARAM_ERR, argv[2] );     
            return;
        }
        
        result = fapp_mem_erase( (void *)address, size);
        if( result == FNET_OK)
            fnet_shell_println(desc, FAPP_MEM_ERASE_ERASED, address, address+size-1 );
        else
            fnet_shell_println(desc, FAPP_MEM_ERASE_FAILED, address, address+size-1 );
        
    }
    else if ((argc == 2) && fnet_strcasecmp(FAPP_MEM_ERASE_ALL, argv[1]) == 0) /* Erase all */
    {
        fapp_mem_erase_all(desc);
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}