V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asilin
V2EX  ›  嵌入式开发

嵌入式小白,斐迅 N1 是如何决定从 eMMC 还是 SDCard 启动的?

  •  
  •   asilin · 208 天前 · 992 次点击
    这是一个创建于 208 天前的主题,其中的信息可能已经有所发展或是发生改变。

    相关的 uboot --> uImage --> zImage 启动流程已经有所了解,但是不了解是哪个部件决定从 eMMC 还是 SDCard 读取 uboot 二进制文件的?

    就好像 UEFI 可以根据启动菜单来决定从哪个硬盘启动,或者给我一些关键字提示也行。

    硬件小白,初次接触,如果不正确的地方请谅解

    11 条回复    2021-06-08 01:39:04 +08:00
    dalabenba
        1
    dalabenba  
       208 天前 via Android
    不管是 emmc 还是 sdcard 都是块设备,cpu 不能直接访问,一定有一块地址里放了最基本的驱动,让 io 控制器能工作,这块内存可以是在 soc 内部也可以是外接(norflash),看具体平台。总之 cpu 被 hardcode 启动到一块非易失的内存,这里有启动最初的固件,emmc 和 sdcard 都是后面的事情
    pkookp8
        2
    pkookp8  
       208 天前 via Android
    uboot 镜像的存储位置是固定的,应该是硬件,或者说有一小块 cpu 上写死的代码决定的
    启动后会把 uboot load 到固定内存地址
    我的理解,但我不知道 cpu 怎么知道 uboot 的大小,100kb 还是 100mb
    asilin
        3
    asilin  
    OP
       208 天前
    从这边文章: https://conanwhf.github.io/2017/06/08/bootup-2-spl/

    ```
    通常每块芯片,都在硬件中包含了一个 BootROM,是一个小程序,上电后自动运行,无法修改,不同的厂家有不同的设计,但都是给定几种不同的启动模式,然后循环检测。TI 这块板就支持各种模式,如 emmc, nand flash, network, spi, uart 等。
    ```
    ruanimal
        4
    ruanimal  
       208 天前
    关注一下
    sujin190
        5
    sujin190  
       208 天前
    @pkookp8 #2 不用知道,固定大小,先加载这么多,然后就开始执行,uboot 如果需要更多,那么自己再加载就是了吧
    402124773
        6
    402124773  
       208 天前 via iPhone
    uboot 里面决定。bootrom 启动 uboot 在固定位置,uboot 决定后续的
    asilin
        7
    asilin  
    OP
       208 天前
    @402124773 "固定位置"能给一个示例或者范围吗?这应该就是我想要的答案。
    402124773
        8
    402124773  
       208 天前
    @asilin
    这个每种芯片都是不一样的。
    我只记得那个 nxp imx8 的芯片,spl 固定位置是在 66 个 blocks 所在的地方。但是手头没有资料了。
    一般在芯片手册里面关于启动的部分有介绍的。
    bitdepth
        9
    bitdepth  
       203 天前 via iPad
    SoC 中有固化代碼,可以讀取一些 storage 的固定位置到 SRAM 執行,然後初始化記憶體
    至於啟動設備選擇順序有的是固定好的,或者可以用 pin 控制
    wszgrcy
        10
    wszgrcy  
       200 天前
    还以为是我问的....这个我记得是在 uboot 中有
    uboot 规定盘符顺序,然后按顺序启动(好像是)
    不过搞完自己的硬件就不搞了....
    另外这个还是自己去看代码吧,因为你可能还需要更多的知识
    tylinux
        11
    tylinux  
       182 天前
    同小白,我一般是找一下 datasheet: https://dn.odroid.com/S905/DataSheet/S905_Public_Datasheet_V1.1.4.pdf ,从里边的 booting 段,可以看到 S905D 的启动判断流程:

    ![image.png]( https://i.loli.net/2021/06/08/baNC71qt38m9xo6.png)
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4147 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    ♥ Do have faith in what you're doing.