历史上的今天
返回首页

历史上的今天

今天是:2025年01月12日(星期日)

2020年01月12日 | STM32栈和堆使用不同RAM的实现方法

2020-01-12 来源:eefocus

最近在调试将开源数据压缩算法zlib移植到STM32的工程中. 由于zlib要占用大量的动态内存(缺省设置下需要至少280kB左右的内存), STM32内部的48kB 的SRAM远远不够用, 因此必须将动态内存分配使用的内存堆(HEAP)设置在外部的扩展RAM中去.


我在使用的STM32中用了一个别人写的已经烧好的IAP Bootloader, Bootloader中会检查用户程序的向量表首地址(即__initial_sp), 如果发现这个地址的值不在内部ram中, 就认定没有合法的用户程序, 而进入死循环状态拒绝跳转. 另外, 从抗干扰性和稳定性角度出发, 我也的确希望栈放在内部ram中. 这就要求: 将stack分配到内部ram, 而将heap分配到外部ram中


这个问题直接上网找是找不到的, 我实验了很多方法, 找到了一种最简单的解决方案:


将stm32f10x_vector.s中关于heap的设置都提出来, 形成一个新的.s文件, 命名为custom_heap.s, 内容如下:

Heap_Size        EQU     0x000A000  ;


                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3

__heap_base

Heap_Mem         SPACE   Heap_Size

__heap_limit

                 EXPORT  __heap_base

                 EXPORT  __heap_limit


                 END


将这个新的custom_heap.s加到工程中, 同时将stm32f10x_vector.s中提出去的关于heap的设置部分都注释掉.


右键点击custom_heap.s, 选择option, “Zero Initialized Data” 选择外部Ram, 如下:

这里写图片描述

重新build即可. 新的map文件中可以看出现在stack和heap使用的是不同的ram了.

这里写图片描述

推荐阅读

史海拾趣

General Semiconductor ( Vishay )公司的发展小趣事

面对电子行业的高度周期性和市场波动,Vishay凭借其强大的技术实力、丰富的产品线和灵活的市场策略,始终保持在行业内的领先地位。公司通过持续的技术创新、成本优化和“一站式”服务,赢得了广大客户的信赖和支持。即使在行业低迷时期,Vishay也能保持稳定的增长和发展。如今,Vishay已成为全球最大的分立半导体和被动元件制造商之一,其产品和服务广泛应用于工业、计算机、汽车、消费品、电信、军事、航空和医药等多个领域。

G-Two Inc公司的发展小趣事

背景:在光伏胶膜领域取得成功后,福斯特开始寻求多元化发展。

发展:公司依托在光伏材料领域的技术积累和市场优势,逐步向电子电路、锂电等新材料领域拓展。同时,公司还成立了新材料研究院,专注于新材料的研发和创新。

成果:目前,福斯特在电子电路、锂电等领域也取得了显著成绩,为公司带来了新的增长点。

Centellax Inc公司的发展小趣事

随着技术的成熟和市场的扩大,Centellax开始积极拓展国内外市场。公司通过与全球知名的通信设备制造商、电信运营商等建立合作关系,成功将产品打入国际市场。此外,Centellax还积极参与行业展会、研讨会等活动,提升品牌知名度和影响力。

在战略合作方面,Centellax注重与产业链上下游企业的协同发展。通过与供应商、客户等建立紧密的合作关系,实现资源共享和优势互补。这些合作不仅有助于提升公司的运营效率和市场竞争力,还为公司的长期发展提供了有力保障。

富之光(Fujicon)公司的发展小趣事

随着全球化进程的加速,富致科技也积极实施国际化战略。公司不仅在欧洲、北美等地设立了销售和服务网络,还通过参加国际展会、建立海外研发中心等方式,不断提升品牌影响力和市场竞争力。同时,富致科技还注重与全球顶尖企业和研究机构的合作,共同推动PPTC技术的创新与发展。

Coherent Inc公司的发展小趣事

随着公司的发展,Coherent Inc.开始通过收购和整合来增强自身实力。1998年,公司以6500亿美金收购了Palomar Medical Technologies的部分业务,这一举措进一步拓宽了公司的业务范围和技术领域。此外,公司还陆续收购了多家具有技术优势的公司,如Positive Light和Lambda Physik,这些收购不仅增强了公司的技术实力,也使其在激光技术领域的地位更加稳固。

CW Industries公司的发展小趣事

CW Industries公司一直坚持从原材料到最终成品的完全一体化制造流程。这一制造模式使得公司能够对产品质量进行更严格的控制,并确保每一个生产环节的优化。为了进一步提高生产效率,CW Industries还引进了自动化设备,使得制造过程更加高效和精确。这种对生产流程的精细管理,让CW Industries在电子行业中树立了良好的口碑,并为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

DSP开发100问

DSP开发100问 一。时钟和电源 问:DSP的电源设计和时钟设计应该特别注意哪些方面?外接晶振选用有源的好还是无源的 好? 答:时钟一般使用晶体,电源可用TI的配套电源。外接晶振用无源的好。 问:TMS320LF2407的A/D转换精度保证措施。 答:参 ...…

查看全部问答>

颜色识别传感器

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑  …

查看全部问答>

晶体振荡器的工作原理

本帖最后由 paulhyde 于 2014-9-15 09:11 编辑 关键字: 晶振 振荡器 石英晶体 石英晶体振荡器是高精度和高稳定度的振荡器,被广泛应用于彩电、计算机、遥控器等各类振荡电路中,以及通信系统中用于频率发生器、为数据处理设备产生时钟信号和为特 ...…

查看全部问答>

请教做过“倒车影像系统”的兄弟

我现在在做毕业设计,涉及到倒车影像中的“倒车轨迹的绘制”(想把不同转角下的车辆倒车轨迹都绘制好放入flash中供单片机调用)。想了好几天,没有合适的办法绘制倒车轨迹,请指点一二。谢谢。 邮箱 shangqi2010@163.com  感激不尽。…

查看全部问答>

各位老师,我是新手,请教Plc931直接ad转换的问题

我在公司里做毕业设计,采用lpc931单片机,想把一个十六位的数字量用单片机的Pwm功能给转换成模拟量,pwm输出采用rc滤波,但具体的c程序该怎么写呢?请指教!!…

查看全部问答>

关于MAP文件问题

我的MAP里面有个地方产生啦多余的4K RAM,谁知道是什么问题吗?----------------------------------------------------------  ======================CODE  Relative segment, address: 0800246C  ...…

查看全部问答>

新型测试仪器如何减少机架所占空间

Andrew Armutat 产品市场部 吉时利仪器公司   减少机架所占空间。新的吉时利SMU采用了2U[1]高的半机架设计,大大提高了机架密度。在实际情况下,基于该设计的自动化系统容量很容易集成几个到16个通道,甚至于128通道[2]也是有可能的 ...…

查看全部问答>

TI 自行设计开发板自带例程(TI内部资料)不要错过!!!

TI 内部开发板对应的开发例程,非常好!!!…

查看全部问答>

串口

感觉对串口原理不是很懂,看了半天晕晕乎乎的,求大侠指点…

查看全部问答>