105 lines
3.3 KiB
C
105 lines
3.3 KiB
C
/**
|
|
* Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved.
|
|
*/
|
|
/** @file main.c
|
|
*
|
|
* @author Wei-Lun Hsu
|
|
* @version 0.1
|
|
* @date 2024/08/29
|
|
* @license
|
|
* @description
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "main.h"
|
|
#include "isr.h"
|
|
//=============================================================================
|
|
// Constant Definition
|
|
//=============================================================================
|
|
#define CONFIG_BUF_SIZE 32
|
|
//=============================================================================
|
|
// Macro Definition
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Structure Definition
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Global Data Definition
|
|
//=============================================================================
|
|
const uint8_t g_src_buf_flash[CONFIG_BUF_SIZE] =
|
|
{
|
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
|
|
};
|
|
|
|
uint32_t g_dst_buf1[CONFIG_BUF_SIZE >> 2];
|
|
uint32_t g_dst_buf1_sram0[CONFIG_BUF_SIZE >> 2];
|
|
|
|
|
|
//=============================================================================
|
|
// Private Function Definition
|
|
//=============================================================================
|
|
void __FASTCODE sram0_func(void)
|
|
{
|
|
uint8_t *pCur = (uint8_t*)g_dst_buf1_sram0;
|
|
|
|
memset(g_dst_buf1_sram0, 0xAA, sizeof(g_dst_buf1_sram0));
|
|
for(int i = 0; i < sizeof(g_src_buf_flash); i++)
|
|
pCur[i] = g_src_buf_flash[i];
|
|
|
|
if( memcmp(g_dst_buf1_sram0, g_src_buf_flash, sizeof(g_src_buf_flash)) )
|
|
err("Run fail ! ...\n");
|
|
|
|
syslog_dump_mem("SRAM-0: ", (uint32_t*)&g_dst_buf1_sram0, sizeof(g_dst_buf1_sram0), false);
|
|
return;
|
|
}
|
|
|
|
void eflash_func(void)
|
|
{
|
|
uint8_t *pCur = (uint8_t*)g_dst_buf1;
|
|
|
|
memset(g_dst_buf1, 0xAA, sizeof(g_dst_buf1));
|
|
for(int i = 0; i < sizeof(g_src_buf_flash); i++)
|
|
pCur[i] = g_src_buf_flash[i];
|
|
|
|
if( memcmp(g_dst_buf1, g_src_buf_flash, sizeof(g_src_buf_flash)) )
|
|
err("Run fail ! ...\n");
|
|
|
|
syslog_dump_mem("SRAM: ", (uint32_t*)&g_dst_buf1, sizeof(g_dst_buf1), false);
|
|
return;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Public Function Definition
|
|
//=============================================================================
|
|
int main(void)
|
|
{
|
|
SYSCFG_ClkInitTypeDef SysClkInit = {0};
|
|
|
|
SysClkInit.ClkSource = SYSCFG_ClkSrc_HSI;
|
|
SYSCFG_SysClkConfig(&SysClkInit);
|
|
|
|
sys_config_systick(SYS_TICK_1_MS);
|
|
|
|
syslog_init();
|
|
|
|
info("%s\nRun program between Flash and SRAM\n",
|
|
__TIME__);
|
|
|
|
log_color(SLOG_YELLOW, "\n\nrun main() $pc@%p\n", &main);
|
|
|
|
while(1)
|
|
{
|
|
log_color(SLOG_YELLOW, "\n\nrun sram0_func() $pc@%p\n", &sram0_func);
|
|
sram0_func();
|
|
|
|
log_color(SLOG_YELLOW, "\n\nrun eflash_func() $pc@%p\n", &eflash_func);
|
|
eflash_func();
|
|
}
|
|
|
|
return 0;
|
|
}
|