问题描述
近日接到一客户需求,其欲在 STM32CubeIDE 中指定堆(Heap)的地址到某一专用的RAM 中。
问题分析
STM32CubeIDE 生成的工程中,默认的堆栈配置示意图如图 1 所示:
解决方法
通过 STM32CubeIDE 生成的工程中,会默认生成 sysmem.c。这个文件中的
__sbrk_heap_end 指针默认赋值为 NULL,我们只需要更改这个指针为目标地址即可达到期望。
例如:默认配置是“static uint8_t *__sbrk_heap_end = NULL;”我们希望将堆的地址分配到 0x20001000 为起始的空间上,可以这样做:
“static uint8_t *__sbrk_heap_end = (uint8_t*)0x20001000;”
注意:由于堆(heap)向上增长,栈(stack)向下增长,所以在手动更改堆的起始地址时,如果定义的堆和栈空间存在重叠区域,STM32CubeIDE 无法识别这种情形,用户应当避免这样的设置。
验证
在 STM32CubeIDE 生成的串口打印的工程,然后按照上面示例修改 sysmem.c 中的__sbrk_heap_end 参数。
可以看到 heap_pointer 指针通过 malloc 申请到的地址,已经指向了目标 RAM 范围内了。
注意,这里我们在 0x20001000 开始的位置申请了 10 个字节的空间,理论上heap_pointer 应当从 0x20001000 开始计算,但是由于 malloc 在申请的地址时,会占用 8个字节用来存储状态等信息,所以 heap_pointer 指针从 0x20001008 开始。这是STM32CubeIDE 使用了 newlib 库来实现 malloc 的机制所致,不影响用户的使用。
关键字:STM32CubeIDE 工程
引用地址:
STM32CubeIDE生成的工程
推荐阅读最新更新时间:2024-11-11 13:11
苹果无人驾驶汽车团队裁员190人 多数都是工程师
这是苹果公司向加州报告裁员地点的照片,据信此次裁员涉及苹果的无人驾驶汽车部门 2月28日消息,据外媒报道,苹果公司证实,将在圣克拉拉(Santa Clara)和桑尼维尔(Sunnyvale)的无人驾驶汽车部门裁员190人。 本月,在给加州就业发展部的一封信中,苹果披露了裁员情况,并公布了新的细节。美国全国广播公司(CNBC)上月报道称,苹果无人驾驶汽车部门“泰坦计划”(ProjectTitan)正在裁员。苹果发言人汤姆·纽梅尔(Tom Neumayr)证实,致加州政府的信中提到了同样的裁员计划。 大多数受影响的员工是工程师,包括38名工程项目经理、33名硬件工程师、31名产品设计工程师和22名软件工程师。根据文件显示,裁员将于
[汽车电子]
马斯克:特斯拉将在中国建立一支“重要”的工程团队
特斯拉首席执行官埃隆·马斯克在推特上表示,将在中国建立一支“重要”的工程团队,专注于工厂和汽车的软件和固件。“这包括新工厂流程和汽车的原创工程。优秀的工程师只有在支持原创工程的情况下才会加入,仅仅是本地化则不会”。 特斯拉打造的这支工程团队,不仅仅是为其在上海建立的“3号超级工厂”(Gigafactory 3)打造的。目前,该公司正在上海建设“3号超级工厂”,这将导致该公司在中国的员工数量大幅增加。 “3号超级工厂”是特斯拉在中国建造的第一家制造工厂,也是中国首家由外国汽车制造商全资拥有的电动汽车工厂,同时也是该公司在全球建设的第3家超级工厂。 此前,马斯克表示,该公司希望在今年年底前在上海的“3号超级工厂”每周生产3
[嵌入式]
使用Keil MDK以及标准外设库创建STM32工程
1.1 使用Keil MDK以及标准外设库创建STM32工程 通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。本节就介绍怎样利用Keil MDK开发环境和标准外设库来搭建自己的工程。 建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。 1.1.1 开发工具与开发环境 1
[单片机]
因为热爱,所以卓越——一位女芯片工程师的18年攀登
都说江南的女子是水做的,但在芯片这样的硬核科技领域,秦小林率领团队做出了众多全球领先的产品。 德州仪器中功率音频系统应用经理 秦小林 女士 曾经秦小林的父母以为女儿就是画电路的,直到最近芯片在中国成为“显学”才发现原来家有“弄潮女”。 2021年,秦小林团队因颠覆汽车音频的车载音频解决方案: 可以比拟AB类的价格,2.1MHZ, 4通道1600VA的双DSP的D类车载音频放大器而成为TI公司Jack Kilby创新奖的五位入围者之一,这也是中国研发中心的骄傲。1958年,Jack Kilby以工程师的身份入职TI,在当年就发明出了集成电路,并在2000年获得诺贝尔物理学奖。2022年秦小林又入选了福布斯“中国科技女性5
[半导体设计/制造]
工程师在PIC单片机选型时需要了解的特性
单片机的种类很多,PIC单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。 PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。如果是同样的体系结构,时钟频率较高的处理能力会
[单片机]
紫光展锐助力广和通推出高性能5G模组FG652-CN工程样品
近日,紫光展锐助力广和通正式发布了基于展锐5G芯片平台-唐古拉V510的高性能超小尺寸5G Sub-6GHz模组FG652-CN,并已超前进入工程送样阶段。 图源:紫光展锐UNISOC 在众多5G模组中,FG652-CN是面向中国5G行业发布的国产化通信模组,支持5G独立组网(SA)和非独立组网(NSA)两种网络架构,可在国内所有运营商的5G主流频段中平稳运行,同时也可在LTE和WCDMA中进行语音和数据通信,满足各行业对通信模块的需求。 目前,基于展锐5G芯片平台的广和通模组已在电力、工业互联网、安防、车载、智慧零售等多个5G重点行业均有成功项目验证,实网下测试速率也达到业界领先水平,同时已完成wifi6模组的适配,功能和性
[手机便携]
工程师教你开发电源如何进行DC-DC电源模块选型
DCDC的意思是直流变(到)直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器。具体是指通过自激振荡电路把输入的直流电转变为交流电,再通过变压器改变电压之后再转换为直流电输出,或者通过倍压整流电路将交流电转换为高压直流电输出。 DC/DC模块电源以其体积小巧、性能卓异、使用方便的显着特点,在通信、网络、工控、铁路、军事等领域日益得到广泛的应用。怎样正确合理地选用DC/DC模块电源呢? 1 电源模块选择需要考虑的几个方面: a.额定功率 b.封装形式 c.温度范围与降额使用 d.隔离电压 e.功耗和效率 2 额定功率 一般建议实际使用功率是模块电源额定功率的30~80%为宜(具体比例大小还与其他因素有关,后
[电源管理]
RISC-V 领军企业 SiFive 大裁员:20% 员工被裁,大部分是工程师
10 月 25 日消息,RISC-V 生态系统中的关键公司之一 SiFive,正在经历一场重大的重组,这场重组主要是大规模裁员和业务重心转移,这一举动给 SiFive 的未来以及其对 RISC-V 的贡献带来了不确定性。 IT之家注意到,RISC-V 已经成为制造微型低成本核心的热门选择,但也有一些公司研发高性能的基于 RISC-V 的产品,SiFive 就是这样一家公司,该公司提供现成的设计,也根据客户的需求制作定制核心。 但今天 SiFive 发布声明称,正在裁减约 20% 的员工(约 140 人),涉及不同的团队。据悉,其中大部分是工程师,还有一些销售和产品人员。与此同时,该公司的领导层,包括首席执行官 Patrick
[嵌入式]