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.

[参考译文] TMS570LC4357:如何创建 bin 文件?

Guru**** 2466550 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1070600/tms570lc4357-how-to-create-a-bin-file

部件号:TMS570LC4357
“线程:HALCOGEN”中讨论的其它部件

嗨,TI 团队/ QJ Wang,

如果我使用 Flash1 (第1列气缸组)内存执行项目或构建,则纸槽尺寸有问题。

构建后步骤

"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin"{BuildArtifactFileName}"${BuildArtifactFileBaseName}.bin""${CG_TOO_BROOT}/bin/armofd""${CG_TOOTOO_BOT/mkarm2"/jhex_install"  

矢量(X):原点=0x00000000长度=0x00000020
FLASH0 (RX):Origal=0x00000020 Length=0x001FFFE0
FLASH1 (RX):原点=0x00200000长度=0x00200000
堆栈(RW):原点=0x08000000长度=0x00001500
RAM (RW):原点=0x08001500长度=0x0007EB00  

对于 LED 闪烁,收费和 CAN,bin 文件大小为62k。  

与相同的版本  

引导程序(X):Origal=0x00200020 length=0x00000020
FLASH0 (RX):Origal=0x00000020 Length=0x001FFFE0
FLASH1 (RX):原点=0x00200040长度=0x001FFFBF
堆栈(RW):原点=0x08000000长度=0x00001500
RAM (RW):原点=0x08001500长度=0x0007EB00

同一项目的 bin 文件大小为2049k

LED 闪烁,收费和 CAN 功能。

请解释  

请提前感谢。

桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 桑托什,

    如果所有代码(数据和文本)都分配给 FLASH1,则 bin 文件的大小应该相同。

    章节

    .intvecs:{}>矢量
    文本:{}> FLASH1
    const:{}> FLASH1
    电影:{}>电影1
    Pinit:{}> FLASH1
    .bss:{}>内存
    数据:{}>内存
    sysmem:{}>内存

    如果将它们分配给 FLASH0和 FLASH1,则二进制图像的大小将大于第一个闪存库的大小。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,王启杰。  

    我有两个不同的应用程序 bin 文件  

    1.简单应用代码,包括 LED 闪烁和 CAN 消息  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序图像大小:00010380

    我可以从 UART 启动加载程序转到应用程序映像地址(0x00200020),它工作正常  

    此外,它还可以使用 Application to bootloader (0x000000000000)

    2.复杂应用程序代码,由几乎所有功能组成,如 CAN,UART,SPI,I2C 和 RTI。  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序图像大小:0003F2B0

    但在该应用程序代码中,它不能从 UART 引导加载程序到应用程序本身。

    Application HL_sys_link.cmd 文件与地址相同。  

    请帮助我 解决此问题  

    请提前感谢

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 桑托什,

    整个应用程序(复杂)是否已编程为成功闪存? 是否使用 bootloader 对应用程序进行编程以刷新?

    代码执行能否从 bootloader 跳转到应用程序? 根据您提供的信息,我很难猜测问题是什么。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    有整个应用程序(复杂)编程为在没有带调试功能的引导加载程序的情况下成功闪存,工作正常。

    使用 bootloader 编程为闪存的应用程序也成功,但它不会将代码执行从 bootloader 跳到应用程序。  

    它跳到地址,但无法正确运行应用程序。  

    请提前感谢。

    桑托什。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 桑托什,

    [引用 userid="478029" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1070600/tms570lc4357-How-to to -create-a-bin 文件/3976191#boot3976191"]是的整套应用程序(复杂)已成功编程,无需使用闪存调试[引用。]

    我认为该应用程序已编程为使用 JTAG 调试器以0x00000000开始闪存。

    是否可以发布应用程序映像使用的链接程序 cmd 文件?

    应用程序的起始地址应为0x200020,而不是0x200000。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我已附加了 bootloader 和 Application Linker cmd 文件。

    bootloader 链接器 cmd 文件。

    /*----------------- *
    /* sys_link.cmd *
    /**/
    /*
    版权所有(C) 2009-2018德州仪器(TI)公司- www.ti.com
    *
    *
    *以源代码和二进制格式重新分发和使用,有无
    *允许修改,但前提是符合以下条件
    *符合:
    *
    *重新发布源代码必须保留上述版权
    *注意,此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *注意,本条件列表和中的以下免责声明
    *随提供的文档和/或其他材料
    *分布。
    *
    *德州仪器(TI)公司的名称和的名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *“原样”和任何明示或暗示的担保,包括但不包括
    *限于对适销性和适用性的暗示保证
    *一项特定目的不可否认。 在任何情况下,版权均不受限制
    *所有者或贡献者应对任何直接,间接,偶然,
    *特殊,模范或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;不使用,
    *数据或利润;或业务中断)
    责任理论,无论是合同责任,严格责任还是侵权行为
    *(包括疏忽或其他原因)因使用而产生
    *,即使被告知可能会造成此类损坏。
    *
    *

    /**/
    /*----------------- *
    /*用户代码开始(0)*/
    /*用户代码结束*/


    /*----------------- *
    /*链接器设置*/

    --retain="*(.intvecs)"

    /*用户码开始(1)*/
    /*用户代码结束*/

    /*----------------- *
    /*内存映射*/

    内存

    /*用户代码开始(2)*/
    #IF 0
    /*用户代码结束*/
    矢量(X):原点=0x00000000长度=0x00000020
    FLASH0 (RX):Origal=0x00000020 Length=0x001FFFE0
    FLASH1 (RX):原点=0x00200000长度=0x00200000
    堆栈(RW):原点=0x08000000长度=0x00001500
    RAM (RW):原点=0x08001500长度=0x0007eb00

    /*用户码开始(3)*/
    #endif

    错误1
    引导程序(X):Origal=0x00000000 Length=0x00000020 Fill = 0xffffffff
    FLASH0 (RX):Origin =0x00000020 Length=0x001FFFE0 vfill = 0xffffffff
    FLASH1 (RX):原点=0x00200000长度=0x001FFFBF vfill = 0xffffffff
    /*银行7 (128KB,收费)*/
    FLASH7 (R):Origal=0xF0200000长度=0x00020000 vfill = 0xffffffff

    堆栈(RW):原点=0x08000000长度=0x00001500
    RAM (RW):原点=0x08001500长度=0x0002EB00
    /*第0列气缸组 ECC */
    ECC_VEC (R):Original=(0xf0400000 +(START(向量)>> 3))
    长度=(大小(向量)>3)
    ecc={算法=algoL2R5F021,input_range=vectors}

    ECC_FLA0 (R):Original=(0xf0400000 +)(开始(FLASH0)>> 3)
    长度=(大小(FLASH0)>> 3)
    ecc={算法=algoL2R5F021,input_range=FLASH0}

    /*第1列气缸组 ECC */
    ECC_FLA1 (R):Original=(0xf0400000 +)(开始(FLASH1)>> 3)
    长度=(大小(FLASH1)>> 3)
    ecc={算法=algoL2R5F021,input_range=FLASH1 }

    /*第7列气缸组 ECC */
    ECC_FLA7 (R):原点=0x0100000
    长度=(尺寸(FLASH7)>> 3)
    ecc={算法=algoL2R5F021,input_range=FLASH7 }
    #endif
    /*用户代码结束*/
    }

    /*用户码开始(4)*/
    错误1
    ECC {
    algoL2R5F021:address_mask = 0xfff8 /*地址位31:3 */
    hamming_mask = R4 /*在掩码*/中使用 R4/R5内部版本
    奇偶校验掩码= 0x0c /*设置哪些 ECC 位为偶数和奇数奇偶校验*/
    镜像= F021 /* RM57Lx 和 TMS570LCx 构建于 F021 */中
    }
    #endif
    /*用户代码结束*/


    /*----------------- *
    /*区段配置*/

    章节

    /*用户代码开始(5)*/
    #IF 0
    /*用户代码结束*/
    .intvecs:{}>矢量
    文本对齐(32):{}> FLASH0 | FLASH1
    const align(32):{}> FLASH0 | FLASH1
    电影对齐(32):{}>电影 H0|电影 H1
    Pinit align(32):{}> FLASH0 | FLASH1
    .bss:{}>内存
    数据:{}>内存
    sysmem:{}>内存

    fee_text_section:{}> FLASH0 | FLASH1
    fee_const_section:{}> FLASH0 | FLASH1
    fee_data_section:{}>内存

    /*用户码开始(6)*/
    #endif

    错误1
    .intvectra:{} palining=8>引导程序
    闪存 API:

    ..\HALCoGen\Sources\Fapi_UserDefinedFunctions.obj (.text)
    ..\Boot\BL_flash.obj (.text)
    --library = F021_API_CortexR4_BE_L2FMC.lib (.text)
    } palign =8 load = FLASH0,run = RAM,load_start (apiLoadStart),run_start (apiRunStart),size (apiLoadSize)

    text:{} palen=8>FLASH0/*初始化的可执行代码和常量*/
    .const:{} palen=8 load=FLASH0, run = RAM, load_start(connstLoadStart),run_start(connstRunStart),size(connstLoadSize)/*初始化的常量数据(例如 const flash_sectors[.] =)*/
    cinit:{} palening=8>FLASH0/*表,用于显式初始化的全局和静态变量*/
    Pinit:{} paling=8>FLASH0/* C++全局构造函数地址*/
    .bss:{}> RAM /*未初始化的全局和静态变量*/
    数据:已显式初始化的{}> RAM /*全局变量和静态非 const 变量。 *
    sysmem:{}>用于动态内存分配的 RAM/*内存池(堆)

    fee_text_section:{}> FLASH0
    fee_const_section:{}> FLASH0
    fee_data_section:{}>内存
    #endif


    /*用户代码结束*/
    }

    /*用户码开始(7)*/
    /*用户代码结束*/


    /*----------------- *
    /*其他*/

    /*用户码开始(8)*/
    /*用户代码结束*/
    /*----------------- *

    应用程序链接器 cmd 文件(简单)  

    1.简单应用代码,包括 LED 闪烁和 CAN 消息  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序图像大小:00010380

    /*----------------- *
    /* sys_link.cmd *
    /**/
    /*
    版权所有(C) 2009-2018德州仪器(TI)公司- www.ti.com
    *
    *
    *以源代码和二进制格式重新分发和使用,有无
    *允许修改,但前提是符合以下条件
    *符合:
    *
    *重新发布源代码必须保留上述版权
    *注意,此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *注意,本条件列表和中的以下免责声明
    *随提供的文档和/或其他材料
    *分布。
    *
    *德州仪器(TI)公司的名称和的名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *“原样”和任何明示或暗示的担保,包括但不包括
    *限于对适销性和适用性的暗示保证
    *一项特定目的不可否认。 在任何情况下,版权均不受限制
    *所有者或贡献者应对任何直接,间接,偶然,
    *特殊,模范或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;不使用,
    *数据或利润;或业务中断)
    责任理论,无论是合同责任,严格责任还是侵权行为
    *(包括疏忽或其他原因)因使用而产生
    *,即使被告知可能会造成此类损坏。
    *
    *

    /**/
    /*----------------- *
    /*用户代码开始(0)*/
    /*用户代码结束*/


    /*----------------- *
    /*链接器设置*/

    --retain="*(.intvecs)"

    /*用户码开始(1)*/
    /*用户代码结束*/

    /*----------------- *
    /*内存映射*/

    内存

    /*用户代码开始(2)*/
    #IF 0
    /*用户代码结束*/
    矢量(X):原点=0x00000000长度=0x00000020
    FLASH0 (RX):Origal=0x00000020 Length=0x001FFFE0
    FLASH1 (RX):原点=0x00200000长度=0x00200000
    堆栈(RW):原点=0x08000000长度=0x00001500
    RAM (RW):原点=0x08001500长度=0x0007EB00

    /*用户码开始(3)*/
    #endif
    错误1
    引导程序(X):Origal=0x00200020 length=0x00000020
    FLASH0 (RX):Origal=0x00000020 Length=0x001FFFE0
    FLASH1 (RX):原点=0x00200040长度=0x001FFFBF
    /*银行7 (128KB,收费)*/
    // FLASH7 (R):Origal=0xF0200000长度=0x00020000 vfill = 0xffffffff
    堆栈(RW):原点=0x08000000长度=0x00001500
    RAM (RW):原点=0x08001500长度=0x0007EB00
    /*第0列气缸组 ECC */

    // ECC_VEC (R):Original=(0xf0400000 +(START(向量)>>3))
    //长度=(大小(向量)>3)
    // ecc={算法=algoL2R5F021,input_range=vectors }

    // ECC_FLA0 (R):Original=(0xf0400000 +(START(FLASH0)>>3)
    //长度=(大小(FLASH0)>> 3)
    // ecc={算法=algoL2R5F021,input_range=FLASH0}

    /*第1列气缸组 ECC */
    // ECC_FLA1 (R):Original=(0xf0400000 +(START(FLASH1)>>> 3))
    //长度=(大小(FLASH1)>3)
    // ecc={算法=algoL2R5F021,input_range=FLASH1 }

    /*第7列气缸组 ECC */
    // ECC_FLA7 (R):Original=0x0100000
    //长度=(大小(FLASH7)>> 3)
    // ecc={算法=algoL2R5F021,input_range=FLASH7 }
    #endif

    /*用户代码结束*/
    }

    /*用户码开始(4)*/
    #IF 0
    ECC {
    algoL2R5F021:address_mask = 0xfff8 /*地址位31:3 */
    hamming_mask = R4 /*在掩码*/中使用 R4/R5内部版本
    奇偶校验掩码= 0x0c /*设置哪些 ECC 位为偶数和奇数奇偶校验*/
    镜像= F021 /* RM57Lx 和 TMS570LCx 构建于 F021 */中
    }
    #endif
    /*用户代码结束*/


    /*----------------- *
    /*区段配置*/

    章节

    /*用户代码开始(5)*/
    #IF 0
    /*用户代码结束*/
    .intvecs:{}>矢量
    文本对齐(32):{}> FLASH0 | FLASH1
    const align(32):{}> FLASH0 | FLASH1
    电影对齐(32):{}>电影 H0|电影 H1
    Pinit align(32):{}> FLASH0 | FLASH1
    .bss:{}>内存
    数据:{}>内存
    sysmem:{}>内存

    fee_text_section:{}> FLASH0 | FLASH1
    fee_const_section:{}> FLASH0 | FLASH1
    fee_data_section:{}>内存

    /*用户码开始(6)*/
    #endif

    错误1
    .intvecs:{}>矢量
    文本对齐(32):{}> FLASH1
    const align(32):{}> FLASH1
    电影对齐(32):{}> FLASH1
    Pinit align(32):{}> FLASH1
    .bss:{}>内存
    数据:{}>内存
    sysmem:{}>内存

    fee_text_section:{}> FLASH1
    fee_const_section:{}> FLASH1
    fee_data_section:{}>内存
    #endif


    #IF 0
    .intvectra:{} palining=8>引导程序
    闪存 API:

    ..\sources\Fapi_UserDefinedFunctions.obj (.text)
    //.\sources\BSW\Flash\BL_flash.obj (.text)
    --library = F021_API_CortexR4_BE_L2FMC.lib (.text)
    } palign =8 load = FLASH1,run = RAM,load_start (apiLoadStart),run_start (apiRunStart),size (apiLoadSize)

    text:{} palen=8>FLASH1/*初始化的可执行代码和常量*/
    .const:{} palen=8 load=FLASH1,run = RAM,load_start(connstLoadStart),run_start(connstRunStart),size(connstLoadSize)/*初始化的常量数据(例如 const flash_sectors[.] =)*/
    cinit:{} palen=8>FLASH1 /*表,用于显式初始化的全局和静态变量*/
    Pinit:{} paling=8>FLASH1 /* C++全局构造函数地址*/
    .bss:{}> RAM /*未初始化的全局和静态变量*/
    数据:已显式初始化的{}> RAM /*全局变量和静态非 const 变量。 *
    sysmem:{}>用于动态内存分配的 RAM/*内存池(堆)

    fee_text_section:{}> FLASH1
    fee_const_section:{}> FLASH1
    fee_data_section:{}>内存
    #endif


    /*用户代码结束*/
    }

    /*用户码开始(7)*/
    /*用户代码结束*/


    /*----------------- *
    /*其他*/

    /*用户码开始(8)*/
    /*用户代码结束*/
    /*----------------- *

    应用程序链接器 cmd 文件:(复杂)

    2.复杂应用程序代码,由几乎所有功能组成,如 CAN,UART,SPI,I2C 和 RTI。  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序图像大小:0003F2B0

    /*----------------- *
    /* sys_link.cmd *
    /**/
    /*
    版权所有(C) 2009-2018德州仪器(TI)公司- www.ti.com
    *
    *
    *以源代码和二进制格式重新分发和使用,有无
    *允许修改,但前提是符合以下条件
    *符合:
    *
    *重新发布源代码必须保留上述版权
    *注意,此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *注意,本条件列表和中的以下免责声明
    *随提供的文档和/或其他材料
    *分布。
    *
    *德州仪器(TI)公司的名称和的名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *“原样”和任何明示或暗示的担保,包括但不包括
    *限于对适销性和适用性的暗示保证
    *一项特定目的不可否认。 在任何情况下,版权均不受限制
    *所有者或贡献者应对任何直接,间接,偶然,
    *特殊,模范或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;不使用,
    *数据或利润;或业务中断)
    责任理论,无论是合同责任,严格责任还是侵权行为
    *(包括疏忽或其他原因)因使用而产生
    *,即使被告知可能会造成此类损坏。
    *
    *

    /**/
    /*----------------- *
    /*用户代码开始(0)*/
    /*用户代码结束*/


    /*----------------- *
    /*链接器设置*/

    --retain="*(.intvecs)"

    /*用户码开始(1)*/
    /*用户代码结束*/

    /*----------------- *
    /*内存映射*/

    内存

    /*用户代码开始(2)*/
    #IF 0
    /*用户代码结束*/
    矢量(X):原点=0x00000000长度=0x00000020
    FLASH0 (RX):Origal=0x00000020 Length=0x001FFFE0
    FLASH1 (RX):原点=0x00200000长度=0x00200000
    堆栈(RW):原点=0x08000000长度=0x00001500
    RAM (RW):原点=0x08001500长度=0x0007EB00

    /*用户码开始(3)*/
    #endif
    错误1
    引导程序(X):Origal=0x00200020 length=0x00000020
    FLASH0 (RX):原点=0x00000000长度=0x001FFFE0
    FLASH1 (RX):原点=0x00200040长度=0x001FFFBF
    堆栈(RW):原点=0x08000000长度=0x00001500
    RAM (RW):原点=0x08001500长度=0x0007EB00
    #endif

    /*用户代码结束*/
    }

    /*用户码开始(4)*/

    /*用户代码结束*/


    /*----------------- *
    /*区段配置*/

    章节

    /*用户代码开始(5)*/
    #IF 0
    /*用户代码结束*/
    .intvecs:{}>矢量
    文本对齐(32):{}> FLASH0 | FLASH1
    const align(32):{}> FLASH0 | FLASH1
    电影对齐(32):{}>电影 H0|电影 H1
    Pinit align(32):{}> FLASH0 | FLASH1
    .bss:{}>内存
    数据:{}>内存
    sysmem:{}>内存

    fee_text_section:{}> FLASH0 | FLASH1
    fee_const_section:{}> FLASH0 | FLASH1
    fee_data_section:{}>内存

    /*用户码开始(6)*/
    #endif

    错误1
    .intvecs:{}>矢量
    文本对齐(32):{}> FLASH1
    const align(32):{}> FLASH1
    电影对齐(32):{}> FLASH1
    Pinit align(32):{}> FLASH1
    .bss:{}>内存
    数据:{}>内存
    sysmem:{}>内存

    fee_text_section:{}> FLASH1
    fee_const_section:{}> FLASH1
    fee_data_section:{}>内存
    #endif

    /*用户代码结束*/
    }

    /*用户码开始(7)*/
    /*用户代码结束*/


    /*----------------- *
    /*其他*/

    /*用户码开始(8)*/
    /*用户代码结束*/
    /*----------------- *

    我可以在这个论坛上附加这些文件  

    请检查此链接器文件并尽快确认我  

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我已附加了 bootloader 和 Application Linker cmd 文件。

    bootloader 链接器 cmd 文件。

    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    #if 0
    /* USER CODE END */
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007eb00
    
    /* USER CODE BEGIN (3) */
    #endif
    
    #if 1
        VECTORS (X)  : origin=0x00000000 length=0x00000020  fill = 0xffffffff
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
        FLASH1  (RX) : origin=0x00200000 length=0x001FFFBF vfill = 0xffffffff
        /* Bank 7 (128kB, FEE) */
        FLASH7   (R) : origin=0xF0200000 length=0x00020000 vfill = 0xffffffff
    
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0002EB00
    /* Bank 0 ECC */
        ECC_VEC  (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))
                       length=(size(VECTORS) >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=VECTORS}
    
        ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0)  >> 3))
                       length=(size(FLASH0)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH0 }
    
    /* Bank 1 ECC */
        ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                       length=(size(FLASH1)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH1 }
    
    /* Bank 7 ECC */
        ECC_FLA7 (R) : origin=0xF0100000
                       length=(size(FLASH7)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH7 }
    #endif
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    #if 1
    ECC {
        algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                       hamming_mask = R4         /* Use R4/R5 build in Mask */
                       parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                       mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
    }
    #endif
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    #if 0
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    #endif
    
    #if 1
       .intvecs    : {} palign=8 > VECTORS
       flashAPI:
       {
          .\HALCoGen\source\Fapi_UserDefinedFunctions.obj (.text)
          .\Boot\bl_flash.obj (.text)
          --library = F021_API_CortexR4_BE_L2FMC.lib (.text)
       } palign=8 load = FLASH0, run = RAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
    
       .text    : {} palign=8 > FLASH0 /*Initialized executable code and constants*/
       .const   : {} palign=8 load=FLASH0, run = RAM, LOAD_START(constLoadStart), RUN_START(constRunStart), SIZE(constLoadSize)   /*Initialized constant data (e.g. const flash_sectors[..] = )*/
       .cinit   : {} palign=8 > FLASH0 /* Tables for explicitly initialized global and static variables */
       .pinit   : {} palign=8 > FLASH0 /* C++ global constructor addresses */
       .bss     : {} > RAM    /* Uninitialized global and static variables */
       .data    : {} > RAM    /* Global and static non-const variables that are explicitly initialized. */
       .sysmem  : {} > RAM    /* Memory pool (heap) for dynamic memory allocation */
    
        FEE_TEXT_SECTION  : {} > FLASH0
        FEE_CONST_SECTION : {} > FLASH0
        FEE_DATA_SECTION  : {} > RAM
    #endif
    
    
    
    
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

    应用程序链接器 cmd 文件(简单)  

    1.简单应用代码,包括 LED 闪烁和 CAN 消息  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序图像大小:00010380

    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    #if 0
    /* USER CODE END */
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007EB00
    
    /* USER CODE BEGIN (3) */
    #endif
    #if 1
        VECTORS (X)  : origin=0x00200020 length=0x00000020
        FLASH0  (RX) : origin=0x00000000 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200040 length=0x001FFFBF
            /* Bank 7 (128kB, FEE) */
    //    FLASH7   (R) : origin=0xF0200000 length=0x00020000 vfill = 0xffffffff
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007EB00
    /* Bank 0 ECC */
    
    //    ECC_VEC  (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))
    //                   length=(size(VECTORS) >> 3)
    //                   ECC={algorithm=algoL2R5F021, input_range=VECTORS}
    
    //    ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0)  >> 3))
    //                   length=(size(FLASH0)  >> 3)
    //                   ECC={algorithm=algoL2R5F021, input_range=FLASH0 }
    
    /* Bank 1 ECC */
    //    ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
    //                   length=(size(FLASH1)  >> 3)
    //                   ECC={algorithm=algoL2R5F021, input_range=FLASH1 }
    
    /* Bank 7 ECC */
    //    ECC_FLA7 (R) : origin=0xF0100000
    //                   length=(size(FLASH7)  >> 3)
    //                   ECC={algorithm=algoL2R5F021, input_range=FLASH7 }
    #endif
    
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    #if 0
    ECC {
        algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                       hamming_mask = R4         /* Use R4/R5 build in Mask */
                       parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                       mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
    }
    #endif
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    #if 0
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    #endif
    
    #if 1
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH1
        .const  align(32) : {} > FLASH1
        .cinit  align(32) : {} > FLASH1
        .pinit  align(32) : {} > FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    
        FEE_TEXT_SECTION  : {} > FLASH1
        FEE_CONST_SECTION : {} > FLASH1
        FEE_DATA_SECTION  : {} > RAM
    #endif
    
    
    #if 0
       .intvecs    : {} palign=8 > VECTORS
       flashAPI:
       {
          .\source\Fapi_UserDefinedFunctions.obj (.text)
     //     .\source\BSW\Flash\bl_flash.obj (.text)
          --library = F021_API_CortexR4_BE_L2FMC.lib (.text)
       } palign=8 load = FLASH1, run = RAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
    
       .text    : {} palign=8 > FLASH1 /*Initialized executable code and constants*/
       .const   : {} palign=8 load=FLASH1, run = RAM, LOAD_START(constLoadStart), RUN_START(constRunStart), SIZE(constLoadSize)   /*Initialized constant data (e.g. const flash_sectors[..] = )*/
       .cinit   : {} palign=8 > FLASH1 /* Tables for explicitly initialized global and static variables */
       .pinit   : {} palign=8 > FLASH1 /* C++ global constructor addresses */
       .bss     : {} > RAM    /* Uninitialized global and static variables */
       .data    : {} > RAM    /* Global and static non-const variables that are explicitly initialized. */
       .sysmem  : {} > RAM    /* Memory pool (heap) for dynamic memory allocation */
       
        FEE_TEXT_SECTION  : {} > FLASH1
        FEE_CONST_SECTION : {} > FLASH1
        FEE_DATA_SECTION  : {} > RAM
    #endif
    
    
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

    应用程序链接器 cmd 文件:(复杂)

    2.复杂应用程序代码,由几乎所有功能组成,如 CAN,UART,SPI,I2C 和 RTI。  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序图像大小:0003F2B0

    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    #if 0
    /* USER CODE END */
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007EB00
    
    /* USER CODE BEGIN (3) */
    #endif
    #if 1
        VECTORS (X)  : origin=0x00200020 length=0x00000020
        FLASH0  (RX) : origin=0x00000000 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200040 length=0x001FFFBF
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007EB00
    #endif
    
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    #if 0
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    #endif
    
    #if 1
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH1
        .const  align(32) : {} > FLASH1
        .cinit  align(32) : {} > FLASH1
        .pinit  align(32) : {} > FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    
        FEE_TEXT_SECTION  : {} > FLASH1
        FEE_CONST_SECTION : {} > FLASH1
        FEE_DATA_SECTION  : {} > RAM
    #endif
    
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

    我在代码格式中也有相同的内容,以方便您理解  

    我可以在这个论坛上附加这些文件  

    请检查此链接器文件并尽快确认我  

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    请检查上述用于应用程序和 bootloader 的 link.cmd 文件。

    检查为什么它不起作用?

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我需要 Link.cmd 文件中的支持才能使用应用程序完成 UART 引导加载程序。

    请尽快支持我。

    我已经共享 了一个用于引导加载程序和应用程序的 link.cmd 文件。  

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我是否需要检查 bootloader 和应用程序文件中的 HL_sys_intvectra.asm 文件?

    引导加载程序:

    ;-------------------------------------------------------------------------------
    ; HL_sys_intvecs.asm
    ;
    ; Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    ; 
    ; 
    ;  Redistribution and use in source and binary forms, with or without 
    ;  modification, are permitted provided that the following conditions 
    ;  are met:
    ;
    ;    Redistributions of source code must retain the above copyright 
    ;    notice, this list of conditions and the following disclaimer.
    ;
    ;    Redistributions in binary form must reproduce the above copyright
    ;    notice, this list of conditions and the following disclaimer in the 
    ;    documentation and/or other materials provided with the   
    ;    distribution.
    ;
    ;    Neither the name of Texas Instruments Incorporated nor the names of
    ;    its contributors may be used to endorse or promote products derived
    ;    from this software without specific prior written permission.
    ;
    ;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    ;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    ;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    ;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    ;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    ;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    ;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    ;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    ;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    ;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    ;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    ;
    ;
    ;
    
        .sect ".intvecs"
        .arm
    
    ;-------------------------------------------------------------------------------
    ; import reference for interrupt routines
    
        .ref _c_int00
        .ref phantomInterrupt
        .def resetEntry
    
    ;-------------------------------------------------------------------------------
    ; interrupt vectors
    
    resetEntry
            b   _c_int00
    undefEntry
            b   undefEntry
    svcEntry
            b   svcEntry
    prefetchEntry
            b   prefetchEntry
    dataEntry
            b   dataEntry
            b   phantomInterrupt
            ldr pc,[pc,#-0x1b0]
            ldr pc,[pc,#-0x1b0]
    
        
    ;-------------------------------------------------------------------------------

    应用:

    ;-------------------------------------------------------------------------------
    ; HL_sys_intvecs.asm
    ;
    ; Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    ; 
    ; 
    ;  Redistribution and use in source and binary forms, with or without 
    ;  modification, are permitted provided that the following conditions 
    ;  are met:
    ;
    ;    Redistributions of source code must retain the above copyright 
    ;    notice, this list of conditions and the following disclaimer.
    ;
    ;    Redistributions in binary form must reproduce the above copyright
    ;    notice, this list of conditions and the following disclaimer in the 
    ;    documentation and/or other materials provided with the   
    ;    distribution.
    ;
    ;    Neither the name of Texas Instruments Incorporated nor the names of
    ;    its contributors may be used to endorse or promote products derived
    ;    from this software without specific prior written permission.
    ;
    ;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    ;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    ;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    ;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    ;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    ;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    ;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    ;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    ;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    ;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    ;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    ;
    ;
    ;
    
        .sect ".intvecs"
        .arm
    
    ;-------------------------------------------------------------------------------
    ; import reference for interrupt routines
    
        .ref _c_int00
        .ref phantomInterrupt
        .def resetEntry
    
    ;-------------------------------------------------------------------------------
    ; interrupt vectors
    
    resetEntry
            b   _c_int00
    undefEntry
            b   undefEntry
    svcEntry
            b   svcEntry
    prefetchEntry
            b   prefetchEntry
    dataEntry
            b   dataEntry
            b   phantomInterrupt
            ldr pc,[pc,#-0x1b0]
            ldr pc,[pc,#-0x1b0]
    
        
    ;-------------------------------------------------------------------------------
    

    应用程序和引导加载程序代码相同。  

    对于 bootloader 是否正常?

    请提前感谢

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    在为应用程序代码配置 RTI 计时器中断后。 很不工作  

    在 Bootloader 中,已配置 RTI Compare0。

    在应用程序中,我在应用程序不工作后配置了 RTI Compare3

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 桑托什,

    我方面没有问题。 我的引导加载程序加载了一个应用程序(RTI Blinkky LED),应用程序已正确编程,应用程序执行时没有任何问题(LED 闪烁)。 这意味着应用程序可以使用 RTI 比较0/1/2/3。

    我无法调试您的代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    请查看  我的 sys_link.cmd 和 HL_sys_intvecs.asm,该文件已发布在上述消息中。

    引导加载程序  hl_sys_startup.c.  

    /** @file HL_sys_startup.c 
    *   @brief Startup Source File
    *   @date 11-Dec-2018
    *   @version 04.07.01
    *
    *   This file contains:
    *   - Include Files
    *   - Type Definitions
    *   - External Functions
    *   - VIM RAM Setup
    *   - Startup Routine
    *   .
    *   which are relevant for the Startup.
    */
    
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /* Include Files */
    
    #include "HL_sys_common.h"
    #include "HL_system.h"
    #include "HL_sys_vim.h"
    #include "HL_sys_core.h"
    #include "HL_esm.h"
    #include "HL_sys_mpu.h"
    #include "HL_errata_SSWF021_45.h"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    
    /* External Functions */
    
    /*SAFETYMCUSW 218 S MR:20.2 <APPROVED> "Functions from library" */
    extern void __TI_auto_init(void);
    /*SAFETYMCUSW 354 S MR:NA <APPROVED> " Startup code(main should be declared by the user)" */
    extern int main(void);
    /*SAFETYMCUSW 122 S MR:20.11 <APPROVED> "Startup code(exit and abort need to be present)" */
    /*SAFETYMCUSW 354 S MR:NA <APPROVED> " Startup code(Extern declaration present in the library)" */
    extern void exit(int _status);
    
    
    /* USER CODE BEGIN (3) */
    /* USER CODE END */
    void handlePLLLockFail(void);
    /* Startup Routine */
    void _c_int00(void);
    #define PLL_RETRIES 5U
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    
    #pragma CODE_STATE(_c_int00, 32)
    #pragma INTERRUPT(_c_int00, RESET)
    #pragma WEAK(_c_int00)
    
    /* SourceId : STARTUP_SourceId_001 */
    /* DesignId : STARTUP_DesignId_001 */
    /* Requirements : HL_CONQ_STARTUP_SR1 */
    void _c_int00(void)
    {
    	register resetSource_t rstSrc;
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
    
        /* Initialize Core Registers to avoid CCM Error */
        _coreInitRegisters_();
    	
        /* Initialize Stack Pointers */
        _coreInitStackPointer_();
    
        /* Reset handler: the following instructions read from the system exception status register
         * to identify the cause of the CPU reset.
         */
    	rstSrc = getResetSource();
        switch(rstSrc)
        {
            case POWERON_RESET:
    		/* Initialize L2RAM to avoid ECC errors right after power on */
    		_memInit_();
    
    		/* Add condition to check whether PLL can be started successfully */
            if (_errata_SSWF021_45_both_plls(PLL_RETRIES) != 0U)
    		{
    			/* Put system in a safe state */
    			handlePLLLockFail();
    		}
    		
    /*SAFETYMCUSW 62 S MR:15.2, 15.5 <APPROVED> "Need to continue to handle POWERON Reset" */
            case DEBUG_RESET:
            case EXT_RESET:
    
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    
            /* Initialize L2RAM to avoid ECC errors right after power on */
    		if(rstSrc != POWERON_RESET)
    		{
    			_memInit_();
    		}
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    
    
    /* USER CODE BEGIN (9) */
    /* USER CODE END */
    
            /* Enable CPU Event Export */
            /* This allows the CPU to signal any single-bit or double-bit errors detected
             * by its ECC logic for accesses to program flash or data RAM.
             */
            _coreEnableEventBusExport_();
    
    /* USER CODE BEGIN (10) */
    /* USER CODE END */
    
            /* Check if there were ESM group3 errors during power-up.
             * These could occur during eFuse auto-load or during reads from flash OTP
             * during power-up. Device operation is not reliable and not recommended
             * in this case. */
            if ((esmREG->SR1[2]) != 0U)
            {
               esmGroup3Notification(esmREG,esmREG->SR1[2]);               
            }
    	
            /* Initialize System - Clock, Flash settings with Efuse self check */
            systemInit();
    
    /* USER CODE BEGIN (11) */
    /* USER CODE END */
    
            /* Enable IRQ offset via Vic controller */
            _coreEnableIrqVicOffset_();
                
            /* Initialize VIM table */
    	    vimInit();
    
    /* USER CODE BEGIN (12) */
    /* USER CODE END */
            /* Configure system response to error conditions signaled to the ESM group1 */
            /* This function can be configured from the ESM tab of HALCoGen */
            esmInit();
    
    /* USER CODE BEGIN (13) */
    /* USER CODE END */
    
            break;
    
            case OSC_FAILURE_RESET:
    /* USER CODE BEGIN (14) */
    /* USER CODE END */
            break;
    		
            case WATCHDOG_RESET:
            case WATCHDOG2_RESET:
    				
    /* USER CODE BEGIN (15) */
    /* USER CODE END */
            break;
        
            case CPU0_RESET:
    /* USER CODE BEGIN (16) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (17) */
    /* USER CODE END */
    		
    /* USER CODE BEGIN (18) */
    /* USER CODE END */
    
            /* Enable CPU Event Export */
            /* This allows the CPU to signal any single-bit or double-bit errors detected
             * by its ECC logic for accesses to program flash or data RAM.
             */
            _coreEnableEventBusExport_();
    		
    /* USER CODE BEGIN (19) */
    /* USER CODE END */
            break;
        
            case SW_RESET:
    		
    /* USER CODE BEGIN (20) */
    /* USER CODE END */
            break;
        
            default:
    /* USER CODE BEGIN (21) */
    /* USER CODE END */
            break;
        }
    
    /* USER CODE BEGIN (22) */
    /* USER CODE END */
    
        _mpuInit_();
    	
    /* USER CODE BEGIN (23) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (24) */
    /* USER CODE END */
    
    
    /* USER CODE BEGIN (25) */
    /* USER CODE END */
    
            /* initialize global variable and constructors */
        __TI_auto_init();
    /* USER CODE BEGIN (26) */
    /* USER CODE END */
        
            /* call the application */
    /*SAFETYMCUSW 296 S MR:8.6 <APPROVED> "Startup code(library functions at block scope)" */
    /*SAFETYMCUSW 326 S MR:8.2 <APPROVED> "Startup code(Declaration for main in library)" */
    /*SAFETYMCUSW 60 D MR:8.8 <APPROVED> "Startup code(Declaration for main in library;Only doing an extern for the same)" */
        main();
    /* USER CODE BEGIN (27) */
    /* USER CODE END */
    /*SAFETYMCUSW 122 S MR:20.11 <APPROVED> "Startup code(exit and abort need to be present)" */
        exit(0);
    
    
    /* USER CODE BEGIN (28) */
    /* USER CODE END */
    
    }
    
    /* USER CODE BEGIN (29) */
    /* USER CODE END */
    
    /** @fn void handlePLLLockFail(void)
    *   @brief This function handles PLL lock fail.
    */
    /* USER CODE BEGIN (30) */
    /* USER CODE END */
    void handlePLLLockFail(void)
    {
    /* USER CODE BEGIN (31) */
    /* USER CODE END */
    	while(1)
    	{
    		
    	}
    /* USER CODE BEGIN (32) */
    /* USER CODE END */
    }
    /* USER CODE BEGIN (33) */
    /* USER CODE END */
    

    应用 程序 hl_sys_startup.c.  

    /** @file HL_sys_startup.c 
    *   @brief Startup Source File
    *   @date 11-Dec-2018
    *   @version 04.07.01
    *
    *   This file contains:
    *   - Include Files
    *   - Type Definitions
    *   - External Functions
    *   - VIM RAM Setup
    *   - Startup Routine
    *   .
    *   which are relevant for the Startup.
    */
    
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /* Include Files */
    
    #include "HL_sys_common.h"
    #include "HL_system.h"
    #include "HL_sys_vim.h"
    #include "HL_sys_core.h"
    #include "HL_esm.h"
    #include "HL_sys_mpu.h"
    #include "HL_errata_SSWF021_45.h"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    
    /* External Functions */
    
    /*SAFETYMCUSW 218 S MR:20.2 <APPROVED> "Functions from library" */
    extern void __TI_auto_init(void);
    /*SAFETYMCUSW 354 S MR:NA <APPROVED> " Startup code(main should be declared by the user)" */
    extern int main(void);
    /*SAFETYMCUSW 122 S MR:20.11 <APPROVED> "Startup code(exit and abort need to be present)" */
    /*SAFETYMCUSW 354 S MR:NA <APPROVED> " Startup code(Extern declaration present in the library)" */
    extern void exit(int _status);
    
    
    /* USER CODE BEGIN (3) */
    /* USER CODE END */
    void handlePLLLockFail(void);
    /* Startup Routine */
    void _c_int00(void);
    #define PLL_RETRIES 5U
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    
    #pragma CODE_STATE(_c_int00, 32)
    #pragma INTERRUPT(_c_int00, RESET)
    #pragma WEAK(_c_int00)
    
    /* SourceId : STARTUP_SourceId_001 */
    /* DesignId : STARTUP_DesignId_001 */
    /* Requirements : HL_CONQ_STARTUP_SR1 */
    void _c_int00(void)
    {
    	register resetSource_t rstSrc;
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
    
        /* Initialize Core Registers to avoid CCM Error */
        _coreInitRegisters_();
    	
        /* Initialize Stack Pointers */
        _coreInitStackPointer_();
    
        /* Reset handler: the following instructions read from the system exception status register
         * to identify the cause of the CPU reset.
         */
    	rstSrc = getResetSource();
        switch(rstSrc)
        {
            case POWERON_RESET:
    		/* Initialize L2RAM to avoid ECC errors right after power on */
    		_memInit_();
    
    		/* Add condition to check whether PLL can be started successfully */
            if (_errata_SSWF021_45_both_plls(PLL_RETRIES) != 0U)
    		{
    			/* Put system in a safe state */
    			handlePLLLockFail();
    		}
    		
    /*SAFETYMCUSW 62 S MR:15.2, 15.5 <APPROVED> "Need to continue to handle POWERON Reset" */
            case DEBUG_RESET:
            case EXT_RESET:
    
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    
            /* Initialize L2RAM to avoid ECC errors right after power on */
    		if(rstSrc != POWERON_RESET)
    		{
    			_memInit_();
    		}
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    
    
    /* USER CODE BEGIN (9) */
    /* USER CODE END */
    
            /* Enable CPU Event Export */
            /* This allows the CPU to signal any single-bit or double-bit errors detected
             * by its ECC logic for accesses to program flash or data RAM.
             */
            _coreEnableEventBusExport_();
    
    /* USER CODE BEGIN (10) */
    /* USER CODE END */
    
            /* Check if there were ESM group3 errors during power-up.
             * These could occur during eFuse auto-load or during reads from flash OTP
             * during power-up. Device operation is not reliable and not recommended
             * in this case. */
            if ((esmREG->SR1[2]) != 0U)
            {
               esmGroup3Notification(esmREG,esmREG->SR1[2]);               
            }
    	
            /* Initialize System - Clock, Flash settings with Efuse self check */
            systemInit();
    
    /* USER CODE BEGIN (11) */
    /* USER CODE END */
    
            /* Enable IRQ offset via Vic controller */
            _coreEnableIrqVicOffset_();
                
            /* Initialize VIM table */
    	    vimInit();
    
    /* USER CODE BEGIN (12) */
    /* USER CODE END */
            /* Configure system response to error conditions signaled to the ESM group1 */
            /* This function can be configured from the ESM tab of HALCoGen */
            esmInit();
    
    /* USER CODE BEGIN (13) */
    /* USER CODE END */
    
            break;
    
            case OSC_FAILURE_RESET:
    /* USER CODE BEGIN (14) */
    /* USER CODE END */
            break;
    		
            case WATCHDOG_RESET:
            case WATCHDOG2_RESET:
    				
    /* USER CODE BEGIN (15) */
    /* USER CODE END */
            break;
        
            case CPU0_RESET:
    /* USER CODE BEGIN (16) */
    /* USER CODE END */
    
    /* USER CODE BEGIN (17) */
    /* USER CODE END */
    		
    /* USER CODE BEGIN (18) */
    /* USER CODE END */
    
            /* Enable CPU Event Export */
            /* This allows the CPU to signal any single-bit or double-bit errors detected
             * by its ECC logic for accesses to program flash or data RAM.
             */
            _coreEnableEventBusExport_();
    		
    /* USER CODE BEGIN (19) */
    /* USER CODE END */
            break;
        
            case SW_RESET:
    		
    /* USER CODE BEGIN (20) */
    /* USER CODE END */
            break;
        
            default:
    /* USER CODE BEGIN (21) */
    /* USER CODE END */
            break;
        }
    
    /* USER CODE BEGIN (22) */
    /* USER CODE END */
    
        _mpuInit_();
    	
    /* USER CODE BEGIN (23) */
    /* USER CODE END */
    
        _cacheEnable_();
    
    /* USER CODE BEGIN (24) */
    /* USER CODE END */
    
    
    /* USER CODE BEGIN (25) */
    /* USER CODE END */
    
            /* initialize global variable and constructors */
        __TI_auto_init();
    /* USER CODE BEGIN (26) */
    /* USER CODE END */
        
            /* call the application */
    /*SAFETYMCUSW 296 S MR:8.6 <APPROVED> "Startup code(library functions at block scope)" */
    /*SAFETYMCUSW 326 S MR:8.2 <APPROVED> "Startup code(Declaration for main in library)" */
    /*SAFETYMCUSW 60 D MR:8.8 <APPROVED> "Startup code(Declaration for main in library;Only doing an extern for the same)" */
        main();
    /* USER CODE BEGIN (27) */
    /* USER CODE END */
    /*SAFETYMCUSW 122 S MR:20.11 <APPROVED> "Startup code(exit and abort need to be present)" */
        exit(0);
    
    
    /* USER CODE BEGIN (28) */
    /* USER CODE END */
    
    }
    
    /* USER CODE BEGIN (29) */
    /* USER CODE END */
    
    /** @fn void handlePLLLockFail(void)
    *   @brief This function handles PLL lock fail.
    */
    /* USER CODE BEGIN (30) */
    /* USER CODE END */
    void handlePLLLockFail(void)
    {
    /* USER CODE BEGIN (31) */
    /* USER CODE END */
    	while(1)
    	{
    		
    	}
    /* USER CODE BEGIN (32) */
    /* USER CODE END */
    }
    /* USER CODE BEGIN (33) */
    /* USER CODE END */
    

    请 将您的 RTI 闪盘应用程序与您的 Bootloader 版本一起发送,我将对其进行比较。

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,桑托什,

    您需要提供异常处理程序来处理应用程序中的“DEDEF”,“PAbort”,“DAbort”。 如果您确定 bootloader 的代码不会生成这些异常,bootloader 中不需要处理程序,并且可以将 bootloader 异常引导程序表更改为分支到 Application 的:

    引导加载程序 sys_intvecs.asm:

    b 0x200020-0x8 ,undefEntry
    b 0x200020-0x8 ,svcEntry
    b 0x200020-0x8 ,prefetchEntry
    b 0x200020-0x8 ,DataEntry

    您说 RTI 比较器在您的应用中不起作用。 CPU 是否跳到应用程序并执行应用程序代码? 要检查您的应用程序是否正常工作:

    1.将一些调试信息打印到 PC UART 终端

    2.启用 ECLK1,并使用示波器检查 ECLK1输出  

    3.切换 GIO 针脚,并使用示波器检查 GIO 波形  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    需要在应用程序或引导加载程序 HL_sys_intvecs.asm 中添加异常处理程序

    引导加载程序:

    ;-------------------------------------------------------------------------------
    ; HL_sys_intvecs.asm
    ;
    ; Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    ; 
    ; 
    ;  Redistribution and use in source and binary forms, with or without 
    ;  modification, are permitted provided that the following conditions 
    ;  are met:
    ;
    ;    Redistributions of source code must retain the above copyright 
    ;    notice, this list of conditions and the following disclaimer.
    ;
    ;    Redistributions in binary form must reproduce the above copyright
    ;    notice, this list of conditions and the following disclaimer in the 
    ;    documentation and/or other materials provided with the   
    ;    distribution.
    ;
    ;    Neither the name of Texas Instruments Incorporated nor the names of
    ;    its contributors may be used to endorse or promote products derived
    ;    from this software without specific prior written permission.
    ;
    ;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    ;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    ;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    ;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    ;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    ;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    ;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    ;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    ;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    ;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    ;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    ;
    ;
    ;
    
        .sect ".intvecs"
        .arm
    
    ;-------------------------------------------------------------------------------
    ; import reference for interrupt routines
    
        .ref _c_int00
        .ref phantomInterrupt
        .def resetEntry
    
    ;-------------------------------------------------------------------------------
    ; interrupt vectors
    
    resetEntry
            b   _c_int00
    undefEntry
            b   #0x200020
        ;    b	undefEntry
    svcEntry
            b   #0x200020
         ;   b   svcEntry
    prefetchEntry
            b   #0x200020
        ;    b   prefetchEntry
    dataEntry
            b   #0x200020
        ;	 b   dataEntry
            b   phantomInterrupt
            ldr pc,[pc,#-0x1b0]
            ldr pc,[pc,#-0x1b0]
    
        
    ;-------------------------------------------------------------------------------
    

    申请:

    ;-------------------------------------------------------------------------------
    ; HL_sys_intvecs.asm
    ;
    ; Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    ; 
    ; 
    ;  Redistribution and use in source and binary forms, with or without 
    ;  modification, are permitted provided that the following conditions 
    ;  are met:
    ;
    ;    Redistributions of source code must retain the above copyright 
    ;    notice, this list of conditions and the following disclaimer.
    ;
    ;    Redistributions in binary form must reproduce the above copyright
    ;    notice, this list of conditions and the following disclaimer in the 
    ;    documentation and/or other materials provided with the   
    ;    distribution.
    ;
    ;    Neither the name of Texas Instruments Incorporated nor the names of
    ;    its contributors may be used to endorse or promote products derived
    ;    from this software without specific prior written permission.
    ;
    ;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    ;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    ;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    ;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    ;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    ;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    ;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    ;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    ;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    ;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    ;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    ;
    ;
    ;
    
        .sect ".intvecs"
        .arm
    
    ;-------------------------------------------------------------------------------
    ; import reference for interrupt routines
    
        .ref _c_int00
        .ref phantomInterrupt
        .def resetEntry
    
    ;-------------------------------------------------------------------------------
    ; interrupt vectors
    
    resetEntry
            b   _c_int00
    undefEntry
      ;      b   #0x00200020 ;undefEntry
            b	undefEntry
    svcEntry
      ;      b   #0x00200020
            b   svcEntry
    prefetchEntry
      ;      b   #0x00200020
      		b   prefetchEntry
    dataEntry
       ;     b   #0x00200020 ;
       		b	dataEntry
            b   phantomInterrupt
            ldr pc,[pc,#-0x1b0]
            ldr pc,[pc,#-0x1b0]
    
        
    ;-------------------------------------------------------------------------------
    

    在 bootloader bl_config.h 中

    #define app_start_address 0x00200020随后定义为 0x00200020地址  

    1.将应用程序映像下载到内部闪存

    已下载应用程序代码,然后输入  

    3.执行应用程序代码

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序映像大小:000114A0

    应用程序正在运行!!

    它输入到0x00200020地址,然后从 bootloader 中给出相同的选项  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序映像大小:000114A0

    BF 应用程序重新编程请求:00
    AF 应用程序重新编程请求:00
    ========================= 主菜单=========================
    1.将应用程序映像下载到内部闪存
    2.从内部闪存上载应用程序映像
    3.执行应用程序代码
    4.获取 Bootloader 版本
    5.获取设备信息
    =========================================================

    为了找出问题,我更新   了 bootloader 的 bl_config.h 文件中的#define app_start_address 0x00200040  

    然后进入应用程序。

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200040
    应用程序映像大小:000114A0

    应用程序正在运行!!

    现在我已连接调试器并检查了代码卡住的位置。  

    它位于 bootloader  hL_sys_intvectra.asm 文件中  

    然后转 至(F6),转至   下面的 Application HL_sys_intvecs.asm 文件。

    然后,再次执行(F6)转到 bootloader hL_sys_intvecs.asm 文件。

    bootloader: hl_sys_link.cmd

    引导程序(X):Origal=0x00000000 Length=0x00000020 Fill = 0xffffffff
    Flash_API (RX):Original=0x00000020长度=0x000014E0
    FLASH0 (RX):Origal=0x00001500 length=0x001FEB00 vfill = 0xffffffff
    FLASH1 (RX):原点=0x00200000长度=0x001FFFFFFF vfill = 0xffffffff
    /*银行7 (128KB,收费)*/
    FLASH7 (R):Origal=0xF0200000长度=0x00020000 vfill = 0xffffffff

    堆栈(RW):原点=0x08000000长度=0x00002000
    RAM (RW):Origal=0x08002000 length=0x0002EB00

    应用程序: hl_sys_link.cmd

    引导程序(X):Origal=0x00200020 length=0x00000020
    /*FLASH0 (RX):原点=0x00000000长度=0x001FFEF*/
    FLASH1 (RX):Origal=0x00200040 length=0x003FFFFF-0x00200040 /*vfill = 0xffffff*/
    /*银行7 (128KB,收费)*/
    // FLASH7 (R):Origal=0xF0200000长度=0x00020000 vfill = 0xffffffff
    叠块(RW):原点=0x08030000长度=0x00001500
    RAM (RW):原点=0x08031500长度=0x0003EB00

    如何确定 HL_sys_intvectra.asm 文件的此地址  

    解定义
    ; b #0x200020-0x8;undefEntry

    该地址定义中的0x8是什么?

    请尽快回复。

    请提前感谢

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="478029" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微处理器/f/arm-based 微处理器- forum/1070600/tms570lc4357 -如何创建-回收箱文件/3997891#3997891"]该定义是什么- 0x8[此处引用]

    程序计数器(PC)始终将两条指令指针指向当前执行指令之外的指令。 这就是为什么使用0x200020-0x8。 如果应用程序中没有异常处理程序,则此更改毫无意义。  

    [引用 userid="478029" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1070600/tms570lc4357 - hut-create-a-bin 文件/3997891#3997891" app_start_0x2000h/  报价单[bl_config.0040]

    如果 app_start_address 是0x200040,则链接器 cmd 文件中的 intvec 地址应 相应地更改为0x200040

      引导程序(X) :Origal=0x00200040 length=0x00000020

    请阅读我关于如何解决异常中止问题的说明

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    [引用 userid="45190" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微处理器/f/基于 ARM 的微控制器- forum/1070600/tms570lc4357-How-to to -create-a-bin 文件/3998961#3998961]\n 如果您的处理程序没有任何意义,那么您的应用程序就会发生这种变化。  [/引用]

    无异常处理程序,仅 RTI 比较0,RTI 比较3  

    [引用 userid="45190" url="~ë/support/icros/arm-based 微处理器-组/基于 ARM 的微控制器/f/arm-based 微控制器- forum/1070600/tms570lc4357-How-to -create-a-bin 文件/3998961#3998961"]请阅读我关于如何异常故障排除/中止的说明[

    您能否告诉我 如何排除异常中止的问题?

    [引用 userid="45190" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微处理器/f/arm-based 微处理器- forum/1070600/tms570lc4357 - How-to-create-a-bin-file/3998961#3998961"]
      bl_config.h 中的 app_start_address 0x00200040

    如果 app_start_address 是0x200040,则链接器 cmd 文件中的 intvec 地址应 相应地更改为0x200040

    [/引用]

    如果   bl_config.h 中的 app_start_address 0x00200020

    n bootloader bl_config.h

    #define app_start_address  0x00200020随后定义为 0x00200020地址  

    1.将应用程序映像下载到内部闪存

    已下载应用程序代码,然后输入  

    3.执行应用程序代码

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序映像大小:000114A0

    应用程序正在运行!!

    它输入到0x00200020地址,然后从 bootloader 中给出相同的选项  

    应用程序更新状态:5A5A5A
    应用程序图像地址:00200020
    应用程序映像大小:000114A0

    BF 应用程序重新编程请求:00
    AF 应用程序重新编程请求:00
    ========================= 主菜单=========================
    1.将应用程序映像下载到内部闪存
    2.从内部闪存上载应用程序映像
    3.执行应用程序代码
    4.获取 Bootloader 版本
    5.获取设备信息
    =========================================================

    跳到应用程序后,它正在跳回 BL_main。

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的备注:

    https://software-dl.ti.com/hercules/hercules_docs/latest/hercules/FAQ/FAQ.html#troubleshooting-abort-exceptions

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    是的, 我已经了解了你关于例外情况的说明。

    我尝试在引导加载程序中将_c_int00的名称更改为_c_int01  

    更改后,代码将始终转至 HL_SYS_intvecs.asm 中的 prefchEntry

    SPSR_ABT 0x600003F0  

    M 10000 ARM 模式:0x10=用户

    CPSR 0x600003D7  

    M 10111 ARM 模式:  0x17=ABT

    CP15_instruction_fault_status 0x0000000D IFSR [核心]

    状态1101状态[3:0]- 0x0D=Perm


    CP15_instruction_fault_address 0xFFFFFFFE IFAR [核心]
    发生预取中止时保留故障地址

    如果 _c_int00 在引导加载程序和应用程序中都是相同的或正常的情况:  

    从引导加载程序到应用程序的地址跳转条件为#0x00200020,但它从0x00000000重新启动引导加载程序  

    请提前感谢

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    从 bootloader 跳到应用程序后  

    如果我使用调试器,它正在运行,但代码没有按需要运行,它也没有进入 RTI 中断 rtiNotification 函数。

    根据您关于异常中止的备注:

    CP15_instruction_fault_address 0x08080000 IFAR [核心]
    CP15_instruction_fault_status 0x00001008 IFSR [核心]
    状态 1000  0x08=外部
    中止寄存器
    SPSR_ABT 0x4000037F
    m 1111. 0x1f=SYS
    R13_ABT 0x08001400
    R14_ABT 0x08080004.

    请指导您解决此问题。  

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    在应用程序主菜单 _enable_IRQ_interrups__()中,函数被调用,因为该函数会跳到引导加载程序代码。  

    那么如何将 RTI 中断与引导加载程序一起使用。 您能否检查并尽快确认我?

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    在应用程序主菜单 _enable_IRQ_interrups__()中,函数被调用,因为该函数会跳到引导加载程序代码。  

    因此,如何在应用程序中将 RTI 中断与触发 引导加载程序的_enable_IRQ_interrupt_()函数一起使用。 您能否检查并尽快确认我?

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,桑托什,

    1.为 RTI 比较中断启用 VIM 通道,例如 RTI 比较0

    2.启用 RTI 比较中断

    初始化 RTI 后(rtiInit(),调用  

    rtiEnableNotification (rtiREG1,rtiNOTIFICATION_COMPARE0);  

    将启用 RTI 比较0通知。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    是的,同样,我在 VIM 渠道中启用了 RTI comapre3  

    在主代码中, 不调用 _enable_IRQ_interrupti_();和 rtiStartCounter(rtiREG1,rtiCOUNTER_Block1);这两个函数在 下面给出的 rtiNotification 函数中不会触发中断。  

    请提前感谢

    桑托什。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    在我调试后,它最终进入了预取并检查了所有已注册的。

    SPSR_IRQ 0x60000352
    m 10010. ARM 模式: 0x12=IRQ
    R13_IRQ 0x08001300
    R14_IRQ 0x00011D04
    CPSR 0x200003D7
    m 10111. ARM 模式: 0x17=ABT 中止
    CP15_instruction_fault_status 0x0000000D IFSR [核心]
    状态 1101. 状态[3:0]- 0x0D=Perm
    CP15_instruction_fault_address 0xFFFFFFFE IFAR [核心]

    并检查上述消息。  

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我也面临着这方面存在的同样问题  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638874/tms570lc4357-how-to-handle-application-interrupt-with-a-bootloader

    请在 下面说明这一点。

    请注意 HL_sys_startup.c 文件中的代码“switch (getResetSource ()...”。

    当代码从 bootloader 跳到应用程序时,重置源在 bootloader 中被清除,中断向量初始化和其他功能将不会执行,因此应用程序中的中断无法进入。

    如果未修改此位置,则会遇到此问题。

    请尽快支持我。  

    解决这一问题非常紧迫

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    地址0xFFFFFFFE 是内存映射的一部分,不可执行,因此权限错误(0x0000000D)有效。  M[4:0]=10010b  表示 CPU 正在处理 IRQ 的服务例程时发生异常。 请检查为 IRQ 模式分配的堆栈大小。 您是否有声明局部变量的 ISR? 它们使用堆栈。 您可以增加可用的 IRQ 堆栈,以查看这是否有帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="478029" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微控制器/f/arm-based 微控制器- forum/1070600/tms570lc4357 - How-to-create-a-bin-file/4005112#4005112]e2e.ti.com/.../quote]

    在应用程序中,您不需要运行 PBIST,内存初始化和 PLL 变通办法,PBIST 变通办法和 CPU 自检。 如果应用程序使用相同的 PLL 值,则不必运行 systemInit()。

    应用程序不使用重置源。

    [/引用]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是我的应用程序示例中的代码(蓝色):

    rstSrc = getResetSource();
    交换机(rstSrc)

     案例 poweron_reset:

      (笑声) (笑声)

      (笑声) (笑声)

     默认值:
         /*用户码开始(21)*/

    IF (rstSrc != poweron_reset)

    _memInit_();
    }
    _coreEnableEventBusExport_();

    如果(((esmREG->SR1[2])!= 0U)

    esmGroup3通知(esmREG,esmREG->SR1[2]);
    }
    SystemInit();
    _coreEnableIrqVicOffset_();
    vimInit();
    esmInit();

         /*用户代码结束*/

      休息;

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我是否只需要在应用程序中注释 systemInit()函数?

    请提前感谢

    桑托什。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 桑托什。

    如果您在默认部分中使用我的示例代码,则不需要注释任何其他函数调用。

    [引用 userid="45190" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微处理器/f/arm-based 微处理器- forum/1070600/tms570lc4357 -如何创建-容器-文件/4005511#4005511"]

    rstSrc = getResetSource();
    交换机(rstSrc)

     案例 poweron_reset:

      (笑声) (笑声)

      (笑声) (笑声)

     默认值:
         /*用户码开始(21)*/

    IF (rstSrc != poweron_reset)

    _memInit_();
    }
    _coreEnableEventBusExport_();

    如果(((esmREG->SR1[2])!= 0U)

    esmGroup3通知(esmREG,esmREG->SR1[2]);
    }
    SystemInit();
    _coreEnableIrqVicOffset_();
    vimInit();
    esmInit();

         /*用户代码结束*/

      休息;

    }

    [/引用]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    如何检查堆栈大小的 IRQ 模式。

    所有变量都被声明为全局变量主文件。

    bootloader:link.cmd 文件

    下面修改了堆栈。

    增加后

      

    我遇到了这个问题。

    引导程序 R5_MPU_PMU:

    我是否需要在配置中同时修改 HelCoGen?

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    我在 应用程序中添加了默认 HL_sys_startup.c 情况下的代码后,我已解决了我的电源重置问题。

    如果每次在电源重置后都从引导加载程序输入应用程序,则应用程序工作正常。  

    已输入  3.执行应用程序代码在每次重置电源后都执行正常,但从应用程序到引导加载程序,它不会跳到0x00000000引导加载程序地址。

    在所有3个 bootloader 中 ,hl_sys_intvecs.asm 文件的修改如下所示。

    1引导加载程序 HL_SYS_intvecs.asm 的方法

    我在 Bootloader 的 PrefetchEntry 中获得异常。

    SPSR_ABT 0x6000037F
    m 1111. ARM 模式:0x1f=SYS
    R13_ABT 0x08001400
    R14_ABT 0x08080004.
    CPSR 0x600003D7
    m 10111. ARM 模式:0x17=ABT
    CP15_instruction_fault_status 0x00001008 IFSR [核心]
    状态 1000 状态[3:0]- 0x01= Algn
    CP15_instruction_fault_address 0x08080000 IFAR [核心]
    CP15_AUX_INstruction_Fault_status 0x00000000 AIFSR [核心]
    CP15_data_fault_address 0x00000000 DFAR [核心]
    CP15_data_fault_status 0x00000000 DFSR [核心]

    bootloader hL_sys_intvecs.asm 的方法

    在这种方法中,我在  应用程序中获得了一个例外 PrefetchEntry  

    SPSR_ABT 0x2000037F
    m 1111. ARM 模式:0x1f=SYS
    R13_ABT 0x08001400
    R14_ABT 0x08080004.
    CPSR 0x200003D7
    m 10111. 手臂模式
    CP15_instruction_fault_status 0x00001008 IFSR [核心]
    状态 1000 状态[3:0]- 0x01= Algn
    CP15_instruction_fault_address 0x08080000 IFAR [核心]
    CP15_AUX_INstruction_Fault_status 0x00000000 AIFSR [核心]
    CP15_data_fault_address 0x00000000 DFAR [核心]
    CP15_AUX_DATA_Fault_status 0x00000000 ADFSR [核心]
    CP15_SYSTEM_CONTROL 0x8BE5187C SCTLR [核心]

    3引导加载程序 HL_SYS_intvecs.asm 的方法

    我在 Bootloader 的 PrefetchEntry 中获得了与方法1相同的异常。

    SPSR_ABT 0x6000037F
    m 1111. ARM 模式:0x1f=SYS
    R13_ABT 0x08001400
    R14_ABT 0x08080004.
    CPSR 0x600003D7
    m 10111. 手臂模式
    CP15_instruction_fault_status 0x00001008 IFSR [核心]
    状态 1000 状态[3:0]- 0x01= Algn
    CP15_instruction_fault_address 0x08080000 IFAR [核心]
    CP15_AUX_INstruction_Fault_status 0x00000000 AIFSR [核心]
    CP15_data_fault_address 0x00000000 DFAR [核心]
    CP15_AUX_DATA_Fault_status 0x00000000 ADFSR [核心]
    CP15_SYSTEM_CONTROL 0x8BE5187C SCTLR [核心]

    请检查并提供反馈

    请提前感谢。

    桑托什。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    请您共享您的引导加载程序和应用程序构建,以供我参考 ,该应用程序使用 RTI 中断。

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 桑托什,

    [引用 userid="478029" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1070600/tms570lc4357-How-to to -create-a-bin-file/4006370#boot4006370"]执行应用程序代码从驱动器跳转至启动器的操作不顺利,但每次启动后都不能执行0x00000000。]

    让应用程序发挥作用是很好的。 如何使执行跳回到引导加载程序?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否可以尝试使用以下语句跳转至0x00000000?

    ((void (*)(void)) 0x0)();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    是的,它是我使用过的代码。

    #define boot_start_address    0x00000000

    G_ulbootTransferAddress =(UINT32_t) boot_start_address;
    ((void (*)(void)) g_ulbootTransferAddress)();

    矢量为0x00000000  

    Flash_API 0x00000020

    Flash0:0x00001500

    bootloader link.cmd

    引导程序(X):Origal=0x00000000 Length=0x00000020 Fill = 0xffffffff
    Flash_API (RX):Original=0x00000020长度=0x000014E0
    FLASH0 (RX):Origal=0x00001500 length=0x001FEB00 vfill = 0xffffffff
    FLASH1 (RX):原点=0x00200000长度=0x001FFFFFFF vfill = 0xffffffff
    /*银行7 (128KB,收费)*/
    FLASH7 (R):Origal=0xF0200000长度=0x00020000 vfill = 0xffffffff

    堆栈(RW):原点=0x08000000长度=0x00002000
    RAM (RW):Origal=0x08002000 length=0x0002EB00

    闪存 API:

    ..\HALCoGen\Sources\Fapi_UserDefinedFunctions.obj (.text)
    ..\Boot\BL_flash.obj (.text)
    --library = F021_API_CortexR4_BE_L2FMC.lib (.text)
    } palign =8 load = flash_API,run = RAM,load_start (apiLoadStart),run_start (apiRunStart),size (apiLoadSize)

    应用程序 link.cmd

    错误1
    引导程序(X):Origal=0x00200020 length=0x00000020
    FLASH0 (RX):原点=0x00000000长度=0x001FFEF
    FLASH1 (RX):Origal=0x00200040 length=0x003FFFFF-0x00200040 /*vfill = 0xffffff*/
    /*银行7 (128KB,收费)*/
    // FLASH7 (R):Origal=0xF0200000长度=0x00020000 vfill = 0xffffffff
    叠块(RW):原点=0x08030000长度=0x00002500
    RAM (RW):原点=0x08032500长度=0x0003EB00

    请检查并提供反馈。

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我以前的帖子中的指令将代码执行分支为0x00000,它不会重置设备和设备的外围设备。  

    您可以发出 SW 重置命令,从 bootloader 重新启动代码:

    systemREG1->SYSECR =(0x10)<14;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    在哪里可以在 bootloader 或应用程序中使用此软件重置命令代码以及哪个 c 文件  

    systemREG1->SYSECR =(0x10)<14;

    请反馈

    请提前感谢

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以在需要重置时发出 SW 重置命令。

    应用中:

    您可以用  systemREG1->SYSECR =(0x10)<14替换((void (*)(void))g_ulbootTransferAddress)();

    在 Bootloader 中:

    应用程序加载到闪存后,您可以发出 SW 重置命令以重新启动代码执行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    在我 将  systemREG1->SYSECR =(0x10)<< 14;替换为  ((void (*)(void)g_ulbootTransferAddress)();

    我在引导加载程序中遇到异常 DataEntry 卡在 HL_sys_intvecs.asm 中

    引导加载程序 hl_sys_intvecs.asm 的方法

    CPSR 0x600003D7
    m 10111. ARM 模式:0x17=ABT
    SPSR_IRQ 0x000003D2
    m 10010. ARM 模式: 0x12=IRQ,
    R13_IRQ 0x08001300
    R14_IRQ 0x00011D14
    CP15_data_fault_status 0x00001008 DFSR [核心]
    CP15_instruction_fault_status 0x00000000 IFSR [核心]
    CP15_AUX_DATA_Fault_status 0x00500000 ADFSR [核心]
    CP15_AUX_INstruction_Fault_status 0x00000000 AIFSR [核心]
    CP15_data_fault_address 0xFFF7E404 DFAR [核心]
    CP15_instruction_fault_address 0x00000000 IFAR [核心]

    bootloader hL_sys_intvecs.asm 的方法

    应用 程序中的 HL_sys_intvecs.asm 中出现数据环境异常  

    CPSR 0x600003D7
    m 10111. ARM 模式:0x17=ABT
    SPSR_IRQ 0x000003D2
    m 10010. ARM 模式: 0x12=IRQ,
    R13_IRQ 0x08001300
    R14_IRQ 0x00011D14
    CP15_data_fault_status 0x00001008 DFSR [核心]
    状态 1000 状态[3:0]- 0x08=SExt
    CP15_instruction_fault_status 0x00000000 IFSR [核心]
    状态 0 状态[3:0]- 0x00=BG
    CP15_AUX_DATA_Fault_status 0x00500000 ADFSR [核心]
    CP15_AUX_INstruction_Fault_status 0x00000000 AIFSR [核心]
    CP15_data_fault_address 0xFFF7E404 DFAR [核心]
    CP15_instruction_fault_address 0x00000000 IFAR [核心]

    请检查并提供反馈

    请提前感谢。

    桑托什。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    这是否是我在项目中面临的同一问题?

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/916063/tms570lc4357-data-abort-exception-after-software-reset/3429400#3429400

    是否需要在引导加载程序和应用程序文件中执行此更改?

    您可以共享此版本吗?

    附件是我的 CCS 项目:

    2664.TMS570LC4357_Sergey.zip

    请提前感谢

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    1.我可以使用 PLL 作为 Bootloader 的方法是乘法150,PLL 为300,应用 乘法120,PLL 为240  

    因此,bootloader VCLK1的 GCM 是75,Application VCLK1是80

    然后,如何修改_C_Init00和 HL_sys_startup 中的默认情况

      

    和 hL_system.c 中

    2种方法  

    如何同时使用  引导加载程序和应用程序与120相同的乘法器,PLL 为240  

    GSM  VCLK1为80  

    因为 PLL 和 VCLK1都是相同的,所以我在下载应用程序 bin 文件时遇到问题,该文件卡在 BL_FLASH 中  

    While (FAPI_GET_FSM_STATUS != Fapi_Status_Success);/*不必在 Fapi_Init 和 Fapi_BlockProgram 函数中包含此项*/。

    请指导我在应用程序中使用 VCLK1 AS 80,因此我需要在引导加载程序中进行修改,或者使用最合适的不同 PLL 和 VCLK1。

    请提前感谢。

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,QJ Wang,

    修改 后,PLL 为240 (由多路复用)为120,而 GCM 由 HCLK 分隔器修改为0,VCLK1分隔器为2,VCLK2和 VCLK3分隔器为0,因此 VCLK1为来自引导加载器配置的80。  

    引导加载程序:

    PLL

    GCM

    根据应用程序 VCLK1,将用于 VCLK1的 HalCoGen 修改为用于引导加载程序的80。

    应用程序映像下载卡在 BL_FLASH.c 代码中  

    这是因为 VCLK1的修改吗?

    请尽快检查并提供反馈。

    请提前感谢。

    桑托什