MSP430低功耗4.5模式(LPM4.5)的调试方法
2010-04-23 作者:利尔达技术部
摘 要:MSP430F5xx系列芯片通过低功耗4.5模式(LPM4.5)实现最低功耗。当芯片进入低功耗4.5模式后,电源管理模块(PMM)的内部稳压器被禁止,此时,芯片的核心电电源包括JTAG和调试(EEM)逻辑设备的电压都将禁止。在这种情况下,芯片进入调试模式或退出LPM4.5模式时,就需要特殊的考虑和调试技术。本报告讨论了LPM4.5模式的程序调试,而debug应遵循与芯片同步进入和退出LPM4.5模式。
1、引言
LPM4.5模式是一个特殊的低功耗模式,在该模式下,MSP430F5xx芯片中的PMM调节器将完全被禁止,从而进一步降低了功耗。因为在LPM5模式下PMM不会为芯片核心提供电源,所以CPU和所有的数字模块包括内存、EEM和JTAG接口都将由于失电而关闭。这样DEBUG调试器与芯片之间的通信就会停止,失去了与芯片的同步。但是我们仍然希望能够在调试程序的过程中,使调试器恢复与芯片同步。
2、程序调试LPM4.5模式
2-1、进入LPM4.5模式
对于有关进入LPM4.5模式的程序流程细节,详见MSP430F5xx系列用户指南中系统复位、中断和操作模式、系统控制模块等章节。
2-2、调试准备
当进行代码调试时,debug调试器失去与芯片通信之前,可以选择“Release JTAG on Go”选项。
• 如果使用CCS的,此选项在运行图标中,点击旁边的运行图标箭头使用下拉菜单(如
图1所示),并选择“Run Free”。
注意:要切换回正常模式,则在同一选项上再下拉一次菜单,选择“Run”选项。
图1 在CCS里启用“Release JTAG on Go”选项
• 如果使用IAR的,此选项在仿真器菜单下被找到(如图2所示)。
图2 在IAR里启用“Release JTAG on Go”选项
选择“Release JTAG on Go”选项释放JTAG线的驱动程序并确保调试器不会与芯片失去通信。然而,选择该选项,调试器无法识别断点。
一旦“Release JTAG on Go”选项使能,执行“Run”命令:
• 如果使用CCS的,点击菜单Target→Run
• 如果使用IAR的,点击菜单Debug→Go
注意:在调试过程中,用户不应该进入单步执行LPM4.5模式。这可能会导致DEBUG调试器失去控制,迫使系统复位。因此,进入LPM4.5模式的最后一步应该是执行“RUN”命令。
2-3、唤醒LPM4.5模式
唤醒LPM4.5模式可能是一个RST事件,一个电源循环,或任何具有中断功能的端口引脚(此功能仅在新的MSP430F5xx系列产品可用;核实特定芯片里的数据表)。想了解更多关于退出LPM4.5模式,详见MSP430F5xx系列用户指南中系统复位、中断和操作模式、系统控制模块等章节。
退出LPM4.5模式导致一个BOR事件并且紧跟正常程序的执行是在系统复位向量的位置。随着从LPM4.5模式唤醒,之前所有调试逻辑的配置都将丢失。从LPM4.5模式唤醒后要与DEBUG调试器同步,软件调试陷阱需要被包含在应用程序代码中。这种软件陷阱代码段仅是用于调试的目的,最终可以从应用程序代码中删除。
通过使用“HALT(停止)”或“BREAK(打破)”制动按钮重新连接调试器与芯片:
• 如果使用CCS的,点击菜单Target→Halt to halt the debugger(停止停止调试);
• 如果使用IAR的,点击菜单Debug→Break to halt the debugger(打破停止调试)。
一旦停止DEBUG调试器,它再次与芯片同步。程序计数器将被设置,下一行的代码语句和下面的代码才能被调试。
同样可以通过检查中断端口I/O输入状态用来获得芯片从LPM4.5模式唤醒。在下面的例子中输入PA.7或P1.7用于唤醒功能。如果调试代码没有被删除,这将避免完全锁定。
3、应用程序演示
使用上述讨论的调试技术来调试源代码演示芯片如何进入/退出LPM4.5模式。
在演示代码里,寄存器SYSRSTIV被检查以确定“唤醒LPM4.5”的启动条件。直到所有复位事情被清除,在SYSRSTIV寄存器内的复位堆栈才会被赋值。如果从LPM4.5模式唤醒事件被检测到,则调用“LPM4_5_Wake Up”函数被并设置一个标志,在函数内初始化端口引脚。
进入或退出LPM4.5模式应用程序的外部控制如下:
 当P1.6来下降沿时,进入LPM4.5模式;
 当P1.7来下降沿时,退出LPM4.5模式。
 当芯片进入/退出LPM4.5模式时,P1.0显示状态如下:
 当芯片进入LPM4.5模式时,P1.0置位(连接P1.0的LED点亮);
 当芯片退出LPM4.5模式时,P1.0复位(连接P1.0的LED熄灭)。
B端口用于指示应用程序的以下状态:
 0x01:掉电复位(BOR)事件被检测到;
 0x02:在主动模式下切换;
 0x04:进入LPM4.5模式前相关设置;
 0x08:检测到唤醒LPM4.5模式事件;
 0x10:唤醒LPM4.5模式后设置初始化完成。
唤醒LPM4.5模式后,在函数“LPM4_5_Wake Up”中端口必须重新初始化并且LOCKIO位必须被清零,以便再次控制端口引脚。
PM5CTL0 &= ~LOCKIO; // Clear LOCKIO and enable ports
注意:如果有逻辑端口设置中断标志,那么他们需要在LOCKIO位已被清零之后再清零。在LOCKIO位清零之前访问这些端口中断寄存器是失效的。
3-1、调试LMP4.5模式的步骤
1) 打开编译器CCS或IAR,导入源代码,见第2.2节开始调试过程;
2) 在运行代码时,芯片初始化;PBOUT = 0x0001(表明BOR事件检测到),芯片进入LPM4模式并等待外部P1.6来下降沿输入;
3)要进入LPM4.5模式,按按键S1(P1.6来下降沿);
4)芯片进入LPM4.5模式,P1.0置位(连接P1.0的LED点亮);PBOUT=0x0004(表明芯片在LPM4.5模式);
5)芯片停留在LPM4.5模式则所有端口引脚保持在上一次初始化状态;
6)要退出LPM4.5模式,按按键S2(P1.7来下降沿);
7)设芯片退出LPM4.5模式,P1.0复位(连接P1.0的LED熄灭);PBOUT=0x0008(表明检测到唤醒LPM4.5模式事件);
8)按照第2.3节的步骤调试器再次与芯片同步;
9)关于停止调试器(如第2.3节里讨论的),设芯片在主动模式下等待P1.6来下降沿重新进入LPM4.5模式,PBOUT=0x0002切换(表明芯片在主动模式下)。
4、参考文献
[1] MSP430x5xx系列用户指南.
[2] IAR嵌入式工作平台版本3 + MSP430的用户指南.
[3] Code Composer Studio 4版的MSP430用户指南