Re: [问题] uboot的开机顺序

楼主: drag (京都念慈庵,贾诩念费翔)   2014-10-13 17:05:45
※ 引述《zelkova (*〞︶〝*)》之铭言:
: 最近在自修uboot开机流程
: google看过一些资料之后 我的理解是这样
: 1. 上电之后
: cpu会到flash或rom位置0x0(看cpu脚位设定), 复制uboot程序到ram中
: 2. uboot拷贝完成后
: 进行driver跟memory的初始化(暂存器), 以及设备的基本测试(看功能是不是正常)
: 3. uboot对装置初始化完成之后
: uboot会对软硬件的环境变量进行设置, 最后执行bootm去加载kernel, 离开uboot
: 身边没有人可以讨论
: 想请各位前辈确认我的理解是不是正确的 谢谢
简略解说,其实开机方式有很多种,
暂时就依你所认知的作补充,板上强者很多,如有讹误请不吝指教~
开机之前先区分一下软硬件部分,通常如下:
HW: 1)SOC(CPU+SRAM)
2)DRAM(SD,DDR或LPDDR等等)
3)其他周边(UART,LCD等)
SW: 1)OBL(Original Bootloader? On-chip Bootloader?也有人说RomCode,
认知上是写死在SOC内部的最早loader,也有听说过用硬件实现的)
2)U-Boot(其实不一定只能用uboot,也有其他各有特色的bootloader可使用,
只要你会porting)
3)kernel(uImage,zImage等,有时候还会有个rootfs,
没有的话可能是用ramdisk方式与kernel image绑在一起)
我使用过的平台来说
SRAM是内建的,开机通常不需要初始化,可直接存取,容量很小(64KB,128KB,256KB等)
DRAM通常是外挂,需要初始化(通常是MB等级,64MB,128MB...等,要几G有几G,
老板和HW同事说了算XD)
依据你的理解
CPU本身只会默认到最开始的位置0去跑(这要参阅各SOC datasheet)
通常那边会安排OBL存放
OBL跑起来(XIP,储存媒体可能是NOR flash在SOC)
去NAND或是SD卡(取决于硬件jumper设定
作者: zelkova (*〞︶〝*)   2014-10-13 21:43:00
感谢drag大大的分享 很受用 之后会找板子来玩玩看<(_ _)>
作者: askacis (ASKA)   2014-10-13 23:30:00
MLO好处是够小,chip内的bootcode 不用花太多搬他因为这个阶段的bootcode能用的资源很有限,像我用过的SOCTI在这个阶段只能用1bit mode去读SD卡,有些chip甚至甚至只能读资料到register,缩小第一阶段的bootloader就有很多好处了~
楼主: drag (京都念慈庵,贾诩念费翔)   2014-10-14 16:58:00
通常MLO主要作CPU/DRAM init,这取决于u-boot放在哪,能放多大

Links booklink

Contact Us: admin [ a t ] ucptt.com