你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
STM32å¥ææ¿-LEDéªç-ucos.zip
2013-9-26 09:30 上传
点击文件名下载附件
782.24 KB, 下载次数: 4
RE:__use_two_region_memory与macro-lib什么关系?
RE:__use_two_region_memory与macro-lib什么关系?
在汇编代码中,通过 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
RE:__use_two_region_memory与macro-lib什么关系?
RE:__use_two_region_memory与macro-lib什么关系?
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与macro-lib什么关系?
首先谢谢两位,__use_two_region_memory是一个库函数吧,我在工程的源码里没有找到相关的内容,如果是库函数,是哪个lib库的?从来没留意过这个函数
这个是个函数或者宏定义类的,不是库函数,应该属编译器里面的定义,
回复:__use_two_region_memory与macro-lib什么关系?
STM32å¥ææ¿-LEDéªç-ucos.zip
2013-9-26 09:30 上传
点击文件名下载附件
782.24 KB, 下载次数: 4
回复:__use_two_region_memory与macro-lib什么关系?
大家看一下我这个奋斗板的例子,不选microLIB,可以编译运行OK,选microLIB为什么就不行,不明白原因!
提示:__use_two_region_memory未定义
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的编译手册