历史上的今天

今天是:2024年09月08日(星期日)

2018年09月08日 | STM8L的RAM与内存模型

发布者:cwk2003 来源: eefocus关键字:STM8L  RAM  内存模型 手机看文章 扫描二维码
随时随地手机看文章

一、RAM空间

在内存映射图上可以看到STM8L的RAM划分为2部分,如下:


2K的RAM空间包含513个字节的Stack,经过深入研究发现,其实RAM被划分为:short range、long range、stack这3个部分。如下:


可以在STVD中通过project setting设置上述3部分的大小,具体如下:Project->Settings->linker->input:


Short range空间的最大值是256个字节,库函数有时也会占用几个字节,因此,在此区定义变量时要特别小心,如果越界,编译器提示如下错误:

#error clnk Debug\test.lkf:1 segment .ubsct size overflow (6)

 The command: "clnk -m Debug\test.map -l"D:\Program Files\COSMIC\Lib"  -o Debug\test.sm8 Debug\test.lkf " has failed, the returned value is: 1

exit code=1.

此错误说明段.ubsct超出6个字节,段.ubsct表示在short range内存中未初始化的数据。

Long range的空间根据需求配置,如果数据大小超出范围,编译器提示如下错误:

#error clnk Debug\test.lkf:1 segment .bss size overflow (1)

 The command: "clnk -m Debug\test.map -l"D:\Program Files\COSMIC\Lib"  -o Debug\test.sm8 Debug\test.lkf " has failed, the returned value is: 1

exit code=1.

此错误说明段.bss超出1个字节,段.bss表示在long range内存中未初始化的数据。

Stack是从RAM的最高字节开始的,因此Stack空间为RAM的最高值与long range的最高值之间的差,一方面stack空间不能定义的太小,另一方面,不要定义太大的局部变量,局部变量一般存放在stack中。

另外,如果使用long range,还需要修改Project->Settings->C Compliler中的一项内容,如下:


如果Memory Models设置为short stack模式,则寻址空间只能达到256bytes,此模式下只能使用short range部分,因此如果要使用long range部分,应当设置为Long Stack模式。

二、内存模型

根据代码空间的大小,在工程配置中,可以使用不同的模型。对于代码空间小于64K的情况,可以使用mods0或modsl0;对于代码空间大于64K的情况,可以使用mods或modsl。

1、代码空间小于64K

函数指针和数据指针默认使用@near(2bytes)。

1)、mods0:全局变量默认定义在short range区,可以使用@near把全局变量显示定义的long range区。如:

unsigned char dat1[10];//数据存放在short range

@near unsigned char dat2[10];//数据存放在long range

2)、modsl0:全局变量默认定义在long range区,可以使用@tiny把全局变量显示定义在short range区。如:

unsigned char dat1[10];//数据存放在long range

@tiny unsigned char dat2[10];//数据存放在short range

2、代码空间大于64K

函数指针默认使用@far(3bytes),数据指针默认使用@near(2bytes),可以使用@far把数据指针显示设置为3bytes。

1)、mods:全局变量默认定义在short range区,可以使用@near把全局变量显示定义的long range区。如:

unsigned char dat1[10];//数据存放在short range

@near unsigned char dat2[10];//数据存放在long range

2)、modsl:全局变量默认定义在long range区,可以使用@tiny把全局变量显示定义在short range区。如:

unsigned char dat1[10];//数据存放在long range

@tiny unsigned char dat2[10];//数据存放在short range


关键字:STM8L  RAM  内存模型 引用地址:STM8L的RAM与内存模型

上一篇:STM8使用----STVD(COSMIC)定义变量指定其类型和位定义
下一篇:学习STM8 关于数据类型的定义心得

推荐阅读

先简单介绍下STM8L151G6U6,该MCU是STM8L超低功耗系列,与152系列相比只是少了LCD的功能,官方手册介绍的各个低功耗模式的功耗如下:其低功耗性能还是很不错的,在本文中是基于活跃停机低功耗模式来测试的。要实现STM8L151G6的低功耗,主要可以注意以下几点:1. 不需要用到的外设一律不使能外设时钟,对于临时使用的外设,只需在使用时临时打开即可,使用...
今天华为在IFA展上发布了麒麟990系列,并发布了全球首款旗舰5G SoC芯片麒麟990 5G版。在随后的媒体采访环节,华为Fellow艾伟解答了到底谁是首个商用5G SoC芯片的问题,同时回答了美国元器件供应的问题。在华为发布麒麟990系列之前,三星抢发了三星Exynos 980处理器,并且也称之为全球首款集成了5G基带的手机芯片。今天华为余承东也表示麒麟990 5G版是...
不久之前,人工智能和计算机视觉还像是科幻小说里的东西,而现在,它们突然无处不在,从Alexa和Siri到能够识别你正在做的食物并帮助你完美烹饪的厨房电器。 但情况又在发生变化。智能和视觉处理越来越多地发生在边缘。也就是说,计算是在本地进行的,而不是在云中进行。从手机到家用电器,从汽车到工业机器人,从相机到建筑物的服务器柜,这些系统都在发生...
9月8日消息,据媒体报道,丰田宣布在2030年前投资1.5万亿日元用于新能源汽车电池的研发和制造。据悉,上述投资中,大约1万亿日元(586.5亿元人民币)将主要用于扩大电池产能,将生产线增至70条或更多。丰田计划将电池装机量增至每年200吉瓦,是现有水平的30多倍。除此之外,还有消息称,这笔资金的投资计划中包含有固态电池和下一代锂离子电池的开发。对于下一代锂...

史海拾趣

问答坊 | AI 解惑

用好ThinkPad电源管理软件

ThinkPad笔记本一直备受企业和个人用户的青睐,除了其良好的稳定性、耐用性和舒适性之外,一些个性化的硬件设计及与之相配套的软件亦是其中一个重要因素。下面,就让我们通过ThinkPad电源管理软件来感受一下“黑砖头”中蕴藏的个性化风格,让你能够 ...…

查看全部问答∨

怎样自制电路板

我想自己执着电路,点有没有电路板,不知道大家是怎样制作电路板的,请指教!本人将不胜感激…

查看全部问答∨

PCB工程师需要注意的地方

较多的PCB工程师,他们经常画电脑主板,对Allegro等优秀的工具非常的熟练,但是,非常可惜的是,他们居然很少知道如何进行阻抗控制,如何使用工具进行信号完整性分析.如何使用IBIS模型我觉得真正的PCB高手应该还是信号完整性专家,而不仅仅停留在连连线,过 ...…

查看全部问答∨

分享一本书

8051单片机实践和应用,还不错的…

查看全部问答∨

C语言中的求2幂次的函数

如题,C语言中有没有那样的函数,比如我给出16,2的4次方是16,4就是我想要的,有没有函数能帮我把4算出来的?…

查看全部问答∨

输入十六进制数的问题

        printf("input a 4 hexadecimal:\\n");        scanf("%.2X %.2X %.2X %.2X",&bb[0],&bb[1],&bb[2],&bb[3]);       printf("\\n%.2X %.2X %.2 ...…

查看全部问答∨

WINCE中的微软拼音输入法问题

定制系统时加入了微软拼音中文输入法,结果运行时,只出声母,不出韵母,打不出中文来,请问有人遇到过没,怎么解决?…

查看全部问答∨

微指令操作流程

问个微指令操作流程的 ADD  Rd,disp.指令为双子长指令。disp为位移量。指令的操作流程图如下: 1.pc->MAR,M->MDR,MDR->IR,PC+1; 2.pc->MAR,M->MDR,MDR->MAR,PC+1; 3.M->MDR,MDR->A, 4.Rd->B, 5.A+B->Rd; 我不 ...…

查看全部问答∨

为什么没结果?

dsp的c语言编程,为什么没结果?编译,链接都没错 #include \\"stdio.h\\" void main()      {      int a;    a=4;    printf(\\"%d\\",a);    } ...…

查看全部问答∨

adi,TI ,maxin,linear样片申请

本帖最后由 paulhyde 于 2014-9-15 03:36 编辑 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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