logo

CH559下载失败,提示“错误的文件”。

blob.png

按照官网说明文件,创建的工程,在下载时候显示“错误的文件”下载失败,请问什么原因?



您好,这是型号选择造成的,点“8位单片机CH55X”,可正常下载

邮箱:wxf@wch.cn 电话:025-52638370

                           

您好,这是型号选择造成的,点“8位单片机CH55X”,可正常下载

                       


型号选择了8位 CH55X,CH559,下载给的范例程序没有问题,自己编译的就下载不进去。


文件有多大?用的559?不行的话,把工程或者hex文件发到 lb@wch.cn  我试试。

025-52638373 e-mail:lb@wch.cn

                           

文件有多大?用的559?不行的话,把工程或者hex文件发到 lb@wch.cn  我试试。

                       


Project.zip

您好,这是我建立的工程,麻烦请看一下是否有错误。谢谢。


Project.rar

我改了可以,不清楚你怎么试的,建工程和keil的错误状态百度上直接搜索就行,很多的。

025-52638373 e-mail:lb@wch.cn

                           

Project.rar

我改了可以,不清楚你怎么试的,建工程和keil的错误状态百度上直接搜索就行,很多的。

                       


请问您修改的哪里?因为什么导致的错误?


重复包含CH559.H的时候,需要在包含之前加 #define NO_XSFR_DEFINE

025-52638373 e-mail:lb@wch.cn

我用的是CH552T,同样的毛病“错误的文件”,英文版是"Wrong Hex File"。

后来发现问题出在代码大小上,如果编译时codesize小于1K,那么必然报这个错误。估计WCHISPTool的作者相信用户都会去用printf函数,程序大小不会小于1K。


                           

我用的是CH552T,同样的毛病“错误的文件”,英文版是"Wrong Hex File"。

后来发现问题出在代码大小上,如果编译时codesize小于1K,那么必然报这个错误。估计WCHISPTool的作者相信用户都会去用printf函数,程序大小不会小于1K。

                       

blob.png


WCHISPTool 2.34 看来改过了,我的是 2.31。你们更新一下下载链接吧。

不过我现在换用python版本了,因为生产环境的限制。



ok,官网更新需要点时间,留个邮箱给我,我可以私下发给你


请发新版的ISP到这个邮箱 xh7119@163.com


                           

请发新版的ISP到这个邮箱 xh7119@163.com

                       

请查收邮件


                           

ok,官网更新需要点时间,留个邮箱给我,我可以私下发给你

                       

您好~可以帮忙发一份最新ISP程序到 tariel@foxmail.com 么?谢谢!


试验了一下,最新版的ISP软件对不连续的HEX文件支持还是不好。

比如附件里的程序blink.asm里面有一个ORG指令,汇编生成的hex文件里第一行是从0开始的,第二行是从100h开始的,软件就会报错;然而下载bin文件,软件就不报错了。


blink.rar


下面是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;

}



只有登录才能回复,可以选择微信和github账号登录