⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progflash.c

📁 基于dragon_MX1_ads的装载启动代码armboot
💻 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 + -