历史上的今天
返回首页

历史上的今天

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

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

2018-09-08 来源:eefocus

一、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


推荐阅读

史海拾趣

HSMC公司的发展小趣事

HSMC的发展不仅为公司自身带来了显著的经济效益,也为当地社会和经济发展做出了重要贡献。项目全面达产后,预计可实现年产值600亿元,利税60亿元,直接带动就业人口3000人。此外,HSMC还通过技术创新和产业升级,带动了上下游产业链的发展,促进了整个电子行业的繁荣与进步。

以上五个故事共同描绘了HSMC在电子行业中的崛起与发展历程。作为一家充满活力和创新精神的企业,HSMC正以其独特的优势和不懈的努力,向着成为全球领先CIDM晶圆厂的目标不断迈进。

Fairchild公司的发展小趣事

近年来,Fairchild公司在全球范围内与众多知名企业建立了合作关系。其中,与华为的合作尤为引人注目。华为作为全球领先的通信设备制造商,对供应商的要求极为严格。然而,Fairchild公司凭借其出色的产品质量、客户支持和公司间的成功合作,从众多供应商中脱颖而出,成为华为的核心合作伙伴之一。华为对Fairchild公司的认可不仅体现在订单量的增加上,还体现在对其产品和服务的高度评价上。

aconno公司的发展小趣事

随着公司实力的增强,aconno开始积极拓展国内外市场。通过与各大电商平台和分销商建立合作关系,aconno的产品迅速覆盖了更广泛的地域和用户群体。此外,公司还积极参与国际电子展和技术交流会,与全球合作伙伴建立紧密的合作关系,共同推动电子行业的发展。

Gems Sensors & Controls公司的发展小趣事

Gems公司的首次商业成功源自一款专为小型造船业设计的舱底开关。这款产品的推出迅速得到了船舶和工业界的认可,不仅为公司带来了可观的收入,也奠定了Gems在传感器市场的地位。随着产品的广泛应用,Gems的员工数量和设施规模不断扩大,厂房从最初的6,500平方英尺扩展至位于美国康涅狄格州普莱恩维尔市的60,000平方英尺,为公司后续的发展提供了坚实的基础。

蜂鸟无线公司的发展小趣事
根据电动机的功率、转速范围等要求,选择合适的PWM生成集成电路,如555定时器、微控制器等。
ALCOA公司的发展小趣事

第一次世界大战期间,铝因其轻质且强度高的特性,被广泛应用于航空和汽车工业。ALCOA公司借此机会迅速发展壮大,为军方和汽车制造商提供了大量的铝材。这种需求推动了公司的技术进步和生产规模的扩大,也奠定了ALCOA在电子行业中的领先地位。

问答坊 | AI 解惑

protel dxp中为什么没有intel的元件

protel dxp中为什么没有intel的元件,到那可以下载到啊,谁能告诉我一下。    另外,在99se中有元件库Intel Databooks.ddb,怎么把他导入dxp中使用。…

查看全部问答>

模拟传感器系统的抗干扰措施

一、前言      模拟传感器的应用非常广泛,不论是在工业、农业、国防建设,还是在日常生活、教育事业以及科学研究等领域,处处可见模拟传感器的身影。但在模拟传感器的设计和使用中,都有一个如何使其测量精度达到最高的问题。而众多的 ...…

查看全部问答>

Altium Designer Summer 08 集成库 pcb封装 sch封装

这是Altium Designer Summer 08 集成库 是三年用这个软件自己做的所有封装,里面基本上涵盖了所有的常用元件,单片机封装,很实用。对于单片机学习者相当的有帮助! [ 本帖最后由 water1987 于 2010-1-11 10:40 编辑 ]…

查看全部问答>

我看了ADS下的stratup.s怎么移植到KEIL下?

我看了ADS下的stratup.s怎么移植到KEIL下? 请教高手 …

查看全部问答>

DT930显示中文

有谁知道DT930程序如何显示中文,注册了自定义字体后还需什么代码吗?…

查看全部问答>

想做GPRS数据采集,发送,应该选用什么GPRS产品?

现在想做一个加油站的加油数据采集和无线传输,数据采集和数据传输功能需要哪些设备?特别是无线数据传输这块,预计采用GPRS网络进行传输,不知道完成这个传输功能应该采用什么设备? 1.是基于GPRS网卡的二次开发? 2.直接使用GPRS DTU,这个价格 ...…

查看全部问答>

关于51单片机的地址

我在课件上看到,STC89C52RC单片机的地址,只有80H-FFH这段地址能用程序来控制, 这就是在REG52.H头文件中被定义了,至于00H-7EH这段是被称为\"直接或间接寻址寄存器\", 一共分为四个区的,请问这四个区, 既然不能被程序控制,那么它是用在存放什么数据的 ...…

查看全部问答>

寻STM32FUSB接口电路

                                 坛子里哪位大仙儿用过STM32F通过USB接口连接计算机USB的成熟的电路图给俺一份借鉴下,或者万利的电路图也行,等待 ...…

查看全部问答>

android

有用Basic4android进行开发的吗?…

查看全部问答>

抄了一块超声波电子白板原理图,帮忙分析下前端运放

前段时间抄了一块超声波电子白板的原理图,现在样品也做出来了,不过对超声波信号接收总是存在波动。估计是前端接收到的超声波信号放大处理存在问题,请哪位大神帮我分析下下面超声波信号的放大处理电路。 1.MK是超声波接收头,频率40K。 2.DS1 ...…

查看全部问答>