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.

[参考译文] CCS/MSP430F5244:调试问题

Guru**** 2526700 points
Other Parts Discussed in Thread: MSP430F5244

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/568581/ccs-msp430f5244-debugging-issue

部件号:MSP430F5244

工具/软件:Code Composer Studio

在调试模式下,我的控制器有时停止工作(GPIO中断仍在工作),如果我暂停调试,我会收到一条新白页消息“无可用源”0xe6774,这意味着什么?我如何解决此问题?  

感谢提前参加TI论坛。

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

    请检查:
    e2e.ti.com/.../23.176万

    希望这能有所帮助,
    拉斐尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Rafael:
    抱歉,我无法通过此链接找到解决方案。 我尝试重新生成代码,但它对我没有帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉斐尔

    我发现了该问题,多次调用下面的函数导致了该问题,如果我评论调用该函数,则控件可以正常工作。 我要将该代码粘贴在下面。 如果 我在以下职能中做了任何错误,请告诉我。

    UINT8_t Flash_WriteData(uint8_t* FlashAddress,uint8_t* DataAddress,uint16_t Len){uint16_t
    	i=0;
    	uint8_t LocArray[10],Loopcn=0;
    	memcpy(LocArray, FlashAddress,10); //从我们要立即写入
    	的地址中读取10个数据库(i=0;i<Len;i++){
    		LocArray[i]=DataAddress[i];}
    	
    	FCTL3 = FWKEY; //清除锁定位
    	FCTL1 = FWKEY+ERASE; //设置擦除位
    	*FlashAddress =0; //虚拟写入以擦除闪存集
    	FCTL1 = FWKEY+WRT; //为
    	(i=0;i<10;i+){
    		FlashAddress[i]=LocArray[i]启用长字写入;
    		While (FCTL3 & Busy){
    		IF(Loopcn+<100)
    			返回(错误);
    		}
    	}FCTL1
    	= FWKEY; //清除WRT位
    	FCTL3 = FWKEY+LOCK; //设置锁定位
    
    	返回(0);
    } 

    此致,

    Dhananjay

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

    感谢您在发生这种情况时发送代码片段。 我看到您正在调用运行时支持库(RTS)函数memcpy()。 正如链接引用所述,当从RTS访问某个函数,但CCS调试器无法找到其源代码时,将显示该消息。 您可以通过在上面的第4行放置一个断点来验证这一点,当设备停止在它处时,您可以运行“步入”(按F5)来查看调试器显示您看到的屏幕。

    这对于RTS中的功能是正常的,因为它们通常只是辅助功能,大多数人不关心其内部操作。

    其他详细信息也可在下面的简短快速提示视频中看到:
    www.youtube.com/watch

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

    desouza 说:
    我看到您正在调用运行时支持库(RTS)函数memcpy()。 如所述,当从RTS访问某个函数,但CCS调试器无法找到其源代码时,将显示该消息。[/QUOT]此外, 如果程序崩溃,程序计数器位于不包含有效代码的位置,则会显示"无可用<地址>源"消息。

    在这种情况下,消息为“No source available for "0xe6774",对于MSP430F5244,地址 0xe6774不包含任何有效内存,因此表明程序已崩溃。

    可能CCS调试器 “No source available for <address>”消息可以通过CCS指示地址是否在下载程序的部分之外而得到改进,从而指示可能的崩溃。

    [一个复杂的问题是,在某些设备上,ROM功能对程序计数器位置有效,但其地址在下载程序的部分之外。]

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

    切斯特有一个很好的地方 我怀疑它是正常操作的结果,事实上,它是您的代码的脱轨。

    (仅在最初讨论的括号中)

    切斯特

    >>可能CCS调试器“No source available for <address>”消息可以通过CCS指示地址是否在下载程序的部分之外而得到改进,从而指示可能的崩溃。

    这是通过使用设备相关的Gel脚本来实现的,该脚本可以配置设备内存映射的每个细节。 在某些情况下,凝胶不完整或不存在(MSP430器件的情况),因此错误消息具有误导性。

    调试器引擎本身(称为调试服务器)在设计上独立于配置的设备。 这是按此方式进行分区的,因此调试服务器内核的开发可以尽可能独立和可重复使用,以支持各种内核(MSP430,DSP,ARM等)

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

    如果是这样,每次我调用memcpy()时程序都会崩溃,但这不是我的情况,我经常收到该消息。 这意味着我希望它有时能正常工作。 如果我错了,请让我知道。

    此致,

    Dhananjay

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

    我发现一个可疑的细节可能解释了不一致的行为:固定数组长度10和作为参数传递的内容(变量Len)之间有一个混合。 例如,如果Len >10,则将在第一个for ()循环中对数组LocArray执行溢出写入,这会产生不可预测的结果。

    我会仔细检查整个代码中的所有这些潜在陷阱。

    希望这能有所帮助,
    拉斐尔