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.

[参考译文] MSPM0L1305:MSPM0L1305 - RAM 自检

Guru**** 1817240 points
Other Parts Discussed in Thread: MSPM0L1305, SYSCONFIG, MSPM0L1306
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1379547/mspm0l1305-mspm0l1305---ram-self-test

器件型号:MSPM0L1305
主题中讨论的其他器件: SysConfig

工具与软件:

大家好、团队成员:

我们需要在 MSPM0L1305.ASAP 中检查 RAM 测试。任何人可以吗?请 尽快在 MSPM0L1305.ASAP 中建议如何实现该测试

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

    您好!

    对于 MSPM0L1305、还有针对闪存的 ECC 和经过奇偶校验的 SRAM。

    请参阅本文档 MSPM0 L 系列32MHz 微控制器技术参考手册(修订版 D)的1.3.2 (TI.com)

    要测试该函数、您可以将数据写入未检查的 SRAM、 然后从经过奇偶校验的 SRAM 中读取、之后将生成奇偶校验错误。

    此致、

    Zoey

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

    Zoey、您好!

    非常感谢您的回复、

    您能分享一下 RAM 测试的任意示例代码吗

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

    您好!

    抱歉、我们没有 RAM 测试演示代码。

    您可以自行编写。 如果您在编写代码时遇到问题、可以开始新帖子或继续查看此主题。

    谢谢!

    Zoey

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

    Zoey、您好!

    非常感谢您的回复、我无法编辑 CCS.ca中的启动文件、请提供相关帮助

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

    您好!

    在 SysConfig 中取消选中下面的。

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

    您好!

    取消选中后、我遇到此问题

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

    您好!

    请将旧的启动文件复制到工程中、然后取消选中它。

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

    Zoey、您好!

    抱歉、我不清楚您提到的是哪个旧启动文件。

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

    您好!

    很抱歉您输入的信息不明确。

    1.请将以下 SDK 中的启动文件: ...\ti\mspm0_sdk_2_00_01_00\source\ti\devices\msp\m0p\startup_system_files\ticlang 复制 到您的自项目中。  例如:

    2.然后、在 SysConfig 中取消选中

    3.构建项目。

    此致、

    Zoey

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

    Zoey、您好!

    谢谢你这么多的答复

    空 Reset_Handler (空)

    _asm (
    "LDR R1、=0x20000000\n"// SRAM 的起始地址
    "LDR R2、=0x20001000\n"// SRAM 的结束地址
    "MOV R3、#0x0A\n\t"//测试模式

    "SRAM_TEST_LOOP:\n"
    "CMP R1、R2\n"//将当前地址与结束地址进行比较
    "Bge SRAM_TEST_DONE\n"//如果达到结束地址、则退出循环

    "STR R3、[R1]\n"//将测试模式写入 R1指向的 SRAM 地址
    "LDR R4、[R1]\n"//从 R1指向的 SRAM 地址读回
    "CMP R4、R3\n"//将读取值与测试模式进行比较
    "BNE SRAM_TEST_FAILED\n"//如果不匹配、则分支

    "添加 R1、R1、#4\n"//为下一次迭代增加地址
    "b SRAM_TEST_LOOP\n"//重复循环

    "SRAM_TEST_DONE:\n"
    ".global _c_int00\n"
    "b _c_int00\n"//跳转至 C 初始化例程

    "SRAM_TEST_FAILED:\n"
    "b SRAM_TEST_FAILED\n"//针对失败测试的无限循环或错误处理
    );
    }

    在这两个 section.ca中显示了一个无效指令、请帮我解决这个问题

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

    您好!

    您是否选择了正确的启动文件?

    这是我成功自写启动文件的演示项目、您可以以此为基础开发您的 code.e2e.ti.com/.../1323.empty_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

    此致、

    Zoey

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

    Zoey、您好!

    感谢您的答复

    我面对这个问题,我不知道我在做什么错,你能帮我解决这个问题吗?  

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

    您好!

    请使用"MOV"而非"MOV"

    和"adds"、而非"add"。

    此致、

    Zoey

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

    Zoey、您好!

    非常感谢您的回复、

    现在可以使用、但我想知道如何清除(清除汇编语言)

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

    您好!

    请参阅以下代码:

        /* Erase SRAM completely before jumping to BSL */
        __asm(
    #if defined(__GNUC__)
            ".syntax unified\n" /* Load SRAMFLASH register*/
    #endif
            "ldr     r4, = 0x41C40018\n" /* Load SRAMFLASH register*/
            "ldr     r4, [r4]\n"
            "ldr     r1, = 0x03FF0000\n" /* SRAMFLASH.SRAM_SZ mask */
            "ands    r4, r1\n"           /* Get SRAMFLASH.SRAM_SZ */
            "lsrs    r4, r4, #6\n"       /* SRAMFLASH.SRAM_SZ to kB */
            "ldr     r1, = 0x20300000\n" /* Start of ECC-code */
            "adds    r2, r4, r1\n"       /* End of ECC-code */
            "movs    r3, #0\n"
            "init_ecc_loop: \n" /* Loop to clear ECC-code */
            "str     r3, [r1]\n"
            "adds    r1, r1, #4\n"
            "cmp     r1, r2\n"
            "blo     init_ecc_loop\n"
            "ldr     r1, = 0x20200000\n" /* Start of NON-ECC-data */
            "adds    r2, r4, r1\n"       /* End of NON-ECC-data */
            "movs    r3, #0\n"
            "init_data_loop:\n" /* Loop to clear ECC-data */
            "str     r3, [r1]\n"
            "adds    r1, r1, #4\n"
            "cmp     r1, r2\n"
            "blo     init_data_loop\n"
            );

    此致、

    Zoey

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

    Zoey、您好!

    非常感谢您的回复,这对我们很有帮助

    如何在汇编语言中调用函数

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

    您好!

    请参阅以下代码:

    void Reset_Handler(void)
    {
        /* Jump to the ticlang C Initialization Routine. */
        __asm(
            "    .global _c_int00\n"
            "    b       _c_int00");
    }

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

    Zoey、您好!

    谢谢你这么多的答复

    我们正在尝试调用切换函数、该函数使 LED 闪烁但 LED 不闪烁。 如果我这样实施、您可以尽快帮助我解决此问题

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

    您好!

    我们的目标是调用函数并使 LED 从启动文件闪烁。 对此、任何人都可以提供帮助吗  

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

    您好!

    如果您只想在启动文件中使 LED 闪烁。 只需在 reset_handler 函数中使用 C 语言(如 Blink_LED ()函数)

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

    Zoey、您好!

    谢谢你这么多的答复,对我来说,它是不工作的。 我附上了供您参考的代码

    e2e.ti.com/.../6136.gpio_5F00_toggle_5F00_output_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

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

    您好!

    您的 GPIO 尚未初始化。

    请将 SYSCFG_DL_init ();添加到 TOGGLE ()函数中;

    此致、

    Zoey

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

    您好!

    是否出乎您的意料?

    这对我来说不起作用  

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

    否、请使用以下代码:

    void toggle(void)
    {
    
            SYSCFG_DL_init();
            DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN |
                                                GPIO_LEDS_USER_LED_3_PIN |
                                                GPIO_LEDS_USER_TEST_PIN);
        while(1){}
    
    }

    如果您不使用 while (1)

    代码将运行到 main 函数中、GPIO 将再次初始化。

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

    Zoey、您好!

    感谢您的回复、它在我这边工作、但我无法调试、我附上了代码供您参考、请帮我解决这个问题

    e2e.ti.com/.../4300.gpio_5F00_toggle_5F00_output_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

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

    您好!

    如果要分步调试 汇编语言、请将代码更改为:

    例如:

    发件人:

    __asm(
                "ldr r1, =0x20000000\n" // Start address of SRAM
                "ldr r2, =0x20001000\n" // End address of SRAM
    );

    收件人:

    __asm("ldr r1, =0x20000000\n"); // Start address of SRAM
                
    __asm(""ldr r2, =0x20001000\n"); // End address of SRAM
    

    此致、

    Zoey

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

    您好!

    在这里、我想检查失败或完成条件、了解如何使用汇编语言进行写入  

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

     Zoey、您好!

    我们正在等待您的回复

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

    如前所 述、请 单独编写汇编语言以进行分步调试。

        __asm("sram_test_done:\n");
        __asm("b toggle()\n");
        __asm("sram_test_failed:\n");

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

    Zoey、您好!

    我们现在处于 RAM 测试部分的最后阶段、但我们面临的小问题、即使在遵循您的指令后、我也无法进行调试

    我附上了供您参考的代码

    我正面临这一问题、在这方面、您能帮我吗

    e2e.ti.com/.../7725.gpio_5F00_toggle_5F00_output_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

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

    您好!

    您能告诉我哪个步骤或代码行会导致此问题吗?

    谢谢!

    Zoey

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

    Zoey、您好!

    谢谢你这么多的答复,在这一行53

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

    您好!

    您会进入 Default_Handler 吗?

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

    您好!

    是的、现在进入  Default_Handler

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

    您好!

    这是因为、一旦 CPU 运行 完成切换、您就无需运行下一个函数。  

    如果您希望在此函数之后运行主代码、可以添加

    _asm (
    ".global _c_int00\n"
    " b _c_int00\n"
    );  

    调试到您的切换函数中、然后是 PC、并更改为主函数。 但是请确保你也许需要 while (1);来结束你的函数、或者在你完成主代码后、它仍将运行到  Default_Handler 中

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

    Zoey、您好!

    谢谢你,这是为我工作