コード例 #1
0
ファイル: flash_kientis.c プロジェクト: jeenter/CH-K-Lib
uint8_t target_flash_program_page(const TARGET_FLASH* flash, uint32_t addr, uint8_t * buf, uint32_t size)
{
    uint32_t bytes_written = 0;

    // call a target dependent function to check if
    // we don't want to write specific bits (flash security bits, ...)
//    if (!check_security_bits(addr, buf)) {
//        return 0;
//    }

    // Program a page in target flash.
    if(SWJ_WriteMem(flash->program_buffer, buf, size))
    {
        printf("SWJ_WriteMem failed\r\n");
        return 1;
    }

    while(bytes_written < size) {
        if (swd_flash_syscall_exec(&flash->sys_call_param,
                                    flash->program_page,
                                    addr,
                                    flash->ram_to_flash_bytes_to_be_written,
                                    flash->program_buffer + bytes_written, 0))
        {
                                        printf("call error\r\n");
            return 1;
        }

        bytes_written += flash->ram_to_flash_bytes_to_be_written;
        addr += flash->ram_to_flash_bytes_to_be_written;
    }

    return 0;
}
コード例 #2
0
ファイル: flash_kientis.c プロジェクト: jeenter/CH-K-Lib
uint8_t TFlash_Init(const TARGET_FLASH* flash)
{
    uint8_t err;
    
    /* Download flash programming algorithm to target and initialise. */
    err = SWJ_WriteMem(flash->algo_start, (uint8_t *)flash->image, flash->algo_size);
    if(err)
    {
        printf("write flash algo to RAM failed\r\n");
    }
    
    err = swd_flash_syscall_exec(&flash->sys_call_param, flash->init, 0, 0 /* clk value is not used */, 0, 0);
    
    return err;
}
コード例 #3
0
ファイル: main.c プロジェクト: guzhaoyuan/smartCar
int main(void)
{   
    uint32_t i, err;
    
    DelayInit();
    GPIO_QuickInit(HW_GPIOC, 10, kGPIO_Mode_OPP);
    
    #ifdef MK22F25612
    UART_QuickInit(UART0_RX_PB16_TX_PB17, 115200);
    #elif  MK20D5
    UART_QuickInit(UART1_RX_PC03_TX_PC04, 115200);
    #endif
    
    printf("program for Manley\r\n");

    swd_io_init();

    SWJ_InitDebug();
    
    SWJ_SetTargetState(RESET_HOLD);
    
    ShowID();
    for(i=0;i<sizeof(buf);i++)
    {
        buf[i] = i & 0xFF;
    }
    
    SWJ_WriteMem(0x20000000, buf, sizeof(buf));
    memset(buf, 0, sizeof(buf));
    SWJ_ReadMem(0x20000000, buf, sizeof(buf));

    for(i=0;i<sizeof(buf);i++)
    {
        if(buf[i] != (i & 0xFF))
        {
            printf("error buf[%d]:%d should be:%d\r\n", i, buf[i], i);
        }
    }
    
    printf("mem teset complete\r\n");
    
    
    SWJ_SetTargetState(RESET_PROGRAM);
    
    err =  TFlash_UnlockSequence();
    printf("TFlash_UnlockSequence %d\r\n", err);
    
    
    
    SWJ_SetTargetState(RESET_PROGRAM);
    
    err = TFlash_Init(&flash);
    printf("TFlash_Init %d\r\n", err);

    err = target_flash_program_page(&flash, 0x00000200, (uint8_t*)flash.image, 512);
    printf("target_flash_program_page %d\r\n", err);
    
    while(1)
    {
        GPIO_ToggleBit(HW_GPIOC, 10);
        DelayMs(500);
    }
}