[an error occurred while processing this directive]
|
Самый простой вариант - вся прошивка лезет в память, тогда грузим прошивалку и прошивку - запускаем и отдыхаем.
Если нет - читаем по частям и прошиваем по частям.
у меня прошивалка выглядит так:
/*------------------------------------------------------------------*/
/* main() */
/*------------------------------------------------------------------*/
int main()
{
long Cnt;
long Cnt2;
FILE *fil;
unsigned int c;
int Cnt3;
int FlashOK;
printf("FlashWriter started\n");/* Initialize HPI for LEDs */
HPI_Initialize();
/* Initialize EMIF */
EMIF5502_Initialize();
EMIF5502_Initialize_CE2();
for(Cnt=0; Cnt<0x4000; ++Cnt)
Buffer[Cnt]=Buffer2[Cnt]=0;
fil=fopen("C:\\PLC\\Out2Bin\\led5502.bin", "rb");
Cnt=0;
while(1)
{
c=fgetc(fil);
if(feof(fil))
break;
Buffer[Cnt++]=c1;
}
fclose(fil);
printf("Buffer filled\n");
/* Initialize I2C */
I2C_Initialize();
I2C_ResetOff();
printf("Start writing flash\n");
WriteFlash(Buffer,3000);
printf("Write finished\n");printf("Start checking flash \n");
ReadFlash(Buffer2,3000);
printf("Check Finished\n");/* Check the buffers are identical */
FlashOK=1;
for(Cnt3=0; Cnt3<0x4000; ++Cnt3)
{
if(Buffer[Cnt3]!=Buffer2[Cnt3])
{
FlashOK=0;
printf("Cnt=%u, Buffer=%u, Buffer2=%u\n",Cnt3, Buffer[Cnt3],Buffer2[Cnt3]);
}
}
if(FlashOK)
printf("Flash test is OK\n");
else
printf("Flash test *** FAILED ***\n");
I2C_ResetOn();
printf("FlashWriter finished\n");
return 0;
}
E-mail: info@telesys.ru