//! Main C entry point //! //! Assumes ramBuffer is set up beforehand //! void entry(void) { FlashData_t *flashData; // Handle on programming data // Disable COP *(gFlashProgramHeader.soptAddress+0x0A) = 0x00; // Handle on programming data flashData = gFlashProgramHeader.flashData; // Indicate not complete flashData->flags &= ~IS_COMPLETE; // No errors so far flashData->errorCode = FLASH_ERR_OK; if (flashData->controller == NULL) { setErrorCode(FLASH_ERR_ILLEGAL_PARAMS); } // Clear invalid/unused address bits // A23 is used for Flash block number flashData->address &= 0x008FFFFFUL; initFlash(flashData); eraseFlashBlock(flashData); programPartition(flashData) ; eraseRange(flashData); blankCheckRange(flashData); programRange(flashData); verifyRange(flashData); // Indicate completed setErrorCode(FLASH_ERR_OK); }
/** * Main C entry point * * Assumes ramBuffer is set up beforehand */ void entry(void) { // Set the interrupt vector table position SCB_VTOR = (uint32_t)__vector_table; // Handle on programming data FlashData_t *flashData = gFlashProgramHeader.flashData; initFlash(flashData); eraseFlashBlock(flashData); programPartition(flashData) ; eraseRange(flashData); blankCheckRange(flashData); programRange(flashData); verifyRange(flashData); #ifndef DEBUG // Indicate completed & stop setErrorCode(FLASH_ERR_OK); #endif }