void FlashInit() { #ifdef M451 SYS_UnlockReg(); FMC_Open(); SetDataFlashBase(DATA_FLASH_TEST_BASE); DATA_Flash_Start_ADD = FMC_ReadDataFlashBaseAddr(); SYS_LockReg(); #else DrvFMC_EnableISP(); /* Read Data Flash base address */ DATA_Flash_Start_ADD = DrvFMC_ReadDataFlashBaseAddr(); DrvFMC_DisableISP(); #endif printf("Flash initilize - [OK]\n"); }
int main() { uint32_t i, u32Data; /* Unlock protected registers */ SYS_UnlockReg(); SYS_Init(); UART_Init(); /* This sample code is used to show how to use StdDriver API to implement ISP functions. */ printf("\n\n"); printf("+----------------------------------------+\n"); printf("| NUC029xDE FMC Sample Code |\n"); printf("+----------------------------------------+\n"); //SYS_UnlockReg(); /* Enable FMC ISP function */ FMC_Open(); if(SetDataFlashBase(DATA_FLASH_TEST_BASE) < 0) { printf("Failed to set Data Flash base address!\n"); goto lexit; } /* Read BS */ printf(" Boot Mode ............................. "); if(FMC_GetBootSource() == 0) printf("[APROM]\n"); else { printf("[LDROM]\n"); printf(" WARNING: The driver sample code must execute in AP mode!\n"); goto lexit; } u32Data = FMC_ReadCID(); printf(" Company ID ............................ [0x%08x]\n", u32Data); u32Data = FMC_ReadDID(); printf(" Device ID ............................. [0x%08x]\n", u32Data); u32Data = FMC_ReadPID(); printf(" Product ID ............................ [0x%08x]\n", u32Data); for(i = 0; i < 3; i++) { u32Data = FMC_ReadUID(i); printf(" Unique ID %d ........................... [0x%08x]\n", i, u32Data); } for(i = 0; i < 4; i++) { u32Data = FMC_ReadUCID(i); printf(" Unique Customer ID %d .................. [0x%08x]\n", i, u32Data); } /* Read User Configuration */ printf(" User Config 0 ......................... [0x%08x]\n", FMC_Read(FMC_CONFIG_BASE)); printf(" User Config 1 ......................... [0x%08x]\n", FMC_Read(FMC_CONFIG_BASE + 4)); /* Read Data Flash base address */ u32Data = FMC_ReadDataFlashBaseAddr(); printf(" Data Flash Base Address ............... [0x%08x]\n", u32Data); printf("\n\nLDROM test =>\n"); FMC_EnableLDUpdate(); if(FlashTest(FMC_LDROM_BASE, FMC_LDROM_BASE + FMC_LDROM_SIZE, TEST_PATTERN) < 0) { printf("\n\nLDROM test failed!\n"); goto lexit; } FMC_DisableLDUpdate(); printf("\n\nAPROM test =>\n"); FMC_EnableAPUpdate(); if(FlashTest(APROM_TEST_BASE, APROM_TEST_END, TEST_PATTERN) < 0) { printf("\n\nAPROM test failed!\n"); goto lexit; } FMC_DisableAPUpdate(); printf("\n\nData Flash test =>\n"); if(FlashTest(DATA_FLASH_TEST_BASE, DATA_FLASH_TEST_END, TEST_PATTERN) < 0) { printf("\n\nUHB test failed!\n"); goto lexit; } lexit: /* Disable FMC ISP function */ FMC_Close(); /* Lock protected registers */ SYS_LockReg(); printf("\nFMC Sample Code Completed.\n"); while(1); }