📄 nflash.c
字号:
#include "config.h"
#if INCLUDE_NOR_FLASH_S29GL128M90 || INCLUDE_NOR_FLASH_S29GL064A90
#include "nflash.h"
char *NflashHelp[] = {
"Nor flash memory operations",
"{op} [args]",
"Ops...",
" erase rnge",
" id",
" write {dest} {src} {byte_cnt}",
" read {dest} {src} {byte_cnt}",
"",
" rnge = range of affected sectors",
" Range syntax examples: <1> <1-5> <1,3,7> <all>",
0,
};
/* Nflash():
* Code that handles the user interface. See SflashHelp[] below for usage.
*/
int
Nflash(int argc,char *argv[])
{
int snum, ret,rslt,i,step,process;
long dest,src, bytecnt;
short *tmp;
if(argc <2)
return CMD_PARAM_ERROR;
if (strcmp(argv[1],"erase") == 0)
{
if (argc != 3) {
ret = CMD_PARAM_ERROR;
}
else {
for(snum=0;snum<NOR_FLASH_SECTOR_NUMBER;snum++) {
if ((argv[2] == 0) || inRange(argv[2],snum)) {
printf("erase sector %d...",snum);
ticktock();
if(NorFlashErase(snum))
printf("OK\n");
else
printf("Error\n");
}
}
}
}
else if (strcmp(argv[1],"id") == 0) {
int id;
id = NorFlashRdID();
printf("Norflash id = 0x%x\n",id);
// if ()
// printf("It's Intel Strata flash, type is 28F640J3.\n");
//else
// printf("Unknown nor flash device.\n");
}
else if (strcmp(argv[1],"write") == 0) {
if (argc == 5) {
dest = strtoul(argv[2],(char **)0,0);
src = strtoul(argv[3],(char **)0,0);
bytecnt = (long)strtoul(argv[4],(char **)0,0);
tmp = (short *)src;
step = bytecnt/200;
process = 0;
for(snum=0;snum<=(bytecnt +1);snum+=2)
{
NorFlashProg(dest+snum, *tmp++);
if(snum>=process)
{
putchar('*');
process += step;
}
}
printf("write sucessful\n");
}
else
ret = CMD_PARAM_ERROR;
}
else if (!strcmp(argv[1],"read")) {
if (argc == 5) {
dest = strtoul(argv[2],(char **)0,0);
src = strtoul(argv[3],(char **)0,0);
bytecnt = (long)strtoul(argv[4],(char **)0,0);
tmp = (short *)dest;
NorFlashRdData(src, tmp, bytecnt/2+1);
}
else
ret = CMD_PARAM_ERROR;
}
return(ret);
}
/*
char *SetipHelp[] = {
"Write Mac and IP address into flash",
"setip <macaddr> <ipaddr>",
"Mac format: xx:xx:xx:xx:xx:xx",
"IP format: xxx.xxx.xxx.xxx",
0,
};
*/
/* Setiph():
* Write Mac and IP address into flash
*/
/*
int
Setip(int argc,char *argv[])
{
int snum, ret,rslt,i;
long dest,src, bytecnt;
if (argc != 3) {
ret = CMD_PARAM_ERROR;
}
else {
printf("Erase 127\n");
SflashSecErase(127);
printf("Write Mac address into 0x%x...\n",FLASH_MAC_ADDR);
SflashProgByte(FLASH_MAC_ADDR, argv[1], 20);
printf("Write IP address into 0x%x...\n",FLASH_IP_ADDR);
SflashProgByte(FLASH_IP_ADDR, argv[2], 20);
}
return(ret);
}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -