您好! 请登录 注册
Picture Show
搜索
Picture Show

       联系电话    

135 1009 9916

图片展示

MCU 一上电,SRAM 里到底是什么?

2026-11-10 09:04:12

板子刚焊好,第一次上电。调试器随便读一块 RAM,满屏 0x5A、0xE3、0x0F……毫无规律。第一反应多半是'芯片坏了',或者是'哪个家伙没初始化就写内存'。

其实谁都没写。这片 RAM 从上电那一刻起,内容本来就是乱的。教科书上写过这件事,但不少做固件的人并没把背后的物理过程想透。这篇把它从头拆一遍。

先放结论

上电(冷启动)之后,SRAM 里的值是不确定的:每个 bit 独立地随机落在 0 或 1,整体既不是全 0,也不是全 FF。换一次上电、换一颗芯片,结果都可能不一样。

不是玄学,往下看。

存一个 bit 的,是个'锁'

标准 SRAM 单元是 6T,六个晶体管:

  • 四个管子搭成两个反相器,每个反相器一个 PMOS 上拉、一个 NMOS 下拉;
  • 两个管子当存取开关,接字线和位线,管读写。

反相器的行为一句话:输入 1 出 0,输入 0 出 1。

重点是'交叉耦合'四个字:反相器 A 的输出 Q 接到反相器 B 的输入,B 的输出 Q̅ 再接回 A 的输入。两个反相器首尾相接,绕成一个闭环。

闭环自带正反馈,于是只有两个状态站得住:

  • Q=1、Q̅=0:Q 喂给 B 一个 1,B 输出 0 给 A,A 看到 0 就输出 1……绕一圈还是 Q=1,自洽,稳住。
  • Q=0、Q̅=1:同一个道理,反过来。

别的状态?没有。像'Q 和 Q̅ 都在中间电平'那种两可状态,理论上存在,但极不稳定——电平只要偏一点点,正反馈几纳秒内就把它推到两个稳态之一。说白了,这对反相器就是刻在硅片上的跷跷板,只有两头能停。

为什么断电就丢

稳态全靠电源撑着。PMOS 导通把节点拉到 VDD,NMOS 导通把节点拉到 GND,这动作本身就得有电。电源一断,VDD 归零,节点电平全部消失,锁存状态灰飞烟灭。

注意,这不是'被抹成 0',是'状态整个没了'。SRAM 的易失,就是这么来的。

上电瞬间,一场微型赛跑

VDD 从 0 往上爬。爬升途中,所有晶体管几乎同时开始导通,两个反相器的输入输出节点都跟着电源电压飘在中间附近——单元正卡在那个'两可'的不稳定点上,像一颗球停在双井势垒的脊顶,往哪边倒都行。

球往哪边滚,取决于单元里那点'天然的不对称'和'扰动':

  • 工艺偏差。左右两组晶体管的阈值电压、沟道尺寸、掺杂浓度不可能完全一致,差个几十毫伏就够定胜负。这也是换一颗芯片结果就变的原因。
  • 噪声。热噪声、电源纹波,每次上电的瞬时扰动都不一样,这是'每次上电都不同'的主要来源。
  • 爬坡速率。电源爬得快慢不同,耦合进两个节点的电荷不平衡程度就不同。同一个板子,改一下上电时序,RAM 初值可能就不一样。
  • 温度。影响阈值和噪声水平,冷热环境下偏向也会变。

哪怕只有几个毫伏的差异,某边一占上风,正反馈立刻放大,把单元锁死到确定的一边——这个 bit 就此有了确定的初值:0 或 1。每个 bit 都这么来一遍,整片 RAM 就成了一个不可预测、每次上电都可能不同的模式。

这里有个容易忽略的细节:这种随机是'有偏'的。工艺失配严重的单元,可能每次上电都偏向同一边;失配小的单元才真正随机。所以'上电值随机'不等于'每次全变',更不等于'平均一半 0 一半 1'。

工程上意味着什么

硬件保证不了 RAM 的初值,那就软件来。正经的启动流程在 main() 之前都得干两件事:把 .data 段从 Flash 拷到 RAM,把 .bss 段清零。你写的'未初始化全局变量默认是 0',其实是启动代码清零的结果,不是物理 RAM 天生就是 0。栈上的局部变量也一样,不赋值就可能是任何值。

车规芯片还要多一层:带 ECC 的 RAM,校验位同样随机,不初始化就去读可能直接触发 ECC 错误。所以安全启动流程通常要做 RAM 预写初始化和 RAM 自检(比如 March C),把潜在故障提前暴露。有些 MCU 干脆做硬件 RAM 初始化,上电自动清零,就是治这个'随机值'。

收个尾

以后再遇到'上电读 RAM 全是乱码',先别急着怀疑芯片。那是它本来该有的样子,问题只在于:你初始化了没有。

如您对我们的产品感兴趣,欢迎联系

我们将为您提供高效、贴心的解决方案!

咨询电话:135  1009  9916(微信同号)

↓ ↓ 点击图片免费领取产品规格书   ↓  ↓ 


     


想深入了解碳化硅功率器件产品知识?点击→「碳化硅(SiC)课堂」获取详情!



作者: 深圳市亿伟世科技有限公司
0
MCU 一上电,SRAM 里到底是什么?
板子刚焊好,第一次上电。调试器随便读一块 RAM,满屏 0x5A、0xE3、0x0F……毫无规律。第一反应多半是'芯片坏了',或者是'哪个家伙没初始化就写内存'
长按图片保存/分享

 技术学院


IGBT 课堂

SIC 课堂
工程师家园

 

产品中心

碳化硅器件

    IGBT

超洁 MOS

东芝隔离器

 

 

 

码上关注

     码上关注

码上联系

Picture Show
Picture Show

联系电话

135 1009 9916

 (微信同号)

添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功!
添加微信好友,详细了解产品
我知道了
粤ICP备2022009448号