打印

STM32 热启动不初始化RAM

[复制链接]
4738|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
anvy178|  楼主 | 2012-4-20 20:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有什么办法可以让STM32 热启动不初始化RAM   现在一热复位就把RAM初始化了.
沙发
香水城| | 2012-4-20 22:39 | 只看该作者
改startup文件。

使用特权

评论回复
板凳
anvy178|  楼主 | 2012-4-21 22:36 | 只看该作者
没看懂启动文件在那里把RAM 初始化的  堆栈初始化 还有中断向量表那些就知道 能否提示下呢?

使用特权

评论回复
地板
anvy178|  楼主 | 2012-4-21 22:36 | 只看该作者
没看懂启动文件在那里把RAM 初始化的  堆栈初始化 还有中断向量表那些就知道 能否提示下呢?

使用特权

评论回复
5
李富贵| | 2012-4-21 22:59 | 只看该作者
 .section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:

/* Copy the data segment initializers from flash to SRAM */
movs r1, #0
b LoopCopyDataInit

CopyDataInit:
ldr r3, =_sidata
ldr r3, [r3, r1]
str r3, [r0, r1]
adds r1, r1, #4

LoopCopyDataInit:
ldr r0, =_sdata
ldr r3, =_edata
adds r2, r0, r1
cmp r2, r3
bcc CopyDataInit
ldr r2, =_sbss
b LoopFillZerobss
/* Zero fill the bss segment. */
FillZerobss:
movs r3, #0
str r3, [r2], #4

LoopFillZerobss:
ldr r3, = _ebss
cmp r2, r3
bcc FillZerobss

/* Call the clock system intitialization function.*/
bl SystemInit
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr

使用特权

评论回复
6
李富贵| | 2012-4-22 15:44 | 只看该作者
只有gcc可以通过改启动代码避免初始化。
iar可以用__no_init关键字防止初始化,mdk也有类似关键字,自己查帮助吧。

使用特权

评论回复
7
llglqh| | 2012-7-12 21:17 | 只看该作者
iar可以用__no_init关键字防止初始化

使用特权

评论回复
8
yang4469| | 2015-2-5 10:13 | 只看该作者
我找到一个关于不初始化指定RAM空间的博客,改link .sct文件,但是没有找到关于修改startup文件的
http://blog.sina.com.cn/s/blog_9cc7125c01014ge0.html

使用特权

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

本版积分规则

75

主题

801

帖子

3

粉丝