MSP430在CCS开发环境下的内存分配

发布者:温雅如风最新更新时间:2020-03-09 来源: eefocus关键字:MSP430  CCS  开发环境  内存分配 手机看文章 扫描二维码
随时随地手机看文章

用CCS开发环境以及有一年多了,之前写程序,仅仅是停留在写程序的阶段,从来没有想过内存是如何分配的。这次做这个,由于程序的代码量比较大,有40K+,所以在程序整合编译的过程中,遇到了一些之前没有遇到过的问题,在查阅了一些资料之后,解决了这些问题,在这里做一下总结。

 

首先,我们先抛出遇到的问题。在将程序整合之后,编译报错了,报的错误如下图所示。这个问题是说重定向时,重定向的地址为17位,太大了,超过了16位译码的范围。

这里这个问题我是这样理解的,是这些函数中需要调用一些字符串常量(根据错误定位得出的结论),这时候需要跳转到这个常量所在的地址,但是由于这个地址离当前函数所在的地址“太远了”,所以没有办法跳转到那里执行。


有了这样的分析,我们很自然地想到,如果这些字符串常量能够离程序所在的区域“近一些”,那么这个问题就能解决了。如何来控制字符串常量所在的存储区域呢?这里我们需要了解一下cmd文件。


以MSP430F6638的cmd文件为例,它主要包含了两个信息。


一个是关于MSP430F6638的内存映射信息,如下图所示。利用红色的区域中的信息,我们也可以计算出,6638的RAM是从0x2400开始,大小为16K,USBRAM是从0x1c00开始,大小为2k,FLASH分为两个区域总的大小为256K。



另一个是关于变量、代码等分配的存储位置。如下如所示。我们需要重点关注的是红色区域内的信息。观察一下。我们不难理解红色区域内代码的含义,是将.bss段、.data段、.sysmem段及.stack段的信息放在RAM区,而.test段等信息被存储在FLASH区。这些段各代表什么呢?这里我也做了一下总结,如下如所示。


从上图中,我们可以看到,字符串常量存储的位置上FLASH1区或者FLASH2区,可执行代码也是存储在FLASH1去或者FLASH2区。这里出现这个问题的原因可能是可执行代码存储在FLASH区,但是需要的字符串常量存在是FLASH2区,所以重定向时,由于存储的位置较远,导致无法定向到。


因此,我们考虑修改cmd文件,使得字符串常量全部存储在FLASH区。在经过了这样的修改之后,再编译时,不再报错,程序正常运行。


通过工程目录下的.map文件,我们也可以获取内存分配的信息,可以借此来验证我们修改的正确性。


注:这样做可能还存在一个问题,因为FLASH1区的大小非常小,只有31K,按照目前这种做法,中断函数代码、变量初始化的值以及字符串常量都被存储在FLASH1区,部分执行代码也存在这个区域。如果前面三者的大小超过了FLASH1区的大小,这种情况不知道编译器是否会有提示。如果没有提示,但是溢出的话,可能是会出问题的。但是从目前调试的情况来看,一切正常。如果后续出现奇怪的现象,需要考虑是否是这里的问题。

关键字:MSP430  CCS  开发环境  内存分配 引用地址:MSP430在CCS开发环境下的内存分配

上一篇:msp430g2553单片机学习心得
下一篇:MSP430的低功耗探讨

推荐阅读最新更新时间:2024-11-16 23:21

MSP430系列单片机设计便携式医用自动输液器
摘要:介绍了一种医用自动输液器的设计方案,该输液器以TI的MSO430系列单片机为控制芯片,配有显示模块、输液泵驱动模块和键控模块等。该设计方案整机结构新颖,体积小,耗电少,操作方便,使用安全可靠。 关键词:MSP430;液晶;步进电机;输液 1 引言 对于需要自助式护理的病人来说,尤其是由于手术后、晚期癌症、分娩等原因所导致的慢性疼痛的病人,往往需要一种可以由病人自己操作、自动定时、定量向病人进行输液的智能型自动输液器,以达到治疗和镇痛的目的。为此,笔者设计了一种便携式医用自动输液器,该仪器采用电池作为供电电源,并具有功耗小、体积小、重量轻等特点,可满足便携式需要。此外,该仪器使用安全可靠、计量准确、自动化程度高,可适应
[应用]
基于MSP430的微功耗数据采集系统的开发应用
0 引言 以电池作为电源的水下数据采集系统,若要长时间工作必然要为其配备大量的电池作为电源,如果能降低系统的功耗,那么将减少电池的数量,不仅能降低系统的成本而且能大大缩小系统的体积和重量,也更有利于水下数据采集系统的布放。本文介绍了一种基于微功耗单片机MSP430F1611和CF卡的水下微功耗数据采集系统的设计与实现,总功率仅150mW。相比传统的以DSP为处理器、IDE硬盘为存储介质的数据采集系统,功耗大大降低。 1 系统总体构成 本系统是应用在矢量水听器噪声测量试验中,要求实时采集并存储矢量水听器4通道信号,每通道采样率为10kHz,在水下不间断工作7小时。 鉴于本系统采样率不高,7个小时总的数据量不超过2个G
[单片机]
基于<font color='red'>MSP430</font>的微功耗数据采集系统的开发应用
160160液晶屏+MSP430F169程序和电路图
160160液晶屏+MSP430F169程序和电路图。 以MSP430F169作为控制的核心芯片,控制LCD160160液晶屏显示。 可以成功显示图片,数字、字母和汉字。 LCD160160具有显示面积大,显示内容多,功耗低等优点。 部分电路图如下。 ////////////////////////////程序主函数///////////////////////////////////////// void main(void) { InitClock(); IO_Init(); LCD_Init(); LCD_Clear(0x00); while(1) { //电池电量标志
[单片机]
160160液晶屏+<font color='red'>MSP430</font>F169程序和电路图
MSP430G2553中断P1.3测试程序
几天都对TI公司提供的开发板进行仿真测试,总是觉得P1.3上链接按钮有问题,今天这个程序上去没问题!好悲催。原因是P1.3按钮开关要起作用,必须启动上拉电阻,否则极易受干扰影响而使按键不起作用。有开发版的可以上去测试测试。 #include "MSP430G2553.h" int i,k,temp; void delay(int ms) { while(ms--) for(i=0;i 120;i++); } int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;
[单片机]
基于MSP430的便携式紫外线检测仪
0 引言 众所周知,太阳光中适量的紫外线对可以杀菌消毒,增强体质,对人有很大帮助。而过量的紫外线则对人和其他生物有害。紫外线的预报与利用在一些发达国家已经趋于成熟,而在我国尚处于起步阶段,多数数据资源垄断于气象业务部门,不利于公众获得第一手的信息。且在某个地段检测到的数据具有较大局限性,尤其在高楼林立的城市中或地形复杂的旅游景点里甚至不具有参考价值,远不能满足人们的需求。 本文提出了一种基于MSP430的便携式紫外线检测仪设计方案,该方案对紫外线强度进行实时实地、连续的检测。具有数据存储和实时数据查看、显示当前强度值及其他便民信息等功能,测量数据可通过有线或无线通信方式实现与其他终端设备或上位机共享,以实现多点组网的紫外线监测
[单片机]
基于<font color='red'>MSP430</font>的便携式紫外线检测仪
msp430的基本时钟源
msp430的基本时钟源有3个:LFXT1CLK,  XT2CLK,   DCOCLK ; 其中:LFXT1CLK:可以用低频钟表晶体、标准晶体、陶瓷谐振器或外接时钟源工作。 XT2CLK:可以用标准晶体、陶瓷谐振器或外接450khz~8mhz的时钟源工作。 DCOCLK:它是内部数字控制RC振荡器,可以调节。 msp430的3种时钟信号是:ACLK,MCLK,SMCLK; 其中:ACLK(辅助系统时钟):可选时钟源LFXT1CLK(只能是外部时钟源),且一般为32768hz手表晶体)。 用于外围器件。 MCLK(主时钟):可选LFXT1CLK,XT2CLK, DCOCLK 三种时钟源。用于CPU和系统
[单片机]
MSP430数码管的使用Ⅲ
规范代码 #include msp430f149.h typedef unsigned char uchar; #define wei_h P5OUT |= BIT5 #define wei_l P5OUT &= BIT5 #define duan_l P6OUT &= ~BIT6 #define duan_h P6OUT |= BIT6 uchar table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar num = 0; void delay(int z) { int i
[单片机]
基于MSP430FW427的无磁水表设计
1 MSP430FW42x单片机介绍 MSP430FW42x系列单片机是TI公司针对电子式流量与旋转运动检测最新开发的专用MCU芯片,它将超低功耗MCU、旋转扫描接口(SCAN IF)和液晶显示LCD驱动模块完美地结合在一起。该器件的超低功耗结构和流量检测模块不仅延长了电池的寿命,同时还提高了仪表的精度与性能。MSP430FW42x单片机的典型应用包括热量仪表、热水和冷水仪表、气体仪表和工业流量计、风力计以及其他旋转检测应用。 2 流量测量的原理 2.1 基本原理 一个由叶轮或螺旋齿轮构成的机械装置把流体流动转换为转动,这种转换能够实现对流体流量的测量。 把一个谐振回路中的电感置于叶轮的上方可以检测到叶轮的
[单片机]
基于<font color='red'>MSP430</font>FW427的无磁水表设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved