你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

__use_two_region_memory与macro-lib什么关系?

[复制链接]
zlock_126_com 提问时间:2013-9-25 11:51 /
__use_two_region_memory与macro-lib什么关系?选用macro-lib,有时候说__use_two_region_memory未定义呢?
收藏 评论9 发布时间:2013-9-25 11:51

举报

9个回答
回答时间:2013-9-25 13:47:50

RE:__use_two_region_memory与macro-lib什么关系?

_use_two_region_memory用于指定存储器模式为双段模式,即一部分储存区用于栈空间,其他的存储区用于堆空间,堆区空间可以为0,但是,这样就不能调用malloc()内存分配函数;堆区空间也可以由存储器分配,也可以从执行环境中继承。后者是个库吧
fengye5340 回答时间:2013-9-25 14:53:28

RE:__use_two_region_memory与macro-lib什么关系?

__use_two_region_memory用于指定存储器模式为双段模式,即一部分储存区用于栈空间,其他的存储区用于堆空间,堆区空间可以为0,但是,这样就不能调用malloc()内存分配函数;堆区空间也可以由存储器分配,也可以从执行环境中继承。
在汇编代码中,通过 IMPORT __use_two_region_memory 表明使用双段模式;
在C语言中,通过 #pragma import(__use_two_region_memory)语句表明使用双段模式。
__use_two_region_memory是用在 startup.S里面的,你选择了micro-lib。而不是macro-lib吧。
如果__use_two_region_memory 未定义:在 startup.S加入即可,参考如下:

; User Initial Stack & Heap
                AREA    |.text|, CODE, READONLY
                IMPORT  __use_two_region_memory
                EXPORT  __user_initial_stackheap
__user_initial_stackheap
zlock_126_com 回答时间:2013-9-25 17:10:26

RE:__use_two_region_memory与macro-lib什么关系?

首先谢谢两位,__use_two_region_memory是一个库函数吧,我在工程的源码里没有找到相关的内容,如果是库函数,是哪个lib库的?从来没留意过这个函数
zlock_126_com 回答时间:2013-9-25 17:15:55

RE:__use_two_region_memory与macro-lib什么关系?

网上搜的内容看,用keil编译的时候,如果勾选 use microLIB,等于用keil公司的库,如果不勾选用就用缺省c库,我想问的是这个_use_two_region_memory是在哪个库里,还是两个里面都没有,在其它地方?
dzc2001 回答时间:2013-9-25 17:20:41

RE:__use_two_region_memory与macro-lib什么关系?

__use_two_region_memory应该是定义在了macro-lib里面
英贝特网站上有解释
_use_two_region_memory用于指定存储器模式为双段模式,即一部分储存区用于栈空间,其他的存储区用于堆空间,堆区空间可以为0,但是,这样就不能调用malloc()内存分配函数;堆区空间也可以由存储器分配,也可以从执行环境中继承。
在汇编代码中,通过 IMPORT __use_two_region_memory 表明使用双段模式;
在C语言中,通过 #pragma import(__use_two_region_memory)语句表明使用双段模式。
fengye5340 回答时间:2013-9-25 18:53:21

回复:__use_two_region_memory与macro-lib什么关系?

回复第 4 楼 于2013-09-25 17:10:26发表:
首先谢谢两位,__use_two_region_memory是一个库函数吧,我在工程的源码里没有找到相关的内容,如果是库函数,是哪个lib库的?从来没留意过这个函数 

这个是个函数或者宏定义类的,不是库函数,应该属编译器里面的定义,
zlock_126_com 回答时间:2013-9-26 09:32:21

回复:__use_two_region_memory与macro-lib什么关系?

 大家看一下我这个奋斗板的例子,不选microLIB,可以编译运行OK,选microLIB为什么就不行,不明白原因!

STM32奋斗板-LED闪烁-ucos.zip

下载

782.24 KB, 下载次数: 3

zlock_126_com 回答时间:2013-9-26 09:43:01

回复:__use_two_region_memory与macro-lib什么关系?

回复第 8 楼 于2013-09-26 09:32:21发表:
 大家看一下我这个奋斗板的例子,不选microLIB,可以编译运行OK,选microLIB为什么就不行,不明白原因!
提示:__use_two_region_memory未定义
 
wkuang 回答时间:2013-10-6 16:45:18

RE:__use_two_region_memory与macro-lib什么关系?

在这里给楼主说下一个基础知识:
arm的c代码编译后,分为ro、rw,ZI域。
RO:表示只读,是代码编译出的代码段,是编译后不可改变的代码部分,如汇编指令,在代码运行过程中不可以修改;代码运行时可存放带ROM和RAM中
RW:是可读可写,是代码编译出的数据段,如c语言中的初始化过的全局变量,在代码运行过程中可以修改;代码运行时只可存放在RAM中
ZI:是未初始化的数码段,是代码编译出的数据段,如c语言中的未初始化过的全局变量,代码刚运行后再初始化。
你所说的__use_two_region_memory 是域的地址,指定哪个代码放在哪个区域;
如需相知请参考arm的编译手册

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版