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.

[参考译文] RF430FRL152HEVM:调试时:在地址0x4424处中断

Guru**** 2473260 points


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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/970879/rf430frl152hevm-when-debugging-break-at-address-0x4424

器件型号:RF430FRL152HEVM

大家好、

调试时、它始终为我提供以下内容:"在地址"0x4424"处断开、没有可用的调试信息、或者在程序代码之外。" 当我查看"Disassembly"时、它给出了"430C  CLR.W   R12"。 老实说、我不是很明白这个错误。 这是否是链接器的问题?

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

    查看存储器映射时、它会给出0x0    0xFFFFFFFF      RAM

    那么、我想它与内存分配有关系吗? 链接器文件应正确:

    /*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== */
    /*版权所有(c) 2014,德州仪器公司 /*
    保留所有权利。 */
    * 采用
    或不采用源代码和二进制形式*//*重新分发和使用 允许
    修改*/*,前提是满足以下条件
    符合*/*: */
    * */
    /**源代码的再发行必须保留上述版权 */
    * 声明、此条件列表和以下免责声明。 */
    * */
    /**二进制形式的再发行必须复制上述版权 */
    * 注意、本条件列表和中的以下免责声明 */
    * 分发时提供的文档和/或其他材料。 */
    * */
    /*德州仪器公司的名称和名称均不相同 */
    * 其贡献者可用于认可或推广衍生产品 */
    * 未经特定的事先书面许可。 */
    * /*
    本软件由版权所有者和贡献者"按原样"提供*/*
    和任何明示或暗示的保证,包括但不限于: //*
    特定适销性和适用性的隐含保证 *//*
    不承认目的。 在任何情况下、版权所有者不得或 //*
    派遣国应对任何直接、间接、偶然、特殊、 //
    //*示例性或必然的损害(包括但不限于: //*
    /*采购替代产品或服务;由于使用、数据或利润损失;*/
    ///*或业务中断)而造成的、基于任何责任理论的、*/
    /*无论是在合同中、严格责任还是侵权行为(包括疏忽或) /*
    /*其他)因使用本软件而以任何方式产生的、 *//*
    即使被告知可能会发生此类损害。 /*
    ==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== */
    
    ********* /*
    lnk_rf430frl152h.cmd -用于链接 RF430FRL152H 程序的链接器命令文件 */
    * */
    /*用法:lnk430 -o -m lnk.cmd */
    * cl430 z -o -m lnk.cmd */
    * */
    //*--------------------------------------------------------------------------------------------------------- //
    //*这些链接器选项仅用于命令行链接。 对于 IDE 链接、应在
    "Project Properties"中设置链接器选项 */
    /*-c 使用 C 惯例进行链接*/
    /*-stack 0x0100 软件栈大小 */
    *-heap 0x0100 堆区域大小 */
    * */
    //*--------------------------------------------------------------------------------------------------------- */
    /*版本:1.154 (Beta-Build-Tag:#0011) */
    //*--------------------------------------------------------------------------------------------------------- */
    
    ********* /*
    指定系统内存映射 */
    ********* /
    
    存储
    器{
    SFR :origin = 0x0000、length = 0x0010
    外设_8位 :origin = 0x0010,length = 0x00F0
    外设_16BIT :origin = 0x0100,length = 0x0100
    RAM :origin = 0x1C00,length = 0x1000
    
    ///ROM ISR、起始点、长度不正确
    RF13M_ROM_ISR:origin = 0x54D0,length = 0x0002
    
    //代码区域,可以增加/减少
    // FRAM_NDEF + FRAM_CODE 长度必须等于0x768 (FRAM_NDEF 从0xF868开始)
    //将两个段合并在0xF868-0xFFCF 范围
    内// FRAM_NDEF :origin = 0xF868、length = 0x0068 //结束于0xF8CF - NDEF 存储器部分
    // FRAM_CODE :origin = 0xF8D0,length = 0x0700 //结束于0xFFCF - Firmware memory section
    
    
    //此行的 ndef 内存比
    FRAM_NDEF 要长300字节 :origin = 0xF868、length = 0x0194 //在0xF9FB - NDEF 存储器段结束
    FRAM_CODE :origin = 0xF9FC,length = 0x05D2 //在0xFFCF - Firmware memory 部分结束
    
    
    JTAGSIGNATURE :origin = 0xFFD0、length = 0x0004、fill = 0xFFFF
    BSLSIGNATURE :origin = 0xFFD4、length = 0x0004、fill = 0xFFFF
    INT00 :origin = 0xFFE0、length = 0x0002
    INT01 :origin = 0xFFE2,length = 0x0002
    INT02 :origin = 0xFFE4,length = 0x0002
    INT03 :origin = 0xFFE6,length = 0x0002
    INT04 :origin = 0xFFE8、length = 0x0002
    INT05 :origin = 0xFFEA,length = 0x0002
    INT06 :origin = 0xFFEC,length = 0x0002
    INT07 :origin = 0xFFEE,length = 0x0002
    INT08 :origin = 0xFFF0,length = 0x0002
    INT09 :origin = 0xFFF2,length = 0x0002
    INT10. :origin = 0xFFF4,length = 0x0002
    INT11. :origin = 0xFFF6、length = 0x0002
    INT12. :origin = 0xFFF8,length = 0x0002
    INT13. :origin = 0xFFFA,length = 0x0002
    INT14 :origin = 0xFFFC,length = 0x0002
    复位 :origin = 0xFFFE,length = 0x0002
    }/*********
    
    /*
    指定段分配到内存中 */
    ********* /
    
    SECTIONS
    {
    组(all_FRAM)
    {
    组(READ_WRITE_MEMORY)
    {
    .TI.persistent:{} 对于#pragma PERSISTENT *
    .cio :{} /* C I/O 缓冲器 *
    sysmem :{} /*动态内存分配区域*/
    }
    
    组(只读_存储器)
    {
    .cinit :{} /*初始化表 *
    .pinit :{} /* C++构造函数表 *
    init_array :{} /* C++构造函数表 *
    .mspabi.exidx:{} /* C++构造函数表 *
    .mspabi.extab:{} /* C++构造函数表 *
    .const :{} /*常量数据 */
    }
    
    GROUP (可执行文件存储器)
    {
    .text :{} /*代码 */
    }
    }> FRAM_CODE
    
    rf13m_ROM_ISR:{}> RF13M_ROM_ISR 类型= DSECT
    
    .jtagsignature:{}> JTAGSIGNATURE/* JTAG Signature *
    bslsignature:{}> BSLSIGNATURE /* BSL Signature *
    .jtagpassword /* JTAG 密码 *
    
    .bss :{}> RAM /*全局和静态变量 *
    .data :{}> RAM /*全局和静态变量 *
    .TI.noinit:{}>RAM /*用于#pragma noinit *
    堆栈 :{}> RAM (高) /*软件系统堆栈 *
    
    /* MSP430中断矢量 *
    
    int00 :{} > INT00
    .int01 :{} > INT01
    .int02 :{} > INT02
    .int03 :{} > INT03
    .int04 :{} > INT04
    RFPMM :{*(.int05 )}> INT05类型= VECT_INIT
    端口1 :{*(.int06 )}> INT06类型= VECT_INIT
    SD_ADC :{*(.int07 )}> INT07 type = VECT_init
    USCI_B0 :{*(.int08 )}> INT08类型= VECT_INIT
    ISO :{*(.int09 )}> INT09 type = VECT_init
    WDT :{*(.int10 )}>INT10类型= VECT_INIT
    TIMER0_A1:{*(.INT11 )}> INT11 type = VECT_INIT
    TIMER0_A0:{*(.INT12 )}> INT12 type = VECT_INIT
    联合国管理信息系统 :{*(.INT13 )}> INT13类型= VECT_INIT
    SYSNMI :{*(.int14)}> INT14类型= VECT_INIT
    .reset :{} >复位/* MSP430复位矢量 */
    }/
    
    ********* /*
    包括外设内存映射 */
    ********* /-l
    
    rf430frl152h.cmd
    

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

    您好、Hauke、

    您是否使用过我们的任何示例代码作为 起点? 如果是、您使用了哪一个?

    您是否可以在此处发布项目(CCS 导出为 ZIP 文件)? 然后我可以尝试在我的一侧重新构建它、以便更好地了解问题。

    此致、

    Helfried

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

    说实话、我使用的软件其实并不重要、我也可以使用这里的官方软件:

    但我认为我不够精确。 当我自动运行项目时出现此错误。 然后、在停止后、它跳转到该错误代码。 但更糟糕的是、我无法在调试模式下运行项目时停止该项目。 然后、它总是输出:MSP430:目标 CPU 停止时出现问题:内部错误。 它执行代码(我看到这是由于运行 LED 项目时的 LED 灯)、但我无法停止它。 电源应该可以、已经在想过了。

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

    HELO Hauke、

    现在我了解您的问题。 Alex 的另一个线程给出了这一问题的答案。 K.:

    "要使用 SensorHub (甚至是"Default")项目进行调试、需要告知 ROM 代码以保持 JTAG 连接。 风险是 ROM 代码引用与 JTAG 连接使用的相同引脚(或 EVM 上的开关)进行设置。 因此、如果被告知维持 JTAG、那么它仍将读取 P1.7-P1.4引脚、但它们将由 JTAG 协议进行设置。 唯一有效的引脚是 P1.7主器件 I2C/SPI 设置。 由于它与 JTAG TMS 多路复用、因此它通常为低电平、它将选择主器件选项。

    因此、需要执行以下步骤才能进行调试访问:
    1.加载 SensorHub (或默认)项目
    2.加载并停止后,打开内存浏览器。
    3.查找地址:0xF87D
    4、写入:0x39 -仅8位
    5.然后恢复调试
    6. CCS 中的任何断点现在都可以正常工作。"

    另请参阅"固件用户指南"第 7.23章 JTAG 使能密码寄存器:

    http://www.ti.com/lit/pdf/slau603b

    希望这会有所帮助。

    此致、

    Helfried

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

    很抱歉、但这对我来说不起作用。

    我正在加载项目。 打开存储器浏览器、将0xF87D 中的值更改为0x39、然后单击"Resume"。 我仍然无法停止它、它仍然给出错误"MSP430:Trouble Halting Target CPU:Internal Error"。

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

    您好、Hauke、

    当查看您提供的屏幕截图时、我可以看到您的项目出现了问题。

    位于 0xF840的"main"函数是包含 ISO 存储块的锁定位的存储器。

    请检查您的项目、尤其是链接器文件。 不同的工程具有不同的链接器文件。 您发布的是具有 NDEF 消息支持的项目。 这是您想要的吗? 默认工程 根本不包含"main"函数、因为这是 ROM 代码的一部分。  

    有关存储器区域的更多信息、另请参见固件用户指南(SLAU603B)中的2.11章节。

    我建议导入 完整 的默认工程、并检查您是否能够调试该工程。

    此致、

    Helfried  

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

    您好、Helfried、

    非常感谢您的回复。 最后,这是一件非常愚蠢的事情。 你是对的、我设置的程序中有一些内容

    P1SEL0 = 0x00;
    P1SEL0 = 0x00; 

    将它们都设置为0xF0可解决此问题。