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.

[参考译文] MSPM0C1104:EEPROM 仿真迁移

Guru**** 2538950 points
Other Parts Discussed in Thread: MSPM0C1104

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1553564/mspm0c1104-eeprom-emulation-migration

器件型号:MSPM0C1104


工具/软件:

您好、

我正尝试在工程中实现 EEPROM 仿真。 我可以尝试使用 Resource Explorer 示例并运行良好、但当我要将库导入我的工程(添加工程的路径并包含文件)时、只有在尝试初始化库 (EEPROM_TypeA_init) 时才会收到 HardFault。

我已经在.cmd 文件 (.TI.ramfunc:load = flash、palign (8)、run=SRAM、table (BINIT)) 中定义了 ramfunc 属性。此外、我还将在运行 init 函数之前禁用所有中断。

我不知道发生了什么... 我需要启用 SYSCFG 中的器件吗?

此致、

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

    您好 Franco、

    您知道  EEPROM_TypeA_init () 中的哪一个是硬故障吗? 是否有办法可以共享您的一个或多个项目或文件?

    此致、

    Owen

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

    我到达 init 的末尾:
     

    但在返回代码崩溃时(附加一些有关存储器和寄存器的信息)。


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

    您好 Franco、

    感谢您的分享。 我想知道您是否可以像这样在 main.c 文件中定义所有中断:

    void NMI_Handler (void) { while(1) {} }
    void HardFault_Handler (void) { while(1) {} }
    void SVC_Handler (void) { while(1) {} }
    void PendSV_Handler (void) { while(1) {} }
    void SysTick_Handler (void) { while(1) {} }
    void GROUP0_IRQHandler (void) { while(1) {} }
    void GPIOA_IRQHandler (void) { while(1) {} }
    void TIMG8_IRQHandler (void) { while(1) {} }
    void ADC0_IRQHandler (void) { while(1) {} }
    void SPI0_IRQHandler (void)  { while(1) {} }
    void UART0_IRQHandler (void) { while(1) {} }
    void TIMG14_IRQHandler (void) { while(1) {} }
    void TIMA0_IRQHandler (void) { while(1) {} }
    void I2C0_IRQHandler (void) { while(1) {} }
    void DMA_IRQHandler (void) { while(1) {} }

    此致、

    Owen

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

    Owen、感谢您的支持。

    我从办公室里走了出来。 今天我尝试重新定义所有的中断,但我仍然锁定在 HardFault。 此外,我禁用所有中断,但未成功..

    此致、

    Franco

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

    您好 Franco、

    您能否分享“Processor Options“(处理器选项)的屏幕截图? 您可以通过右键点击工程> Properties…… > Arm Compiler > Processor Options。

    此致、

    Owen

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

    以下是我的配置:

    我使用 eeprom_emulation_type_a_LP_MSPM0C1104_nortos_ticlang 示例进行了检查、看起来相同。

    此致、

    Franco

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

    您好 Franco、

    是的、这正是我们希望配置这些设置的方式。 您是否可以与我共享该项目? 这可能会使调试硬故障变得更容易。

    此致、

    Owen

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

    当然、下面是代码:

    e2e.ti.com/.../CLI_5F00_Calibradora.rar

    此致、

    Franco

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

    您好 Franco、

    感谢您的分享。 当我浏览代码时、我注意到了  eeprom_emulation_address eeprom_emulation_type_a.h 文件中定义的值与示例中的值不匹配。 在您的代码中、它是 0x00001000 、而示例为 0x00001400 。 我将其更改为 0x00001400、不再出现硬故障。 此外、某些变量似乎有多个#defines。 我会仔细检查这些内容、确保您没有两次定义事情。 这可能会导致一些问题。

    此致、

    Owen

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

    Owen、

    首先感谢您的支持。 现在它可以正常工作了。  

    现在我对库中的示例和#ifndef 有一些疑问。 测试以定义  eeprom_emulation_address  然后调用库、但不起作用。 此外、在该示例中、假设:

    #include <ti/eeprom/emulation_type_a/eeprom_emulation_type_a.h>
    #include "ti_msp_dl_config.h"
    
    /* Address in main memory to write to. This is defined in the
     * eeprom_emulation_type_a.h header file. Uncommenting the #define below will
     * overwrite the default #define in the header file. */
    #define EEPROM_EMULATION_ADDRESS    0x00001000

    这不是真的。  

    此致、

    Franco

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

    您好 Franco、

    我又看了一遍,意识到实际的问题是什么。 我之前指出、地址应为 0x1400。 这是不正确的、因为我引用了 B 型宏。 程序硬故障的原因是 EEPROM 仿真地址位于程序所在的闪存内。 一种检查方法是查看.map 文件。 确保仿真地址在代码空间之外。 0x1000 在 SDK 示例中工作的原因是闪存中的代码最多只占用 0xDD0。 我相信您的程序需要大约 0x1570 在闪存中。 我将地址覆盖到 0x1600、在运行代码时没有出现硬故障。

    希望这能够更好地解释硬故障。

    此致、

    Owen