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.

[参考译文] MSP430F67791A:如何获得 RAM 使用情况的准确估算? 程序不能#39;t 引导,即使它有足够的内存。

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/934017/msp430f67791a-how-do-i-get-an-accurate-estimate-of-ram-usage-program-doesn-t-boot-even-though-it-has-enough-memory

器件型号:MSP430F67791A

我正在使用 IAR Workbench、在将大部分变量设置为全局变量后、我在 IAR 生成的存储器映射中获得以下内容。 使用小数据模型。

    *************************************************************************
                ****************************************
                *                                      *
                *      SEGMENTS IN ADDRESS ORDER       *
                *                                      *
                ****************************************


SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
DATA16_AN                              015C - 015D               2   rel    0
                                       0202 - 0205               4 
                                       020A - 020B               2 
                                       0222 - 0225               4 
                                       022A - 022B               2 
                                       0242 - 0245               4 
                                       0262 - 0265               4 
                                       05E0 - 05E1               2 
                                       05E6 - 05E9               4 
                                       05EC - 05EF               4 
                                       05FA - 05FB               2 
                                       05FE - 05FF               2 
                                       0620 - 0621               2 
                                       0626 - 0629               4 
                                       062C - 062F               4 
                                       063A - 063B               2 
                                       063E - 063F               2 
                                       0800 - 0803               4 
                                       080C - 0815               A 
                                       0818 - 081D               6 
                                       0820 - 0825               6 
                                       0828 - 082D               6 
                                       0830 - 0835               6 
                                       0838 - 083D               6 
                                       0840 - 0845               6 
DATA16_I                               1C00 - 1C1F              20   rel    1
DATA16_Z                               1C20 - 2CA3            1084   rel    5
CODE_I                                    2CA4                       rel    1
DATA20_I                                  2CA4                       rel    1
DATA20_Z                                  2CA4                       rel    1
DATA20_N                                  2CA4                       rel    1
CSTACK                                 9B60 - 9BFF              A0   rel    1
DATA16_C                               C000 - C004               5   rel    0
DATA16_ID                              C006 - C025              20   rel    1
CSTART                                 C026 - C04D              28   rel    1
ISR_CODE                               C04E - C405             3B8   rel    1
<CODE> 1                               C406 - EF13            2B0E   rel    1
DATA20_ID                                 EF14                       rel    1
CODE_ID                                   EF14                       rel    1
DATA20_C                                  EF14                       rel    1
INTVEC                                 FF80 - FFF1              72   com    1
RESET                                  FFFE - FFFF               2   rel    1

                ****************************************
                *                                      *
                *        END OF CROSS REFERENCE        *
                *                                      *
                ****************************************

 12 130 bytes of CODE  memory
  4 420 bytes of DATA  memory (+ 100 absolute )
     37 bytes of CONST memory

Errors: none
Warnings: none

这是否是正确的使用估计? 如果是、则说明 如果我使用更多数据存储器、为何无法引导。

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

    它看起来是合理的。 我不知道 IAR 适合堆的位置(你可能会检查堆大小规格)、但你肯定会有很多东西可供选择。

    "无法引导"到底意味着什么?  

    一种可能是启动代码需要很长时间才能清除.bss (DATA16_Z)、从而导致看门狗计时器触发。 在 CCS 中、通常的解决方案是定义一个名为_system_pre_init 函数的函数、以提早停止看门狗。

    在 IAR 中、这个函数看起来被称为__low_level_init,你可以通过修改430/src/lib/low_level_init.c 中的函数来实现它[参考 EW430用户指南(C430-13)第138页]。 (我没有 IAR、因此我不知道它的确切样子。)

    只需添加一行"WDTCTL = WDTPW + WDTHOLD"即可。

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

    `、我要找的是`_low_level_init。