LinuxDev 板


LINE

※ 引述《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设定--如果有的话)找第一block或是u-boot档名 把资料load到SRAM上面去 接着PC(program counter)跳过去开始U-boot执行, 通常会作下面几件事情 1. CPU/Clock init:设定CPU倍频,clock来源(内部震荡或是外部等等),倍率等 2. DRAM init: 设定DRAM特性 (例:填SOC register告诉Dram Interface你的DRam是CL几? 有无支援Burst mode?要不要slow slew rate?) 3. UART colsole init:至少debug用的UART要会动才能对U-boot下command 4. bootargs: 设定好kernel开机所需要用到的环境变数 5. loading kernel:把zImage或uImage从NAND或是SD捞出来, 放在启动的DRam上面,验证image合法後才把PC跳过去 driver的初始化,其实每个阶段都会作 OBL如果要UART console秀字,内建就会顺便初始UART(其实是直接填register) U-boot因为本身的泛用性 基本上自己要有UART driver去初始console, 但也有人要用tftpboot,要用到网路,U-boot就需自带net PHY的driver 也有人要在U-boot阶段就点亮LCD,就需要自带LCD driver 但最重要的是CPU以及DRAM的初始化 而以上其他周边的driver, 在kernel启动之後,一样会重挂driver(LCD,UART,NAND,SD卡等) 至於CPU跟DRAM的初始倒是不会再动了 (本体在DRAM上面再去init DRAM-->鸡蛋的问题?) 我知道比较新的硬体以及kernel版本有支援动态变频,这方面的知识我没有,抱歉了~ 对了,为什麽说顺着你的理解讲呢? 目前我所知道的流程有以下几种 OBL-->U-boot-->kernel OBL-->MLO-->U-boot-->kernel (Linaro好像是这样的?) OBL-->OBL2-->U-boot-->kernel (有的U-boot还有分身) OBL-->OBL2-->kernel 等等等...取决於硬体限制以及软体支援度 这边只分享开机而已 这东西是一翻两瞪眼,(开机vs无法开机) 更重要的事情是在开机之後所要作的事情, 如有错误还请各位大大开示了! Orz -- 明月几时有?把青天,不知天上宫阙,今夕是何年? 我欲乘归去,惟恐琼楼玉宇,高处不胜 起舞弄清影,何似在人间。 朱阁,低绮户无眠。不应有,何事长向别时圆? ,此事古难全。 但愿人长久,千里共婵娟 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.97.154
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1413191147.A.F28.html ※ 编辑: drag (61.230.97.154), 10/13/2014 17:08:54
1F:推 zelkova: 感谢drag大大的分享 很受用 之後会找板子来玩玩看<(_ _)> 10/13 21:43
2F:推 askacis: MLO好处是够小,chip内的bootcode 不用花太多搬他 10/13 23:30
3F:→ askacis: 因为这个阶段的bootcode能用的资源很有限,像我用过的SOC 10/13 23:31
4F:→ askacis: TI在这个阶段只能用1bit mode去读SD卡,有些chip甚至 10/13 23:32
5F:→ askacis: 甚至只能读资料到register,缩小第一阶段的bootloader 10/13 23:33
6F:→ askacis: 就有很多好处了~ 10/13 23:34
7F:→ drag: 通常MLO主要作CPU/DRAM init,这取决於u-boot放在哪,能放多大 10/14 16:58







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP