3989|13

7671

帖子

2

TA的资源

五彩晶圆(高级)

楼主
 

简单说说uboot [复制链接]

 

本来想回复在帖子里,可是不太方便搜索、查找和归档,所以单独弄出来
https://bbs.eeworld.com.cn/forum ... 5018&fromuid=551466



uboot原理

uboot虽然乱七八糟很多文件,其实本身不复杂,可以看做一个elf/bin loader ,只是这个loader专门用来加载kernel。包括所有boot都是这个目的。

这个工具的核心是ram地址、run地址、loader地址等乱七八糟的地址。在kernel link阶段的ldscript(或ld命令行)中指定入口地址、ram地址等,然后顺着这个地址链接。这里可以忽略mmu变换之后的地址,而只关注实地址。

uboot可以认为是在一堆二级存储中寻找kernel镜像,然后把镜像读进内存(当然,地址需要和上面说的地址吻合),之后做必要的环境打理,比如关掉mmu之类,最后跳到ram中的kernel去。抛开所有的繁华,如果自己做个类似boot的工具,最简单的就是控制nand,从固定的nand sector读到sram(可能首先需要定制sram初始化)的某个地址,关掉mmu,然后jmp过去,完了。



关于移植

那么uboot毕竟是个比较全面的loader,它比较上面说的自己做的boot,kernel镜像可以来自“一堆二级存储”,包括磁盘、sd、nandflash、网络等物理设备,自然也包括这些存储设备中基本的文件系统如ext2,3,如果牵扯网络文件系统,还会涉及到tcp网络协议栈。简单浏览会发现driver中的东西就这些。文件系统和网络是现成的几乎不需要动手,sd、nandflash、netinterface等设备都和linux内核里差不多,每个具体的设备太具体也不不好展开了,基本代码可以在kernel code里找。

我个人认为uboot里90%的代码是辅助代码,都是为了“读到kernel这个文件”,甚至自己还有mmu管理,搞虚拟内存,我个人认为没多少用也多少没必要,反而搞越搞越复杂,不如多加一个调度器直接叫ukernel好了,何必委屈自己只做一个boot?剩下9%是命令行便于测试调试验证等等,剩下只有1%是核心,而这1%的核心,剥开之后也只剩下“地址”这一个概念了。

最新回复

这是叫板啊, 好吧,我搬个板凳来围观  详情 回复 发表于 2016-3-8 23:11
点赞 关注(1)
个人签名

默认摸鱼,再摸鱼。2022、9、28


回复
举报

1944

帖子

32

TA的资源

纯净的硅(高级)

沙发
 
谢谢你的分享,有没有step by step之类的教程或者讲解呢?

点评

真没有,这东西除开各种硬件驱动,文件系统代码和网络代码,它就剩不下什么了,可是各种硬件驱动,移植上也没什么特殊,要了解移植,文件系统,网络,不如直接折腾kernel啦。。。  详情 回复 发表于 2015-6-1 11:30
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 
azhiking 发表于 2015-6-1 11:19
谢谢你的分享,有没有step by step之类的教程或者讲解呢?

真没有,这东西除开各种硬件驱动,文件系统代码和网络代码,它就剩不下什么了,可是各种硬件驱动,移植上也没什么特殊,要了解移植,文件系统,网络,不如直接折腾kernel啦。。。
当然有一个优点就是可能比kernel里面的简单些。
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

3028

帖子

0

TA的资源

五彩晶圆(初级)

4
 
谢谢分享啊   学习了啊
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(中级)

5
 
一针见血。。学习了
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

6
 
UBOOT可以试下很多功能,比如tftp ,usb ,sd 这些,其实不仅是引导而已

点评

>>>kernel镜像可以来自“一堆二级存储”,包括磁盘、sd、nandflash、网络等物理设备,自然也包括这些存储设备中基本的文件系统如ext2,3,如果牵扯网络文件系统,还会涉及到tcp网络协议栈。 一直就没有uboot的强  详情 回复 发表于 2015-6-3 11:38
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

7
 
本帖最后由 freebsder 于 2015-6-3 11:49 编辑
hjh2008303 发表于 2015-6-3 10:13
UBOOT可以试下很多功能,比如tftp ,usb ,sd 这些,其实不仅是引导而已

>>>kernel镜像可以来自“一堆二级存储”,包括磁盘、sd、nandflash、网络等物理设备,自然也包括这些存储设备中基本的文件系统如ext2,3,如果牵扯网络文件系统,还会涉及到tcp网络协议栈。

一直就没有否认uboot的强大。boot就是boot,搞那么多事,就一个目的:“找内核”。至于tftp ,usb ,sd ,内核比uboot成熟很多,没必要在uboot上花功夫。
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

8
 
uboot还要支持镜像升级吧。
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

9
 
freebsder 发表于 2015-6-3 11:38
>>>kernel镜像可以来自“一堆二级存储”,包括磁盘、sd、nandflash、网络等物理设备,自然也包括这些存储设备中基本的文件系统如ext2,3,如果牵扯网络文件系统,还会涉及到tcp网络协议栈。

一直就没有否认uboot的强大。boot就是boot,搞那么多事,就一个目的:“找内核”。至于tftp ,usb ,sd ,内核比uboot成熟很多,没必要在uboot上花功夫。

那你考虑过系统升级么,比如手机刷机,这些引导你觉得放在哪里比较合适呢

点评

呵呵,我前面说过,其他方面kernel很成熟,没必要在uboot上花什么功夫。你说的是功能,我说的是怎么了解。  详情 回复 发表于 2015-6-4 20:43
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

10
 


呵呵,我前面说过,其他方面kernel很成熟,没必要在uboot上花什么功夫。你说的是功能,我说的是怎么了解。
 
 
 

回复

244

帖子

0

TA的资源

一粒金砂(中级)

11
 
楼主好强,向你学习,同意你关于boot的观点,能讲讲找到kernel后的过程吗?从kernel接管cpu开始。
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

12
 
文章寫的很直覺,一看就能懂,入門好文
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

13
 
楼主,我花了一个月把uboot代码读了一遍,我觉得你说这话太轻浮了,你连uboot里一个字符转换函数都不一定能看懂。
 
 
 

回复

5979

帖子

8

TA的资源

版主

14
 
这是叫板啊,
好吧,我搬个板凳来围观
 
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表