大家好、
调试时、它始终为我提供以下内容:"在地址"0x4424"处断开、没有可用的调试信息、或者在程序代码之外。" 当我查看"Disassembly"时、它给出了"430C CLR.W R12"。 老实说、我不是很明白这个错误。 这是否是链接器的问题?
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.
大家好、
调试时、它始终为我提供以下内容:"在地址"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
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
您好、Hauke、
当查看您提供的屏幕截图时、我可以看到您的项目出现了问题。
位于 0xF840的"main"函数是包含 ISO 存储块的锁定位的存储器。
请检查您的项目、尤其是链接器文件。 不同的工程具有不同的链接器文件。 您发布的是具有 NDEF 消息支持的项目。 这是您想要的吗? 默认工程 根本不包含"main"函数、因为这是 ROM 代码的一部分。
有关存储器区域的更多信息、另请参见固件用户指南(SLAU603B)中的2.11章节。
我建议导入 完整 的默认工程、并检查您是否能够调试该工程。
此致、
Helfried