相关的 uboot --> uImage --> zImage 启动流程已经有所了解,但是不了解是哪个部件决定从 eMMC 还是 SDCard 读取 uboot 二进制文件的?
就好像 UEFI 可以根据启动菜单来决定从哪个硬盘启动,或者给我一些关键字提示也行。
硬件小白,初次接触,如果不正确的地方请谅解
1
dalabenba 2021-05-12 16:50:37 +08:00 via Android
不管是 emmc 还是 sdcard 都是块设备,cpu 不能直接访问,一定有一块地址里放了最基本的驱动,让 io 控制器能工作,这块内存可以是在 soc 内部也可以是外接(norflash),看具体平台。总之 cpu 被 hardcode 启动到一块非易失的内存,这里有启动最初的固件,emmc 和 sdcard 都是后面的事情
|
2
pkookp8 2021-05-12 17:25:15 +08:00 via Android
uboot 镜像的存储位置是固定的,应该是硬件,或者说有一小块 cpu 上写死的代码决定的
启动后会把 uboot load 到固定内存地址 我的理解,但我不知道 cpu 怎么知道 uboot 的大小,100kb 还是 100mb |
3
asilin OP 从这边文章: https://conanwhf.github.io/2017/06/08/bootup-2-spl/
``` 通常每块芯片,都在硬件中包含了一个 BootROM,是一个小程序,上电后自动运行,无法修改,不同的厂家有不同的设计,但都是给定几种不同的启动模式,然后循环检测。TI 这块板就支持各种模式,如 emmc, nand flash, network, spi, uart 等。 ``` |
4
ruanimal 2021-05-12 18:39:04 +08:00
关注一下
|
6
402124773 2021-05-12 22:49:53 +08:00 via iPhone
uboot 里面决定。bootrom 启动 uboot 在固定位置,uboot 决定后续的
|
8
402124773 2021-05-13 10:05:58 +08:00
@asilin
这个每种芯片都是不一样的。 我只记得那个 nxp imx8 的芯片,spl 固定位置是在 66 个 blocks 所在的地方。但是手头没有资料了。 一般在芯片手册里面关于启动的部分有介绍的。 |
9
bitdepth 2021-05-18 01:10:50 +08:00 via iPad
SoC 中有固化代碼,可以讀取一些 storage 的固定位置到 SRAM 執行,然後初始化記憶體
至於啟動設備選擇順序有的是固定好的,或者可以用 pin 控制 |
10
wszgrcy 2021-05-20 15:20:53 +08:00
还以为是我问的....这个我记得是在 uboot 中有
uboot 规定盘符顺序,然后按顺序启动(好像是) 不过搞完自己的硬件就不搞了.... 另外这个还是自己去看代码吧,因为你可能还需要更多的知识 |
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) |