bootloader初识

bootloader初识,第1张

作为一个嵌入式工程师,如果不能写bootloader程序,那就不能成为一个真正的嵌入式工程师。最近在做arm项目,也会用到uboot,但是对于bootloader,我还是处于一知半解的状态。。

要了解arm的bootloader,得先了解arm体系结构。arm主要由arm内核单元,vector interface,coprocessor,两种cache(指令和数据cache),两种TCM(指令和数据TCM),MMU(内存管理),power management(电量管理)。

cache是为了平衡数据之间的速度而使用的,TCM则是为了存储一些频繁使用的数据,如中断向量等。TCM和cache是有区别的,虽然都是为了加快速度,但是TCM必须给它指定地址。TCM和cache的用途也不一样,TCM保存常用到的数据如中断向量和realtime数据,而cache只是为了加快处理器和外设之间的数据处理。

MMU主要处理虚拟地址到物理地址的转换,起到对数据的保护作用,用在 *** 作系统的体系中。

很显然,bootloader程序就是要对后来的程序提供一个良好的运行环境,这里对arm architecture的几个组成单元进行必要的配置。

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。 Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。

反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体 系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导 *** 作系统启动,并且大部分都可以支持串口和以太网接口。

一般Bootloader和Linux的启动过程的讲解都是嵌入式书籍的一个章节而已,从我自身的学习经验来给出一些建议:

可以看 Embedded Linux Primer (豆瓣) 第二版,网上有英文版(建议)和中文版的pdf,里面的Chapter5和7分别简述了Linux的初始化启动过程和Bootloader基础。还有后面的Busybox章节也不错。另外构建嵌入式LINUX系统 (豆瓣)也可以作为参考。

2 找一下韦东山的第一期和毕业班,里面也讲到了Bootloader和Linux如何初始化以及如何执行第一个用户程序。尽管其实只讲了一部分,但是对于Linux的启动流程的学习还是很有帮组的。跟着写一个Bootloader绝对是学习Bootloader的一种好方式。如同在stackoverflow里面对于如何学习Bootloader给出的答案一样“The best method to learn it, is to recreate one”。如果自己写一个有困难,那么就先学习移植吧。

3 其实Bootloader就是裸机程序,因此如果你对裸机程序熟悉,那么Bootloader甚至说不上需要学习,给出一本书籍用于参考:ARM处理器裸机开发实战:机制而非策略(附CD-ROM光盘1张)/王小强

其他国人写的书籍中的Bootloader大都是泛泛而谈,对于有经验的人用不着,对于初学者更多的是雾里看花,例如:

杨铸与人合著的两本书:深入浅出:嵌入式底层开发/杨铸和构建嵌入式Linux核心系统实战(附光盘1张)/杨铸

韦东山写的那本书:嵌入式Linux应用开发完全手册(附CD光盘1张)/韦东山

以及各类“精通”与“实战”之流。

但,不管如何,开卷有益,同时也因人而异。还是需要题主自己考究。

最后:

如果你学得很痛苦,那么很可能没有走在正确的路上。我觉得学习过程应该是不断+1的过程,看,看得懂的代码和书。否则继续学习基础,或者直接跳过这些东西直接到Linux上面学习驱动开发或者应用开发,其实这些知识点没有那么多牵连,很多人给出的嵌入式学习步骤绝对是带人入坑。

在启动前要做: 1、USBHIDBootloaderv1200应用只能与合适的设备USBHIDBootloader固件版本v1200使用,它是免费的,可以从mikroElektronika的网站上下载。 2、Bootloader使用USBHID级连接,不需要额外的 *** 作系统驱动器。步骤: 1、建立USB链

以上就是关于bootloader初识全部的内容,包括:bootloader初识、怎样从零开始写bootloader 第一部分、如何选择运行BootLoader程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10630293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存