Eclipse下用GCC 3.1开发单片机,如何实现几个RAM不清零?
单片机可以判断 2种情况:上电、睡眠后唤醒。1、上电时RAM都清零,
2、睡眠后唤醒,几个RAM不清零,保持原来睡眠前的值, 自己写start.s就行了,不要清零的变量单独放一个段。 https://www.amobbs.com/thread-5592044-1-1.html
的8楼说:
IAR中可以在定义的时候加 __no_init使全局变量不会在启动时清零。
有没有同类的
Eclipse用的人少吗? 睡眠唤醒之后 RAM 是否清零,这不是由单片机本身决定的吗?
有些单片机有好几种睡眠状态的低功耗模式,最低功耗的那种,大概是保持特定地址的 RAM 不被清零 矩阵时间 发表于 2022-11-9 10:54
睡眠唤醒之后 RAM 是否清零,这不是由单片机本身决定的吗?
有些单片机有好几种睡眠状态的低功耗模式,最低 ...
(引用自5楼)
RAM清零是上电后由指令干的。
从语言角度讲就是cpu复位后到main之前是汇编,这段汇编建立了C的运行环境。包括data段搬移,bss段清零,设置堆栈,中断向量表等。
这段汇编自己写可以叫start.s,编译器自带的专业叫法是crt0.s 楼上说的这么详细了,楼主还是去认真啃汇编然后改写启动代码吧。哈哈 简单的方法就是。直接ld脚本把ram大小砍 掉你要的字节数。然后最后末尾的那些字节数就不会清零了。用指针去读写。
页:
[1]