给边缘设备选启动和数据存储的料号
一台边缘设备拿存储器干三件不同的事,而一颗芯片不会三件都干得好。它要装它启动和运行的代码,要保住处理器开机期间反复搅动的运行数据,还要存下必须熬过一次断电的大块数据。这每一件都是一个单独的活、背后一种不同的存储器,而给边缘设备选存储,是一件把存储器匹配到活、而不是去找一颗包打天下的料的事。
这些料沿着那三件活分。闪存装代码和小块持久数据、断电也保住。运行内存,也就是 RAM,快、又大到够处理器在里面跑,可一掉电就全忘了。大容量存储装那些必须留下的数据和文件。手艺在于给每一件挑对类型和大小,以及设备怎么从冷启动走到跑起代码,这是把这些选择串起来的那条线。
三个活,三种存储器

代码存储得是非易失、可靠的,因为一个损坏的启动镜像就是一块砖,而它可以容量不大,因为固件比数据小得多。运行内存得快、又大到能一次装下程序和模型要的东西,而它在断电时不用记住任何东西。大容量存储得大、能熬过断电,而它可以比运行内存慢,因为它是按块读写、而不是直接在里面跑。
把这三件搞混,正是设计出岔子的地方。从一颗给大容量存储的料里跑程序又慢又别扭,而想把一个模型的工作集塞进一颗按代码大小选的闪存里,会让设备一直颠簸。第一个决定是点清设备有哪三件活、各自定多大,然后才选任何料号。
这个划分也塑造板子。三件存储活可以是三颗芯片、两颗、或一颗料覆盖其中两件(当处理器自带片上 RAM 或闪存时)。先把活数清楚,才看得出设备是要三颗料、还是能把几件折到一起,在成本和板面定下来之前。
装代码的那颗闪存
很多小型边缘设备从 SPI 总线上的一颗串行闪存启动,这种料便宜、小、用的引脚少。容量按固件、加上更新的余量和一点持久存储来选,而这一类料的密度从不到一兆字节到几十兆字节不等。
对一个中等固件,用 W25Q64JVZEIM 这颗 64Mb SPI NOR 闪存,一个常见的容量,装得下一个典型边缘固件、还留得下一个空中升级镜像挨着正在跑的那个。它读得够快、够处理器从它取代码、或在启动时把那代码拷进 RAM,还把引脚数压得低。
代码很小的地方,一颗更小的料省成本和板面。用 MX25V1006FZUI 这颗低容量 SPI 闪存,给一个固件以千字节计的设备,一个传感节点或一个简单控制器,只要存下它的程序和一小撮设置、再无其他。为一个设备永远用不到的兆字节付钱,是一笔没有回报的成本。
固件大的地方,一颗更大的料不用第二颗芯片就装得下。用 IS25LP256E-JLLA3 这颗 256Mb SPI 闪存,在同一条简单的 SPI 总线上,留出一个更丰富的固件、一个完整升级镜像、和一个放日志或配置的文件系统的空间。密度匹配到代码和它持久数据实际占的、带余量,而不是匹配到一个整数。
NOR 闪存是代码的对的类型,因为它能逐字节随机读,这正是处理器取指令要的,而它以启动镜像所要求的方式可靠。它的弱点是写得慢、每比特成本更高,这就是为什么它装代码、不装大块数据。
同一个 SPI NOR 系列在一个封装、一个驱动上跨这些密度,这是它成为代码默认选择的部分原因。一个设计能随固件长大或缩小、在密度范围里上下挪,而不用改总线或和它说话的软件,而同系列里的第二来源通常是引脚对引脚的更换。
当代码要跑得更快
一颗朴素的 SPI 闪存在一根数据线上每个时钟喂一比特代码,而对一个直接从闪存跑代码的处理器,那会把它饿着。解法是一条到同一种存储器的更宽、更快的路。
用 IS25WJ064F-JTLE-TR 这颗 QSPI 闪存,它一次在四根线上、而不是一根上搬数据,用多几个引脚换来单线 SPI 料好几倍的读带宽。它适合一个就地从闪存执行代码、或在启动时把一个大镜像载进 RAM 又想那启动快的设备,那里多出来的读速值回那几根多出来的线。
对最快的随机读,一条并行总线仍有它的位置。用 S29GL032A90TFIR40 这颗并行 NOR 闪存,它把一整条地址和数据总线摆在引脚上,给一个就地执行、又受不了串行料延迟的处理器以快速随机访问。它花掉许多引脚和板面,这就是为什么它出现在就地执行性能比小封装更要紧的地方,常在更长寿命的工业设计里。
给代码在串行和并行之间选,是一次在引脚对延迟之间的选。一颗串行料把封装保持得小、布线保持得简单,并接受一次几根线把代码时钟出来的延迟,而一颗并行料花引脚和板面去砍掉那延迟。处理器对指令带宽的胃口,决定这个取舍往哪边倒。
大容量存储,裸 NAND 对带管理的 eMMC
当一个设备要存的不止代码,日志、采到的数据、一个装不进代码闪存的模型,它就需要大容量存储,而那意味着 NAND、不是 NOR。NAND 每面积塞远多得多的比特、每比特更便宜,代价是更慢的随机访问、和要管它那些怪脾气的活。
用 W25N01GVZEIG 这颗 1Gb SPI NAND 闪存,在同一条简单的 SPI 总线上,比一颗 NOR 料多得多的存储,给一个设备采来又留下的数据。像这样的裸 NAND 要主机在软件里处理坏块、磨损均衡和纠错,这是一笔买到低料价的、实打实的固件成本。
存储更大、或团队宁可不管裸 NAND 的地方,一颗带管理的料替他们做了。用 THGAF8G8T23BAIL 这颗 eMMC 做边缘设备存储,NAND 加上一个建进同一封装里的控制器,自己处理坏块、磨损均衡和纠错,给主机呈现一个干净的块设备。它比裸 NAND 贵、省下本要去管它的固件,这是一个团队按它要多少存储、想自己拥有多少软件来做的取舍。
大容量存储也是一个对代码闪存太大的模型住的地方。一个在启动时载入一个好几兆字节模型的设备,把它存在 NAND 或 eMMC 里、再拷进 RAM 去跑,这让大块存储成了启动路径的一部分、不只是一个数据汇,而它的读速成了设备启动多快的一部分。
处理器在里面跑的运行内存

一个跑真实程序、又跑模型的处理器,要的运行内存比闪存快得多、大得多,而那意味着 RAM。量由必须一次在内存里的东西定,程序、模型的权重和它的工作缓冲、以及操作系统(如果有的话),而一个 RAM 不够的设备会换页、卡顿、或干脆载不进它的模型。
对一个普通主控,用 MT48LC8M16A2P-6A 这颗 SDRAM 做主控运行内存,一个直截了当的易失存储器,在一条许多成熟微控制器和处理器能直接驱动的并行总线上,给处理器跑起来的余地。它适合一个需要比片上更多 RAM、但还用不上更新类型那种带宽或容量的设计。
对一个搬大量数据的边缘 AI 处理器,用 K3LK3K30EM-BGCN 这颗 LPDDR 给边缘 AI 做运行内存,一个低功耗高带宽的存储器,在同样的活下比更老的 RAM 吃更少的功耗、却把一个饿着的处理器喂上模型要的数据。它适合一个模型大、又是内存带宽在限着推理跑多快的设备,这在模型长出片上内存之外后很常见。
带宽和容量对运行内存是两个分开的问题。一个模型能装进给定的容量、却照样跑得慢,如果内存喂不动处理器,这正是一个更老的并行存储器和同样大小的 LPDDR 之间的差。给 RAM 定大小,意味着既问要多少常驻、又问它要被读得多快。
启动路径把一切串起来
那个把每一个存储选择都组织起来的决定,是设备怎么从上电走到跑代码,因为启动路径决定了设计要哪种代码存储、要多少 RAM。一上电,处理器从某处非易失的地方跑头几条指令,而这件事大体有两条路。在就地执行里,处理器直接从 NOR 闪存取指令并运行,这需要一颗够快喂它的闪存,一颗 QSPI 或一颗并行 NOR,而它把 RAM 需求压低,因为代码没被拷到任何地方。在载入再跑里,一个小启动级把主代码从闪存、或从一个像 eMMC 的带管理器件里,拷进 RAM、再从那里跑,这跑起来更快、需要够装下代码加运行数据的 RAM,但让代码住进更便宜、更密的存储。一个围着一个大模型和一个操作系统建的设备,几乎总是从 NAND 或 eMMC 载入到 LPDDR 里再跑,因为代码大到没法就地执行、而 RAM 本来就为模型在那儿。一个小传感节点常常从一颗 SPI NOR 料就地执行、几乎不带或不带单独的 RAM,因为它代码小、加 RAM 会是没有用处的成本。整张存储清单,哪颗闪存、多少 RAM、裸 NAND 还是 eMMC,都从设备走这两条路里的哪一条跟出来,所以启动路径先定、料再选来服务它。
定下启动路径,存储图就从它落出来。
写到一半掉电怎么扛
一台边缘设备在最坏的时刻掉电,写到一半,而扛得过那一下的是什么,取决于存储是怎么设计来对付它的。一次写到一半被切断的闪存写,能留下一个编程了一半的块,而一个以为写完了的文件系统能回来就坏了,这在启动器件上是一块砖、在数据器件上是丢掉的记录。
防线是已知的、得设计进去。一个日志式或写时复制的文件系统,在新写完成之前把旧数据保持完好,这样一次被打断的写退回到上一个好状态、而不是一个搅烂的。一个像 eMMC 的带管理器件在它的控制器里处理一部分,而裸 NAND 把它留给主机,这是主机固件选裸 NAND 时要扛的活的一部分。
升级路径是这事咬得最狠的地方。一次被打断的空中升级,绝不能让设备没法启动,这就是为什么一次安全的升级在新镜像被完整写入并校验之前,保留正在跑的镜像,并在升级中途掉电时退回去。一个就地覆盖它唯一启动镜像的设备,离一块砖只差一个坏时刻。
掉电也是为什么有些设计留一个小小的始终完好的存储。一个单独的区域、或一颗单独的小料,装那些绝不能丢的数据,写得少、被保护着,而日志和升级的翻搅在别处发生。把"绝不能丢的"和"经常重写的"分开,让一次断电拿不走设备最输不起的那份数据。
按职能匹配容量和寿命
大小是对着这个活存什么、加上余量来选的,而那个余量是实打实的活、不是一个猜。代码闪存要装得下固件、一个给安全空中升级的第二份拷贝、和任何持久设置,而一个把闪存塞满的设备,没有余地安全地更新自己。大容量存储按设备在两次卸载之间留的数据来定大小,带上网络断掉、数据堆起来那几天的富余。
寿命是那条把"所有闪存都一样"的团队逮个正着的规格。闪存随写而磨损,每个单元额定一个擦写次数,而一个每秒往同一处写一条日志的设计,能在现场把一颗便宜料磨坏,远早于任何人计划的。NOR 和 NAND 和那些带管理的料,在它们扛多少次写、以及它们替不替你摊开磨损上各不相同,而一个写得多的活,需要要么一颗为它额定的料、要么一个把磨损在它单元间均衡掉的带管理器件。
读写模式和总大小一样要紧。一颗很少被写、却常被读的料,像代码,对寿命要求不高,而一颗连续记日志的料要求很高,而同样密度的料,能对一个是对的、对另一个是错的。点清每个存储怎么被写、多频繁,正是把一个密度数字变成那颗对的料的事。
保持力是寿命安静的同伴。闪存把它的数据保住好些年,但那个跨度随料的磨损、随温度爬升而缩短,而一个要在一个热外壳里把数据保住十年的设备,对闪存的要求比一个温和的桌面环境高。要活得最久的那份数据,放在一颗有那份保持力撑着的料里。
接口,以及它要的引脚
每种存储器要一种不同的接口,而接口是选择的一部分,因为它花引脚、板面、和处理器的支持。一颗 SPI 闪存要一小撮引脚、几乎任何处理器都能跟它说话,这就是为什么它是小设备上代码的默认。一颗 QSPI 料要多几个引脚、和一个带 QSPI 控制器的处理器,换来好几倍的速度。
并行存储器,并行 NOR 和 SDRAM,要一整条地址和数据总线,这是许多引脚、和一个带外部内存控制器的处理器,而它们只在它们的速度或容量被需要的地方挣到那笔成本。LPDDR 和 eMMC 要处理器上它们自己专用的控制器,所以处理器得带着那些接口来选,因为一个处理器跟它说不上话的存储器,根本不是存储器。
这就是为什么存储器和处理器要一起选。处理器的内存控制器定了哪些存储器才是可能的,而一个没核处理器支不支持它接口就选的存储器,是一个用不了的存储器,不管它数据手册多好。
封装和引脚一起算。一个像 LPDDR 或 eMMC 的 BGA 存储器,要板子的层数和贴装去摆放和布线它,而一颗简单封装里的小 SPI 闪存几乎能落到任何板子上。存储图被板子造得出什么所界定,和被处理器说得上什么话所界定,一样多。
把存进去的东西护住
存储装着一个攻击者想要的东西,可以克隆或篡改的固件、和可以偷走的数据,而在一个联网设备上那份存储是攻击面的一部分。一个明文闪存里的启动镜像能被读出来拷走、或被一个改过的换掉,除非有东西拦着。
安全启动是代码的防线。处理器在运行启动镜像之前核它上面的一个签名,所以一个被篡改或被掉包的镜像被拒掉,而做核验的那个信任根坐在它改不了的地方。闪存照样装着代码,而处理器拒绝跑不带对的签名的代码。
数据有它自己的保护。大容量存储里的敏感数据能被加密,这样一颗从一台丢弃或被偷设备上读下来的料什么都给不出,密钥握在处理器的安全单元里、而不在数据旁边的闪存里。存储在这里要什么,由这个设备值不值得被攻击来定,和容量与速度一起决定。
安全启动和加密靠的是处理器、不是存储器,这是这两者要一起选的又一个原因。一颗闪存没法给自己签名或核自己,所以安全住在处理器里、而存储器只装处理器所保护的东西。一个需要安全启动的设计,在选闪存之前先选一个提供它的处理器。
选边缘存储常见的问题
为什么不用一颗存储芯片包打天下?
因为代码、运行数据、大容量存储是不同的活。代码要可靠的非易失随机读,运行内存要快、易失也没关系,大容量存储要密度和低的每比特成本。没有单一类型三件都擅长,所以一个设备通常带一颗给代码的闪存、一颗给运行内存的 RAM,以及一颗更大的闪存或 eMMC(如果它存大块数据)。
NOR 和 NAND 闪存有什么区别?
NOR 允许逐字节快速随机读,适合处理器执行或取的代码,但每比特更贵、写得慢。NAND 每比特塞远多得多、花更少钱、按块写得更快,适合大块数据,代价是更慢的随机访问、和要管坏块与磨损。代码进 NOR,大块数据进 NAND。
我该用裸 NAND 还是 eMMC?
裸 NAND 每比特更便宜,但要你的固件处理坏块、磨损均衡和纠错。eMMC 把那个控制器建进封装、呈现一个干净的块设备,更贵、但省下软件。按你要多少存储、想自己拥有多少那种管理来选。
一台边缘 AI 设备要多少 RAM?
够装下一次跑的东西,程序、操作系统(如果有)、和模型的权重与工作缓冲。一个 RAM 不够的设备载不进它的模型、或换页时卡顿。按模型和软件的占用来定大小,普通主控选 SDRAM,带宽限着推理速度的地方选 LPDDR。
什么是就地执行,我什么时候要它?
就地执行直接从 NOR 闪存跑代码、不拷进 RAM,这把 RAM 需求压低、适合代码小的小设备。它要一颗够快喂处理器的闪存,一颗 QSPI 或并行 NOR。更大的设备改为把代码载进 RAM、从那里跑,这跑起来更快、要更多 RAM。
为什么我的闪存在现场磨坏了?
闪存单元能扛的擦写次数有限,而一个往同一处写得勤的活,像每秒一条日志,能把一颗便宜料耗尽得远早于预期。用一颗为这个写负载额定的料、或一个把磨损在它单元间摊开的带管理器件,并把存储定大、让写不集中。
按次序选存储器
这个次序让这些料不互相别着选。点清设备的三个活,代码、运行内存、大容量存储,各定大小。定下启动路径,就地执行还是载入再跑,因为它定了代码闪存的种类和 RAM 的量。按固件大小和启动路径要的读速选代码闪存。按一次跑什么选 RAM。如果设备留数据,加上大容量存储,裸 NAND 或 eMMC。还有,核处理器的接口支持每一颗选的存储器,因为那才让它们用得了。
贯穿其中的线是:一台边缘设备的存储是一个小系统、不是单个料,而启动路径是其余挂在上面的那根脊。把这张图弄对,设备启动、跑它的模型、把它的数据保住该保的那么久。弄错了,设备就慢、内存不够、或不到寿命就磨坏了。
相关信息

- 2026.06.08 给 AI 设备配音频解码和转换料号

- 2026.06.08 给 AI 设备接上视频输出和高速通道

- 2026.06.08 给 AI 产品把元件选型和长期供货排明白

- 2026.06.08 给语音 AI 搭一条干净的音频前端
