📄 command.c
字号:
printf("Current MCLK = %dHz, mdiv = %d, pdiv = %d, sdiv = %d\n\n",(MCLK),mdiv,pdiv,sdiv);
return 0;
}
int ResetBoard(int argc, char *argv[])
{
SystemReset();
return 0;
}
int ModifyReg(int argc, char *argv[])
{
char key;
unsigned int tempvalue;
if(argc < 3)
{
puts("Usage: modadd <memAdd> <memNewValue>\n");
puts("Version: V1.0 by chenjun 2005.4.8\n\n");
return 1;
}
tempvalue = (unsigned int)strtoul(argv[1]);
tempvalue &= 0xfffffffc;
printf("\nadd 0x%.8x value = 0x%.8x\nuse new value,are you sure?[y/n]",tempvalue,*((unsigned int *)tempvalue));
while(1)
{
if(kbhit())
{
key = getkey();
if(key=='y'||key=='Y')
{
putch(key);
putch('\n');
break;
}
if(key=='n'||key=='N')
{
putch(key);
putch('\n');
return 0;
}
}
}
*((unsigned int *)(strtoul(argv[1]))) = (unsigned int)(strtoul(argv[2]));
printf("add 0x%.8x new value = 0x%.8x\n\n",tempvalue,*((unsigned int *)tempvalue));
return 0;
}
int Batch(int argc, char *argv[])
{
unsigned int start,load_addr,time_out;
char command[MAX_CMD_LEN];
unsigned int i;
unsigned int batchfilelen,temploop;
char key;
if(argc < 2)
{
puts("\nArguments no match!\n");
puts("Usage: batch <RamStartAdd>\n");
puts("Version: V1.0 by chenjun 2005.5.10\n\n");
return 1;
}
start = (unsigned int)(strtoul(argv[1]));
load_addr = start;
printf("download batch file to @0x%x\n", load_addr);
time_out = 0xffffffff;
do{
if(kbhit())
{
*((unsigned char *)load_addr++) = getkey();
time_out = 0x10000;
}
}while(--time_out);
puts("Received Batch File is Complete!\n");
batchfilelen = load_addr-start;
i = 0;
puts("\nRun Batch File?[y/n]");
while(1)
{
if(kbhit())
{
key = getkey();
if(key=='y'||key=='Y')
{
putch(key);
putch('\n');
break;
}
if(key=='n'||key=='N')
{
putch(key);
putch('\n');
return 0;
}
}
}
for(temploop=0;temploop < batchfilelen;temploop++)
{
key = *((char *)(temploop + start));
if(key != '\n')
{
if(key == '\r')
{
int tmp;
command[i] = 0;
putch('\n');
tmp = ParseCmd(command, i);
if(tmp<0)
puts("Bad command\n");
i = 0;
}
else
{
if(i<MAX_CMD_LEN-1)
{
command[i++] = key;
putch(key);
}
}
}
else
{
i=0;
command[i] = 0;
}
if(kbhit())
{
key = getkey();
if(key=='q'||key=='Q')
{
puts("User interrupt batch!\n");
return 0;
}
}
}
putch('\n');
return 0;
}
int DelayTime(int argc, char *argv[])
{
Delay((unsigned int)strtoul(argv[1]));
return 0;
}
int RDFlash(int argc, char *argv[])
{
unsigned int PFadd;
unsigned int SDadd;
unsigned int RDsize;
if(argc < 4)
{
puts("Usage: rdpf <FlashStartAdd> <SdramStartAdd> <Size>\n");
puts("Version: V1.0 by chenjun 2005.6.7\n\n");
return 1;
}
PFadd = (unsigned int)strtoul(argv[1]);
SDadd = (unsigned int)strtoul(argv[2]);
RDsize = (unsigned int)strtoul(argv[3]);
printf("\nPfadd = 0x%.8x,SDadd = 0x%.8x,RDsize = 0x%x\n\n",PFadd,SDadd,RDsize);
Delay(10000);
FlashRead(PFadd,SDadd,RDsize);
return 0;
}
int EraseFlashChip(int argc, char *argv[])
{
unsigned char i;
unsigned int k;
char key;
puts("All data in flash will be lost, are you sure? [y/n]");
while(1)
{
if(kbhit())
{
key = getkey();
if(key=='y'||key=='Y')
{
putch(key);
putch('\n');
break;
}
if(key=='n'||key=='N')
{
putch(key);
putch('\n');
return 0;
}
}
}
i = ChipErase();
if(i)
{return 1;}
puts("Start BlockCheck,please wait...");
for(k=0;k<0x100000;k++)
{
if((*((unsigned short *)(ROM_BASE + (k<<1)))) != 0xffff)
{
puts("\nBlockCheck Failed!Erase NorFlash Failed!\n\n");
return 1;
}
}
puts("Successfully!\n\n");
return i;
}
int ProgFlash(int argc, char *argv[])
{
unsigned int PFadd;
unsigned int SDadd;
unsigned int RDsize;
unsigned char i;
if(argc < 4)
{
puts("Usage: progpf <FlashStartAdd> <SdramStartAdd> <Size>\n");
puts("Version: V1.0 by chenjun 2005.6.7\n\n");
return 1;
}
PFadd = (unsigned int)strtoul(argv[1]);
SDadd = (unsigned int)strtoul(argv[2]);
RDsize = (unsigned int)strtoul(argv[3]);
printf("\nPfadd = 0x%.8x,SDadd = 0x%.8x,RDsize = 0x%x\n\n",PFadd,SDadd,RDsize);
i = FlashProg(PFadd,SDadd,RDsize);
return i;
}
int AutoProgFlash(int argc, char *argv[])
{
char key;
unsigned char i;
unsigned int j;
unsigned int load_addr,time_out;
puts("*************************** Reprog Flash code *************************\n");
puts("All data in Flash will be lost!\nReprog flash,Are you sure? [y/n]");
for(;;)
{
if(kbhit())
{
key = getkey();
if(key=='y'||key=='Y')
{
putch(key);
putch('\n');
break;
}
if(key=='n'||key=='N')
{
putch(key);
putch('\n');
return 0;
}
}
}
////////////////////////////////////////////////////
puts("Flash erasing...\n");
i = ChipErase();
if(i)
{puts("Flash erase failed!!!Pls check hardware!!!\n");
return 1;}
///////////////////////////////////////////////////
puts("please select a binary file for transfer!\n");
load_addr = 0x82000000;//comload
time_out = 0xffffffff;
do{
if(kbhit())
{
*((unsigned char *)load_addr++) = getkey();
time_out = 0x10000;
}
}while(--time_out);
printf("\nReceived 0x%x bytes from usart!\n", load_addr-0x82000000);
/////////////////////////////////////////////////////
puts("\nStart program flash ,pls waiting for...\n");
i = FlashProg(ROM_BASE,0x82000000,(load_addr-0x82000000));
if(i)
{puts("Flash Program failed!!!Pls check hardware!!!\n");
return 1;}
///////////////////////////////////////////////////
puts("Start flash verify...");
for(j=0;j<(load_addr-0x82000000);j++)
{
if(*(unsigned char *)(j+ROM_BASE) != *(unsigned char *)(j+0x82000000))
{
printf("\nFlash verification is failed! Flash addr @ 0x%.8x\n",j);
return 1;
}
}
puts("Successfully!\n");
puts("Flash program is successfully!\nPlease wait system reboot......\n\n\n");
SystemReset();
return 0;
}
int ProgAPPBoot(int argc, char *argv[])
{
char key;
unsigned char i;
unsigned int j;
unsigned int load_addr,time_out;
unsigned int SecSize;
puts("************************ Reprog Flash APPBoot **********************\n");
puts("All data in Flash APPBoot region will be lost!Are you sure? [y/n]");
for(;;)
{
if(kbhit())
{
key = getkey();
if(key=='y'||key=='Y')
{
putch(key);
putch('\n');
break;
}
if(key=='n'||key=='N')
{
putch(key);
putch('\n');
return 0;
}
}
}
///////////////////////////////////////////////////
puts("please select a binary file for transfer!\n");
load_addr = 0x82000004;//comload
time_out = 0xffffffff;
do{
if(kbhit())
{
*((unsigned char *)load_addr++) = getkey();
time_out = 0x10000;
}
}while(--time_out);
printf("\nReceived 0x%x bytes from usart!\n", load_addr-0x82000004);
if((load_addr-0x82000000)>(APPBase-APPBootBase))
{
puts("CodeSize is too big,cann't fix it to AppBoot Region.Please adjust AppBootBase!\n");
return 1;
}
SecSize = load_addr-0x82000000;
if((SecSize & 0xffff)!=0)
{
SecSize &= 0x3f0000;
SecSize += 0x10000;
}
////////////////////////////////////////////////////
#if(NorFlash_Type==AT49BV162_3)
for(j=APPBootBase;j<APPBootBase+SecSize;j+=0x10000)
{
i = SectorErase(j - ROM_BASE);
if(i){
puts("Flash erase failed!!!Pls check hardware!!!\n");
return 1;}
else{
printf("SectorErase 0x%.6x - 0x%.6x\n",j,j+0xffff);}
}
#elif(NorFlash_Type==SST39VF160)
for(j=APPBootBase;j<APPBootBase+SecSize;j+=0x10000)
{
i = BlockErase(j - ROM_BASE);
if(i){
puts("Flash erase failed!!!Pls check hardware!!!\n");
return 1;}
else{
printf("BlockErase 0x%.6x - 0x%.6x\n",j,j+0xffff);}
}
#endif
/////////////////////////////////////////////////////
puts("\nStart program flash ,pls waiting for...\n");
*(unsigned int *)(0x82000000) = load_addr-0x82000004;
i = FlashProg(APPBootBase,0x82000000,(load_addr-0x82000000));
if(i)
{puts("Flash Program failed!!!Pls check hardware!!!\n");
return 1;}
///////////////////////////////////////////////////
puts("Start flash verify...");
for(j=0;j<(load_addr-0x82000000);j++)
{
if(*(unsigned char *)(j+APPBootBase) != *(unsigned char *)(j+0x82000000))
{
printf("\nFlash verification is failed! Flash addr @ 0x%.8x\n",j);
return 1;
}
}
puts("Successfully!\n");
puts("AppBoot program is successfully!\nPlease wait system reboot......\n\n\n");
SystemReset();
return 0;
}
int ProgAPP(int argc, char *argv[])
{
char key;
unsigned char i;
unsigned int j;
unsigned int load_addr,time_out;
unsigned int SecSize;
puts("************************ Reprog Flash APP **********************\n");
puts("All data in Flash APP region will be lost!Are you sure? [y/n]");
for(;;)
{
if(kbhit())
{
key = getkey();
if(key=='y'||key=='Y')
{
putch(key);
putch('\n');
break;
}
if(key=='n'||key=='N')
{
putch(key);
putch('\n');
return 0;
}
}
}
///////////////////////////////////////////////////
puts("please select a binary file for transfer!\n");
load_addr = 0x82000004;//comload
time_out = 0xffffffff;
do{
if(kbhit())
{
*((unsigned char *)load_addr++) = getkey();
time_out = 0x10000;
}
}while(--time_out);
printf("\nReceived 0x%x bytes from usart!\n", load_addr-0x82000004);
if((load_addr-0x82000000)>(ROM_BASE+FlashSize-APPBase))
{
puts("CodeSize is too big,cann't fix it to App Region.Please adjust AppBase!\n");
return 1;
}
SecSize = load_addr-0x82000000;
if((SecSize & 0xffff)!=0)
{
SecSize &= 0x3f0000;
SecSize += 0x10000;
}
////////////////////////////////////////////////////
#if(NorFlash_Type==AT49BV162_3)
for(j=APPBase;j<APPBase+SecSize;j+=0x10000)
{
i = SectorErase(j - ROM_BASE);
if(i){
puts("Flash erase failed!!!Pls check hardware!!!\n");
return 1;}
else{
printf("SectorErase 0x%.6x - 0x%.6x\n",j,j+0xffff);}
}
#elif(NorFlash_Type==SST39VF160)
for(j=APPBase;j<APPBase+SecSize;j+=0x10000)
{
i = BlockErase(j - ROM_BASE);
if(i){
puts("Flash erase failed!!!Pls check hardware!!!\n");
return 1;}
else{
printf("BlockErase 0x%.6x - 0x%.6x\n",j,j+0xffff);}
}
#endif
/////////////////////////////////////////////////////
puts("\nStart program flash ,pls waiting for...\n");
*(unsigned int *)(0x82000000) = load_addr-0x82000004;
i = FlashProg(APPBase,0x82000000,(load_addr-0x82000000));
if(i)
{puts("Flash Program failed!!!Pls check hardware!!!\n");
return 1;}
///////////////////////////////////////////////////
puts("Start flash verify...");
for(j=0;j<(load_addr-0x82000000);j++)
{
if(*(unsigned char *)(j+APPBase) != *(unsigned char *)(j+0x82000000))
{
printf("\nFlash verification is failed! Flash addr @ 0x%.8x\n",j);
return 1;
}
}
puts("Successfully!\n");
puts("AppBoot program is successfully!\nPlease wait system reboot......\n\n\n");
SystemReset();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -