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.

[参考译文] MSP430FR5994:链接错误

Guru**** 2555630 points
Other Parts Discussed in Thread: MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/587595/msp430fr5994-linking_error

部件号:MSP430FR5994

你(们)好  

我在调试器模式下使用时收到此错误。

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

    感谢您的发帖。 为了给您提供最佳帮助,您能否提供以下信息:
    1.您能否告诉我们您使用的IAR版本,以便我们尝试重现该问题?
    2.您是否在尝试加载的任何MSP430FR5994代码项目中看到此问题,或者仅在加载此特定代码项目时看到此问题?
    2a. 如果仅出现此代码,您能否为我们提供有关该项目的更多信息? 您可能在移植MSPBoot? 您是否知道用于FRAM器件的MSP430FRBoot (包括FR5994示例)? 您是否包含任何预构建的库?

    它似乎在寄存器/位定义中存在有关LEA_SC和LEASC的错误。 在设备发布之前,头/链接器文件中的模块名称已从名为LEA_SC更改为仅称为LEA -因此这可能是版本控制问题。 您提供的信息有望让我们重现并找到您的案例中仍然存在对LEA_SC的引用。

    此致,
    Katie
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. IAR版本为6.50。1.
    2.只有这个代码我才是这个。
    2a. 是的,我将MSPBoot从5969移植到5994,我将会更改fr5994。

    我将在注册表中查看此LEA_SC和LEASC,如果收到任何回复,将通知您。


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

    您可能需要尝试更新到最新的IAR版本,以查看是否可以解决问题。 应该具有最新的头文件和链接程序文件版本。

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

    您是否能够解决您的问题? 我们还有什么可以帮助您的吗?

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

    您好,Katie:

    到目前为止,我可以编译代码。仍然无法使用应用程序代码中的中断。

    使用 _App_Proxy_Vector_Start和Vector表时遇到的问题。

    想要了解diag_suppress=Pe767,如何计算该值

    #pragma diag_suppress=Pe767
    *((uint16_t *)(_App_Proxy_Vector_Start + RTC_Vector - 59))=(uint16_t) RTC_C_ISR;       //这里59代表?

    *((uint16_t *)(_App_Proxy_Vector_Start + Port4_vector - 59))=(uint16_t) Port_4;

    在 TI_MSPBoot_VecRed_FR5969中..文件BRA指令(0x4030),后跟每个指令的地址

    引导程序例程。 对于5994或非5994,它将更改此BRA指令的遵循方式。

    0x4030,(uint16_t)&_App_Reset_Vector [0],// app_proxy_vector (0)// FFCC = AES256
    0x4030,(uint16_t)&_App_Reset_Vector [0],// app_proxy_vector (1)// FFCE = RTC

    谢谢  

    Rachit  

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

    您好,Rachit,

    看起来您正在尝试将MSPBoot连接到MSP430FR5994。 是这样吗?

    MSPBoot主要是为闪存器件创建的,它以一种非常不同,更复杂的方式处理由于闪存分段而导致的中断。 这涉及到使用代理引导程序表,如上面所述。 我不建议将此作为您项目的起点。 即使您已经开始以这种方式开发代码,我也建议您从MSP430FRBoot开始。

    MSP430FRBoot用于包括MSP430FR5994在内的FRAM器件,不需要中断的代理矢量表。 这意味着没有矢量重定向,中断处理与典型应用中几乎相同。 将此作为起点将解决您当前遇到的中断问题。

    以下是MSP430FRBoot应用报告和代码(包括MSP430FR5994)的链接: MSP430FRBoot 1_00_00_00

    此致,  
    Caleb Overbay

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

    您是否仍需要有关此问题的帮助? 如果您能够解决此问题,您能否使用您解决问题的方法更新帖子?

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

    您好,Caleb,

    对引导加载程序进行编码时:
    在TI_MSPBoot_VecRed_FR5969.c/5994.c中5994.中,引导加载程序使用的所有中断都标记为'RERESTED_
    在bootloader的main.c中,在diag_suppress=Pe767之间,使用适当的偏移定义输入bootloader中断功能所需的函数。
    编译bootloader期间:
    内存保护的矢量表(以0xFFFE结尾)填充代理矢量表条目的地址(最终将存在于主应用程序中)
    当bootloader运行时:
    在启动时,它会在打开内存保护之前将相应的中断复制到内存保护矢量表中,这些中断将在运行时间内保持不变
    胶水:
    代理向量表位置的位置在引导加载程序和主应用程序的链接程序文件中定义,并且必须相同才能使两个二进制文件相互操作。 (通常,任一链接器文件(.xcl)的上半部分都应该是互补的,其中一个文件的更改应该值得评估它是否影响另一个文件)
    对主应用程序进行编码时:
    引导加载程序使用的任何中断将不可用于主应用程序(请参阅 TI_MSPBoot_VecRed_FR5969.c/5994.c)5994.)
    在应用程序主函数开始时, 在diag_suppress=Pe767之间,使用适当的偏移定义输入中断功能所需的函数。
    应用程序编译期间:
    代理矢量表将从TI_MSPBoot_VecRed_FR5969.c/5994.c中5994.中获取,并写入应用程序内存空间。
    当主应用程序运行时:
    按照编码,它会将相应的中断地址复制到代理表中,代理表基本上会将硬件中断转发到源代码/模块中所需的应用ISR功能。
    发生硬件中断时:
    MCU将分支到代理表中的相应地址,除非引导加载程序保留了该向量,在这种情况下直接调用引导加载程序ISR。
    如果应用程序已为相应条目'registed'了ISR功能,则将执行该功能,否则将调用默认代理条目,这是应用程序的重置向量。
    谢谢,顺祝商祺
    Rachit Choudhary

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

    您似乎没有从MSP430FRBoot开始,而是将MSPBoot移植到MSP430FR5994。 这肯定花了很多时间和精力! 上述内容中的许多内容对于FRBoot是不必要的,而且您的解决方案似乎增加了一些复杂性。 您决定不将代码建立在MSP430FRBoot基础上的原因是什么?

    如果您仍有问题,我建议您了解MSP430FRBoot。

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

    您好,Caleb,

    我对以前的代码有依赖性,在以前的代码中,他们定义了具有不同名称和参数的变量(宏),并且使用Boot_vector_table。  

    我必须使用它们,因为它们在完整的代码中有依赖性,这就是 为什么我只使用此代码的原因。

    甚至我也尝试过您的解决方案,从 boot_vector_table调用一个ISR。它工作正常。

    谢谢,顺祝商祺

    Rachit Choudhary