This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

自己做的板子,程序在线仿真调试没问题,关键的烧写出问题了,运行在线FLASH烧写程序报错,如下



报错如下:

Trouble Reading Target Cpu memory:

Error 0x00000004/-1156

Error during:Register,

Invalid data was scanned by the emulation controller.

Verify the board setup to make sure the scan chain is properly defined.

不知道有没有人知道这可能是什么问题,我在实验箱上运行那个在线flash烧写程序可以,自己做的板子通过仿真器跑程序能正常工作。会不会是我的CPLD译码程序有错误导致flash不能正常工作,

  • 这个似乎不是CPLD等程序内容的错误。

    连上了仿真器,加载.out文件后出现的问题?

    因为自己的板子和EVM板设计有差别,检查一下GEL文件和cmd文件,注意修改一下。

  • 我大体上是参照ICETEK的实验箱做的一个系统板,程序在仿真下能正常运行,就是不能烧写flash。在仿真器下能在线调试的话就应该不会是gel和CMD的问题吧。

  • 程序在仿真情况下就不能写FLASH?

    先别用\evm5509_MultiBoot\5509MultiBoot\FlashBurn烧写FLASH工具了。

    需要先把Flash硬件读写调试通过了,再用上面这个工具下载程序。

    \dsk5509a_v1\lib\dsk5509bsl里面有flash读写程序测试。

    http://c5000.spectrumdigital.com/dsk5509a/

  • 谢谢Titan,我之前可能没说清楚,那个错误就是在仿真情况下运行的flash读写测试程序时报的错,我后面单步运行,发现总是卡在擦除子程序那里,flash读写程序的我也仔细检查过没问题,所以我就在想会不会是cpld地址译码不正确造成的,检查了CPLD程序貌似没问题。

  • 擦除程序部分\dsk5509a_v1\lib\dsk5509bsl:dsk5509_flash_erase.c:

    /* Start sector erase sequence */
    DSK5509_mset(DSK5509_FLASH_CTL555, 0xaa);
    DSK5509_mset(DSK5509_FLASH_CTL2AA, 0x55);
    DSK5509_mset(DSK5509_FLASH_CTL555, 0x80);
    DSK5509_mset(DSK5509_FLASH_CTL555, 0xaa);
    DSK5509_mset(DSK5509_FLASH_CTL2AA, 0x55);

    /* Start erase at sector address */
    DSK5509_mset(sector_end[i], 0x30);

    /* Wait for erase to complete */
    while (1)
    if (DSK5509_mget(sector_end[i]) & 0x80)
    break;

    你可以自己建一个工程,直接调试库里的的原函数,单步运行测试一下。看看擦除这部分哪里出了问题。