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

stm32启动代码问题

[复制链接]
带刺儿 提问时间:2013-12-26 09:45 /
栈名:S TAC K 大小:Stack_Size 只分配空间不做初始化或者初始化为0:NOINIT 可读可写:READWRITE :   按8 字节对齐:ALI GN=3  栈顶地址:__in it ia l_s p  Stack_Size    EQ U    0x00000400     A R EA     S TAC K,  NOINIT,  READWRITE ,  ALI GN=3 Stack_Mem     S PA C E    Stack_Size __in it ia l_s p  请问以上程序中的:__in it ia l_s p   这个没有定义编译器怎么知道它呢 谢谢
收藏 评论6 发布时间:2013-12-26 09:45

举报

6个回答
有缘于你 回答时间:2013-12-26 12:09:42

RE:stm32启动代码问题

__initial_sp 是编译器自带的定义吧
dzc2001 回答时间:2013-12-26 15:57:45

回复:stm32启动代码问题

 这个在编译器里面有设置,比如MDK的工程config里面
fengye5340 回答时间:2013-12-26 17:03:44

RE:stm32启动代码问题

__initial_sp:这个函数内容见下面堆的设置
;  Heap Configuration
;     Heap Size (in Bytes)
;
Heap_Size       EQU     0x00000200
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
最上面的是栈的设置,
勒布朗 回答时间:2013-12-26 21:03:49

RE:stm32启动代码问题

编译器的配置有的
wkuang 回答时间:2013-12-27 22:44:06

RE:stm32启动代码问题

这些事预编译指令, 是编译器自带的。   
C语言编译出来都的内容包括: RO(代码)、RW(数据/也就是有初始化的变量)、ZI(未初始化的变量)。
这个是ARM构架的内容。
EQU是汇编指令,
ALIGN是预编译指令,用来做全局变量对齐的。
A R EA     S TAC K,  NOINIT,  READWRITE ,  ALI GN=3
温柔的武士刀 回答时间:2013-12-28 14:34:40

RE:stm32启动代码问题

_initial_sp 是个标签,代表当前指令的地址,由汇编器计算出的,代码里使用space分配了Stack_Size个内存单元后再在之后加上_initial_sp,后面会用DCD     __initial_sp  在向量表0初始化栈顶地址,使用堆栈时栈顶地址减1恰好是分配的栈区间

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版