TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

Boot下载App程序成功后,执行App后程序出错

Other Parts Discussed in Thread: TMS570LS0232, HALCOGEN, UNIFLASH

Hi:

    BOOTLOADER程序是实现CAN通信下载APP。芯片使用TMS570LS0232。

    APP程序驱动使用HalCoGen生成,在Safety Init设置下添加Enable Flash ECC Check选项。生成的启动代码中增加以下代码。

使用Bootloader下载程序后,

在跳转AppFlash数据(使用Uniflash读取)与Hex文件对比,Flash数据相同。

软件跳转执行App后,程序跑飞,使用Uniflash读取App的Flash数据错误,Bootloader的Flash数据正常。(把App起始地址恢复0x0后,直接下载程序也可以正常运行)

App驱动屏蔽上述的两行代码后,生成Hex文件通过Bootloader下载后,程序正常运行。读取Flash数据都是正常的。


请问App开启功能安全选项Enable Flash ECC Check的作用和影响。    在APP程序中必须开启Enable Flash ECC Check情况下能否有相应解决方式?

  • 你的图片没上传上来。

  • 在sys_startup.c 文件中增加Flash ECC自检代码如下:

    1.

    /* Enable response to ECC errors indicated by CPU for accesses to flash */
        flashWREG->FEDACCTRL1 = 0x000A060AU;
    /* USER CODE BEGIN (10) */
    /* USER CODE END */
        /* Enable CPU ECC checking for ATCM (flash accesses) */
        _coreEnableFlashEcc_();
    2.
        /* Test the CPU ECC mechanism for Flash accesses.
         * The checkFlashECC function uses the flash interface module's diagnostic mode 7
         * to create single-bit and double-bit errors in CPU accesses to the flash. A double-bit
         * error on reading from flash causes a data abort exception.
         * The data abort handler is written to look for deliberately caused exception and
         * to return the code execution to the instruction following the one that was aborted.
         *
         */
        checkFlashECC();
        flashWREG->FDIAGCTRL = 0x000A0007U;                    /* disable flash diagnostic mode */
    对Bootloader下载App后,App运行时(1)的两个代码,flashECC自检使能导致Flash数据被修改。