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

__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, 下载次数: 4

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版