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.

[参考译文] MSP430F2416:msp430f2416

Guru**** 2523440 points
Other Parts Discussed in Thread: MSP430F2416

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/853069/msp430f2416-msp430f2416

器件型号:MSP430F2416

你(们)好  

我们正在项目中使用 msp430f2416处理器、我已将引导加载程序固件加载到 RAM 中。  即使在重新启动后、引导加载程序固件仍保留在 RAM 存储器中。

因此,我无法理解固件如何保留,即使处理器没有 FRAM。 我还附加了下面的引导加载程序链接器文件。

/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
//版权所有(c) 2017,Texas Instruments Incorporated               *
/* 保留所有权利。                             *
/*                                        *
/* 以源代码和二进制形式重新分发和使用,有无      *
/* 如果满足以下条件,则允许进行修改      *
/* 满足:                                   *
/*                                        *
/*  源代码的重新分发必须保留上述版权       *
/*   注意、此条件列表和以下免责声明。       *
/*                                        *
/*  二进制形式的再发行必须复制上述版权     *
/*   注意、*   /中的此条件列表和以下免责声明
/*   随分发提供的文件和/或其他材料。    *
/*                                        *
/*  德州仪器公司的名称和   */的名称均不相同
/*   其贡献者可用于认可或推广衍生产品   */
/*   来自此软件,未经特定的事先书面许可。       *
/*                                        *
/* 本软件由版权所有者和贡献者"按原样"提供*/
/* 和任何明示或暗示的保证、包括但不限于    */
/* 特定适销性和适用性的隐含保证   */
/* 不承认目的。 在任何情况下、版权所有者不得或       *
/* 捐助者应对任何直接、间接、偶然、特殊、    */负责
/* 典型或必然的损害(包括但不限于      *
/* 采购替代货物或服务;丧失使用、数据或利润;*
/* 或业务中断)   
/* 无论是合同、严格责任还是侵权行为(包括疏忽或   */)
/* 其他)因使用本软件而以任何方式产生、        *
/* 即使被告知可能发生这种损害。              *
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/********* /
/* lnk_msp430f2416.cmd -用于链接 MSP430F2416程序   的链接器命令文件*
/*                                       *
/*  用法: lnk430   -o -m lnk.cmd   */
/*       cl430  z -o -m lnk.cmd   */
/*                                       *
/*------------------ *
/*这些链接器选项仅用于命令行链接。  对于 IDE 链接、 */
/*您应该在“项目属性”中设置链接器选项           *
/*-c.                         使用 C 约定进行链接 */
/*-stack 0x0100                   软件栈大小    */
/*-heap  0x0100                   堆区域大小       *
/*                                       *
/*------------------ *
/*版本:1.201                                *
/*------------------ *
/ /
/*指定系统内存映射                       *
/ /
存储器
  SFR            :origin = 0x0000、length = 0x0010
  外设_8位     :origin = 0x0010,length = 0x00F0
  peripherals_16BIT    :origin = 0x0100、length = 0x0100
  //RAM            :origin = 0x1100、length = 0x1000
  //RAM   :origin = 0x1110,length = 0x07F0//2KB
  RAM   :origin = 0x1100、length = 0x08CC //3kb
  INFOA           :origin = 0x10C0、length = 0x0040
  信息           :origin = 0x1080、length = 0x0040
  信息系统           :origin = 0x1040、length = 0x0040
  信息系统           :origin = 0x1000、length = 0x0040
  闪存           :origin = 0x2100,length = 0xDEBE
  FLASH2          :origin = 0x10000、length = 0x9000
  BSLSIGNATURE       :origin = 0xFFBE,length = 0x0002,fill = 0xFFFF
  INT00           :origin = 0xFFC0、length = 0x0002
  INT01           :origin = 0xFFC2,length = 0x0002
  INT02           :origin = 0xFFC4,length = 0x0002
  INT03           :origin = 0xFFC6、length = 0x0002
  INT04           :origin = 0xFFC8,length = 0x0002
  INT05           :origin = 0xFFCA,length = 0x0002
  INT06           :origin = 0xFFCC,length = 0x0002
  INT07           :origin = 0xFFCE,length = 0x0002
  INT08           :origin = 0xFFD0、length = 0x0002
  INT09           :origin = 0xFFD2,length = 0x0002
  INT10.           :origin = 0xFFD4、length = 0x0002
  INT11.           :origin = 0xFFD6、length = 0x0002
  INT12.           :origin = 0xFFD8、length = 0x0002
  INT13.           :origin = 0xFFDA,length = 0x0002
  INT14           :origin = 0xFFDC,length = 0x0002
  INT15.           :origin = 0xFFDE,length = 0x0002
  内部16.           :origin = 0xFFE0、length = 0x0002
  INT17.           :origin = 0xFFE2,length = 0x0002
  INT18           :origin = 0xFFE4,length = 0x0002
  INT19.           :origin = 0xFFE6,length = 0x0002
  INT20.           :origin = 0xFFE8、length = 0x0002
  INT21.           :origin = 0xFFEA,length = 0x0002
  INT22.           :origin = 0xFFEC,length = 0x0002
  INT23           :origin = 0xFFEE,length = 0x0002
  INT24           :origin = 0xFFF0,length = 0x0002
  INT25.           :origin = 0xFFF2,length = 0x0002
  INT26.           :origin = 0xFFF4,length = 0x0002
  INT27.           :origin = 0xFFF6、length = 0x0002
  INT28           :origin = 0xFFF8,length = 0x0002
  INT29           :origin = 0xFFFA,length = 0x0002
  INT30           :origin = 0xFFFC,length = 0x0002
  复位           :origin = 0xFFFE,length = 0x0002
/ /
/*指定段分配到内存中                *
/ /
部分
  .bss     :{}> RAM          /*全局和静态变量        *
  .data    :{}> RAM          /*全局和静态变量        *
  .TI.noinit :{}>RAM          /*用于#pragma noinit         *
  .sysmem   :{}>RAM          /*动态内存分配区域  */
  .stack   :{}> RAM (高)       /*软件系统堆栈        *
#ifndef __large_code_model__
  .text    :{}> FLASH         /*代码                *
其他
  .text    :{}>> RAM //FLASH2 | FLASH   /*代码                *
#endif
  .text:_ISR :{}> RAM       /* ISR 代码空间           *
  .cinit   :{}>RAM       /*初始化表        *
#ifndef __large_data_model__
  .const   :{}>RAM         /*常量数据            *
其他
  .const   :{}>> RAM   /*常量数据            *
#endif
  bslsignature :{}> BSLSIGNATURE   /* BSL Signature            *
  .cio     :{}> RAM          /* C I/O 缓冲器            *
  .pinit   :{}>RAM         /* C++构造函数表       *
  binit   :{}> RAM         /*引导时初始化表  */
  init_array:{}> RAM         /* C++构造函数表       *
  .mspabi.exidx:{}> RAM        /* C++构造函数表       *
  .mspabi.extab:{}> RAM        /* C++构造函数表       *
#ifdef __TI_Compiler_version__
 #if __TI_Compiler_version__>=15009000
  #ifndef __large_code_model__
  .TI.ramfunc:{} load=flash,run=RAM,table (BINIT)
  其他
  .TI.ramfunc:{} load=flash | FLASH2、run=RAM、table (BINIT)
  #endif
 #endif
#endif
  infoA   :{}>infoA        /* MSP430 INFO 闪存段*/
  infoB   :{}>infoB
  infoC   :{}>infc.oC
  infoD   :{}> infod
  /* MSP430中断矢量      *
  RESERVED0  :{*(.int00 )}> INT00 TYPE = VECT_INIT
  RESERVED1  :{*(.int01 )}> INT01类型= VECT_INIT
  RESERVED2  :{*(.int02 )}> INT02 TYPE = VECT_INIT
  RESERVED3  :{*(.int03 )}> INT03 TYPE = VECT_INIT
  RESERVED4  :{*(.int04 )}> INT04类型= VECT_INIT
  RESERVED5  :{*(.int05 )}> INT05 TYPE = VECT_INIT
  RESERVED6  :{*(.int06 )}> INT06 TYPE = VECT_INIT
  RESERVED7  :{*(.int07 )}> INT07 TYPE = VECT_INIT
  RESERVE8  :{*(.int08 )}> INT08 TYPE = VECT_INIT
  RESERVE9  :{*(.int09 )}> INT09 TYPE = VECT_INIT
  RESERVE10  :{*(.INT10 )}> INT10 type = VECT_INIT
  RESERVED11  :{*(.INT11 )}> INT11 type = VECT_INIT
  RESERVE12  :{*(.INT12 )}> INT12 TYPE = VECT_INIT
  RESERVE13  :{*(.INT13 )}> INT13 TYPE = VECT_INIT
  RESERVE14  :{*(.INT14 )}> INT14 TYPE = VECT_INIT
  RESERVED15  :{*(.int15 )}> INT15 type = VECT_INIT
  USCIAB1TX  :{*(.Int16 )}> Int16 TYPE = VECT_INIT
  USCIAB1RX  :{*(.int17 )}> INT17 TYPE = VECT_INIT
  端口1     :{*(.int18)}> INT18 type = VECT_init
  端口2     :{*(.int19)}> INT19类型= VECT_INIT
  RESERVE20  :{*(.int20 )}> INT20 type = VECT_INIT
  ADC12.     :{*(.int21)}> INT21 type = VECT_init
  USCIAB0TX  :{*(.int22 )}> INT22 TYPE = VECT_INIT
  USCIAB0RX  :{*(.int23 )}> INT23 TYPE = VECT_INIT
  TIMERA1   :{*(.int24)}> INT24 type = VECT_INIT
  TIMERA0   :{*(.int25 )}> INT25 TYPE = VECT_INIT
  WDT      :{*(.int26)}> INT26 type = VECT_init
  COMPARATORA  :{*(.int27 )}> INT27 TYPE = VECT_INIT
  TIMERB1   :{*(.int28)}> INT28 type = VECT_INIT
  TIMERB0   :{*(.int29 )}> INT29 TYPE = VECT_INIT
  NMI      :{*(.int30 )}> INT30类型= VECT_INIT
  重置    :{}         >复位 /* MSP430复位矢量      *
/ /
/*包括外设内存映射                       *
/ /
l msp430f2416.cmd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我可以考虑2个可能的问题。  第一个原因是、代码以某种方式存储在闪存中、然后在开始时复制到 RAM 中。  第二个是 RAM 在您的"下电上电"过程中保留数据  

    默认情况下不会初始化 RAM。  在一个完整的下电上电后、不能保证 RAM 会保留数据并且应该主要以一个随机状态出现。  但是、如果电路板/MCU 上存在剩余电量、则代码可能会保留在电路板上。  

    在下电上电时、您确定 VCC 一直为0V 吗?  可能会在断电后使 VCC 和 GND 短路、以释放旁路电容器上的任何残余电压、等等。  

    让我知道这是怎么发生的。  

    谢谢、

    JD