打印

只要用Cortex-M单片机都会遇到的问题

[复制链接]
2409|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Diyer2015|  楼主 | 2017-11-28 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
Diyer2015|  楼主 | 2017-11-28 14:15 | 只看该作者
Stack_Size      EQU     0x0200;

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp   


Heap_Size       EQU     0x000;

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

使用特权

评论回复
板凳
Diyer2015|  楼主 | 2017-11-28 14:15 | 只看该作者
编译器怎么知道我定义的Stack_Mem存储区是栈空间呢

使用特权

评论回复
地板
Diyer2015|  楼主 | 2017-11-28 14:35 | 只看该作者
Defining __initial_sp, __heap_base and __heap_limit
One of several methods you can use to specify the initial stack pointer and heap bounds is to define the following symbols:
__initial_sp
__heap_base
__heap_limit.

使用特权

评论回复
5
Diyer2015|  楼主 | 2017-11-28 14:35 | 只看该作者
__asm void dummy_function(void)
{
    EXPORT __initial_sp
    EXPORT __heap_base
    EXPORT __heap_limit

__initial_sp EQU STACK_BASE
__heap_base EQU HEAP_BASE
__heap_limit EQU (HEAP_BASE + HEAP_SIZE)
}

使用特权

评论回复
6
Diyer2015|  楼主 | 2017-11-28 14:36 | 只看该作者
The constants STACK_BASE, HEAP_BASE and HEAP_SIZE can be defined in a header file, for example stack.h, as follows:
/* stack.h */
#define HEAP_BASE 0x20100000  /* Example memory addresses */
#define STACK_BASE 0x20200000
#define HEAP_SIZE ((STACK_BASE-HEAP_BASE)/2)
#define STACK_SIZE ((STACK_BASE-HEAP_BASE)/2)
Note
This method of specifying the initial stack pointer and heap bounds is supported by both the standard C library (standardlib) and the micro C library (microlib).

使用特权

评论回复
7
xujunyi3611| | 2017-11-28 16:23 | 只看该作者
关于容量和空间的问题吗?

使用特权

评论回复
8
Diyer2015|  楼主 | 2018-9-3 15:16 | 只看该作者
应该是这样的道理!

一起探讨吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

1615

帖子

13

粉丝