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/MSP430F6736:无源可用于"0x2.1008万"

Guru**** 2560390 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/589556/ccs-msp430f6736-no-source-available-for-0x21008

部件号:MSP430F6736
主题中讨论的其他部件:MSP430WARE

工具/软件:Code Composer Studio

您好,

我正在尝试在TI的EVM启动板仿真器上调试我的代码。 我的代码进入SD24 ISR,但从ISR返回时显示此错误。   没有"0x2.1008万"可用的源。 任何人都可以帮助解决此问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    消息"无可用源..."意味着程序计数器的位置(本例中为0x2.1008万)与用于构建程序的任何源不匹配,因此CCS无法打开相应的源文件。

    您是否能够在ISR中设置断点,然后逐步执行并尝试找出您在0x2.1008万处的最终结果?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢John的回复,
    是的,我能够在ISR中放置断点,它成功地断点,一旦到达ISR的最后支柱,我尝试逐步执行,它就会显示此错误,建议查看显示2.1008万的反汇编: FFFF FFFF表示闪存中没有任何内容,但它如何达到该点。 从逻辑上讲,它应该返回到ISR中断的主执行例程。 无法确定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    逻辑上,它应返回到ISR中断的主执行例程。[/QUOT]您能否显示ISR的代码?

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

    带签名的短整型SD24BSample[2],noofsamples=0;
    /*原始样本*/
    SD24BSample[0]=(带符号短整型) SD24BMEMH0;
    SD24BSample[1]=(带符号的短整型) SD24BMEMH1;
    nofsamples++;
    }
    只是为了检查ISR是否正常工作
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [QUETE USER="Gaurav Kumar44"]ISR(SD24B, ADC_INTERRUCLET)我假定ISR是一个将函数定义为中断处理程序的宏。 您是否可以显示ISR宏的定义,因为我没有将其识别为CCS或MSP430ware包含文件的标准宏之一。

    另外,您使用的是TI MSP430编译器还是其他编译器?

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

    带签名的短整型SD24BSample[2],noofsamples=0;
    /*原始样本*/
    SD24BSample[0]=(带符号短整型) SD24BMEMH0;
    SD24BSample[1]=(带符号的短整型) SD24BMEMH1;
    nofsamples++;
    }
    很抱歉给我这样的……
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    仅使用TI MSP430编译器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Gaurav Kumar44 说:
    #pragma vector = SD24B_vector
    ISR (SD24B,ADC_INTERRUPT)

    带签名的短整型SD24BSample[2],noofsamples=0;
    /*原始样本*/
    SD24BSample[0]=(带符号短整型) SD24BMEMH0;
    SD24BSample[1]=(带符号的短整型) SD24BMEMH1;
    nofsamples++;
    }

    我查看了TI 16.9 v.2.LTS编译器为该代码生成的汇编器。 创建了名为ISR的函数,该函数注册为 SD24_B中断源的处理程序。 但是,ISR功能以RETA指令结束。 为了正确操作中断处理程序,函数必须以RETI (从中断返回)指令结束。 函数以RETA指令结束这一事实解释了从函数返回时的崩溃。

    而是尝试使用 __interrupt限定符来定义中断处理程序,MSP430ware示例就是这样做的。 我检查了生成的汇编程序,函数以预期的RETI指令结束:

    #pragma vector = SD24B_vector
    __interrupt void SD24BIR(void)
    {
    带签名的短整型SD24BSample[2],noofsamples=0;
    /*原始样本*/
    SD24BSample[0]=(带符号短整型) SD24BMEMH0;
    SD24BSample[1]=(带符号的短整型) SD24BMEMH1;
    nofsamples++;
    } 

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