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

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

  •  
  •   asilin · 2021-05-12 16:37:59 +08:00 · 1947 次点击
    这是一个创建于 1293 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    ```
    通常每块芯片,都在硬件中包含了一个 BootROM,是一个小程序,上电后自动运行,无法修改,不同的厂家有不同的设计,但都是给定几种不同的启动模式,然后循环检测。TI 这块板就支持各种模式,如 emmc, nand flash, network, spi, uart 等。
    ```
    ruanimal
        4
    ruanimal  
       2021-05-12 18:39:04 +08:00
    关注一下
    sujin190
        5
    sujin190  
       2021-05-12 18:49:31 +08:00
    @pkookp8 #2 不用知道,固定大小,先加载这么多,然后就开始执行,uboot 如果需要更多,那么自己再加载就是了吧
    402124773
        6
    402124773  
       2021-05-12 22:49:53 +08:00 via iPhone
    uboot 里面决定。bootrom 启动 uboot 在固定位置,uboot 决定后续的
    asilin
        7
    asilin  
    OP
       2021-05-13 09:20:49 +08:00
    @402124773 "固定位置"能给一个示例或者范围吗?这应该就是我想要的答案。
    402124773
        8
    402124773  
       2021-05-13 10:05:58 +08:00
    @asilin
    这个每种芯片都是不一样的。
    我只记得那个 nxp imx8 的芯片,spl 固定位置是在 66 个 blocks 所在的地方。但是手头没有资料了。
    一般在芯片手册里面关于启动的部分有介绍的。
    bitdepth
        9
    bitdepth  
       2021-05-18 01:10:50 +08:00 via iPad
    SoC 中有固化代碼,可以讀取一些 storage 的固定位置到 SRAM 執行,然後初始化記憶體
    至於啟動設備選擇順序有的是固定好的,或者可以用 pin 控制
    wszgrcy
        10
    wszgrcy  
       2021-05-20 15:20:53 +08:00
    还以为是我问的....这个我记得是在 uboot 中有
    uboot 规定盘符顺序,然后按顺序启动(好像是)
    不过搞完自己的硬件就不搞了....
    另外这个还是自己去看代码吧,因为你可能还需要更多的知识
    tylinux
        11
    tylinux  
       2021-06-08 01:39:04 +08:00
    同小白,我一般是找一下 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   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:36 · PVG 05:36 · LAX 13:36 · JFK 16:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.