CPU 上电时是如何读取 SPI Flash 里面内容的,不需要驱动吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liyongjun0803
V2EX    问与答

CPU 上电时是如何读取 SPI Flash 里面内容的,不需要驱动吗?

  •  
  •   liyongjun0803 2020-12-04 09:56:37 +08:00 1981 次点击
    这是一个创建于 1773 天前的主题,其中的信息可能已经有所发展或是发生改变。

    硬件的驱动都写在 uboot 或 kernel 里面,它们都是存储在 SPI Flash 中的,那么,CPU 刚上电时,不需要驱动来读取 SPI Flash 吗?

    6 条回复    2020-12-04 21:40:43 +08:00
    BingoXuan
        1
    BingoXuan  
       2020-12-04 10:07:26 +08:00   1
    我得是 arm 不需要,cpu 上後通自硬件取 flash 的程序到存然後特定存位置始
    zhujinliang
        2
    zhujinliang  
       2020-12-04 10:10:28 +08:00 via iPhone   1
    其实 CPU 内还有一块 ROM,固化了一段启动代码,作用大概就是读取配置字节或 GPIO 状态确定从哪些外设启动、搜索可用于启动的设备、从外设读出数据放到内存做第 1 阶段的引导
    第 1 阶段引导程序通常大小固定,只有 64K 或者 128K,用来加载 uboot 等引导程序
    liyongjun0803
        3
    liyongjun0803  
    OP
       2020-12-04 11:40:01 +08:00
    @zhujinliang 这段固化的启动代码,是不是根据 CPU (甚至主板) 自身设计的?我如果替换一颗 Flash,只要这颗 Flash 的基本参数和原来 Flash 一致,是否对 CPU 来说是无感的。这也就是为什么好多路由器玩家自己替换 Flash 也能够成功运行的原因吗?
    hjc4869
        4
    hjc4869  
       2020-12-04 13:21:16 +08:00   1
    bootrom 负责加载 SPI flash 里的 bootloader,bootrom 知道怎么初始化 SoC 上的 sd/emmc 或者 spi 控制器并且读取内容,至于怎么跟 spi flash 打交道,是 spi 控制器的事情。
    cmostuor
        5
    cmostuor  
       2020-12-04 15:06:29 +08:00   1
    机器上电后读取 spiflash 的内容有多种实现方式 你的驱动是指硬驱或软驱? 还是指操作系统层面的驱动? 硬驱实现方式是在 cpu 上电时通过复位信号让 spi 控制器从 0x0 地址读取到内存然后 CPU 在执行这过程纯硬件实现 软驱用 bootrom 简单的 bootrom 其实不过是让 spi 控制器从 0x0 地址开始读取数据到内存地址然后在跳转过去比如这个 https://github.com/kchhero/riscv-bootrom 复杂的比如这个 https://github.com/j-core/bootrom
    benmaowang
        6
    benmaowang  
       2020-12-04 21:40:43 +08:00   1
    SPI Flash 有个标准的读指令,CPU 上电后会自动读 N 字节到启动地址(一般映射到片内 RAM,或 Cache,或内存),然后跳转过去执行。
    所以 Flash 上起始地址会保存 uboot 等 bootload 程序,尽量在这 N 字节内做到把内存初始化,并实现把剩余的 boot 代码拷到内存。
    bootload 一旦运行起来,其它的就好办了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1045 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:03 PVG 02:03 LAX 11:03 JFK 14:03
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86