📄 progflash.c
字号:
#include "../../Include/type.h"U8 Verify(U32 source, U32 destin, U32 count){ U32 *pSource, *pDestin, i; EUARTputString("\nVerifying flash ..."); pSource = (U32 *)source; pDestin = (U32 *)destin; for (i=0; i<count; i+=4) { if (*(pSource++)!=*(pDestin++)) return 0; // not equal } return 1; // all verified okay}U8 CheckBlank(U32 destin, U32 count){ U32 *pDestin, i; EUARTputString("\nBlank checking ..."); pDestin = (U32 *)destin; for (i=0; i<count; i+=4) { if (*(pDestin++) != 0xFFFFFFFF) return 0; // not blank } return 1; // all blankcd}void progFlash(U32 sourceAddr, U32 choice, U32 byteCount){ U32 SourceAddress; U32 TargetAddress; U32 ByteSize; U8 tmp; U32 i; U32 j=1; long size; U32 blockStart; char c; U16 status; EUARTputString("Program SDRAM data to FLASH\n"); SourceAddress = sourceAddr; EUARTputString("Source : 0x"); EUARTputHex((U8)(SourceAddress >> 24)); EUARTputHex((U8)(SourceAddress >> 16)); EUARTputHex((U8)(SourceAddress >> 8)); EUARTputHex((U8)SourceAddress); EUARTputData('\n'); if( choice == 0 ) TargetAddress = 0x0C000000; else if( choice == 1 ) TargetAddress = 0x0C100000; else TargetAddress = 0x0C300000; EUARTputString("Destination : 0x"); EUARTputHex((U8)(TargetAddress >> 24)); EUARTputHex((U8)(TargetAddress >> 16)); EUARTputHex((U8)(TargetAddress >> 8)); EUARTputHex((U8)TargetAddress); EUARTputData('\n'); ByteSize = byteCount; EUARTputString("Byte Count : 0x"); EUARTputHex((U8)(ByteSize >> 24)); EUARTputHex((U8)(ByteSize >> 16)); EUARTputHex((U8)(ByteSize >> 8)); EUARTputHex((U8)ByteSize); while (EUARTdataReady()) EUARTgetData(); // clear input buffer EUARTputString("\n\nPress any key to start program ..."); while (!EUARTdataReady()); // wait for key press// SyncFlashInit();// SyncFlashNvmodeErase();// SyncFlashNvmodeWrite();// SyncFlashNormal(); SyncFlashNormal(); do { EUARTputString((U8 *)"\nErasing ..."); size = ByteSize; blockStart = TargetAddress; do { SyncFlashErase(blockStart); size -= 0x100000; blockStart += 0x100000; } while (size > 0); SyncFlashNormal(); } while (!CheckBlank(TargetAddress, ByteSize)); EUARTputString((U8 *)"\nProgramming ..."); SyncFlashWrite(SourceAddress, TargetAddress, ByteSize); if (Verify(SourceAddress, TargetAddress, ByteSize)) { EUARTputString((U8 *)" succeed.\n"); } else { EUARTputString((U8 *)" failed !\n"); } SyncFlashNormal();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -