按照官网说明文件,创建的工程,在下载时候显示“错误的文件”下载失败,请问什么原因?
您好,这是型号选择造成的,点“8位单片机CH55X”,可正常下载
您好,这是型号选择造成的,点“8位单片机CH55X”,可正常下载
型号选择了8位 CH55X,CH559,下载给的范例程序没有问题,自己编译的就下载不进去。
文件有多大?用的559?不行的话,把工程或者hex文件发到 lb@wch.cn 我试试。
我改了可以,不清楚你怎么试的,建工程和keil的错误状态百度上直接搜索就行,很多的。
重复包含CH559.H的时候,需要在包含之前加 #define NO_XSFR_DEFINE
我用的是CH552T,同样的毛病“错误的文件”,英文版是"Wrong Hex File"。
后来发现问题出在代码大小上,如果编译时codesize小于1K,那么必然报这个错误。估计WCHISPTool的作者相信用户都会去用printf函数,程序大小不会小于1K。
我用的是CH552T,同样的毛病“错误的文件”,英文版是"Wrong Hex File"。
后来发现问题出在代码大小上,如果编译时codesize小于1K,那么必然报这个错误。估计WCHISPTool的作者相信用户都会去用printf函数,程序大小不会小于1K。
WCHISPTool 2.34 看来改过了,我的是 2.31。你们更新一下下载链接吧。
不过我现在换用python版本了,因为生产环境的限制。
ok,官网更新需要点时间,留个邮箱给我,我可以私下发给你
请发新版的ISP到这个邮箱 个人信息保护,已隐藏
ok,官网更新需要点时间,留个邮箱给我,我可以私下发给你
您好~可以帮忙发一份最新ISP程序到 个人信息保护,已隐藏 么?谢谢!
试验了一下,最新版的ISP软件对不连续的HEX文件支持还是不好。
比如附件里的程序blink.asm里面有一个ORG指令,汇编生成的hex文件里第一行是从0开始的,第二行是从100h开始的,软件就会报错;然而下载bin文件,软件就不报错了。
下面是8051模拟器emu8051( https://github.com/jarikomppa/emu8051 )中读hex文件的代码,能正确处理这个hex文件,供参考:
int readbyte(FILE * f)
{
char data[3];
data[0] = fgetc(f);
data[1] = fgetc(f);
data[2] = 0;
return strtol(data, NULL, 16);
}
int load_obj(struct em8051 *aCPU, char *aFilename)
{
FILE *f;
if (aFilename == 0 || aFilename[0] == 0)
return -1;
f = fopen(aFilename, "r");
if (!f) return -1;
if (fgetc(f) != ':')
{
fclose(f);
return -2; // unsupported file format
}
while (!feof(f))
{
int recordlength;
int address;
int recordtype;
int checksum;
int i;
recordlength = readbyte(f);
address = readbyte(f);
address <<= 8;
address |= readbyte(f);
recordtype = readbyte(f);
if (recordtype == 1)
return 0; // we're done
if (recordtype != 0)
return -3; // unsupported record type
checksum = recordtype + recordlength + (address & 0xff) + (address >> 8); // final checksum = 1 + not(checksum)
for (i = 0; i < recordlength; i++)
{
int data = readbyte(f);
checksum += data;
aCPU->mCodeMem[address + i] = data;
}
i = readbyte(f);
checksum &= 0xff;
checksum = 256 - checksum;
if (i != (checksum & 0xff))
return -4; // checksum failure
while (fgetc(f) != ':' && !feof(f)) {} // skip newline
}
fclose(f);
return -5;
}