从零开始的UBOOT的学习1--UBOOT是用来干嘛的?

从零开始的UBOOT的学习1--UBOOT是用来干嘛的?

参考朱有鹏UBOOT全集

UBOOT本身就是为了启动内核,其实你自己写一个BootLoader是比较简单的,没有UBOOT的那么多的工具,UBOOT提供了两个比较强的工具:环境变量和命令,使得UBOOT的启动内核游刃有余。

1、UBOOT的常用命令

(1)tftp下载指令tftp

UBOOT本身主要的目标是为了启动内核,为了完成启动内核必须要能够部署内核。UBOOT为了部署内核就需要将内核镜像从主机中下载下来然后烧录到本地的flash中。

(2)UBOOT如何从主机下载镜像到开发板上?
有很多方式:主流的方式:fastboot或者网络下载tftp

fastboot的方式是通过USB线进行数据传输的。
tftp的方式是通过有线网络的,典型的方式就是通过网络,fastboot是近些年才发展的。

首先在开发板的UBOOT下先PING通Ubuntu,然后再尝试下载:
tftp 0x3000 0000 zImage-qt

如果使用的是WINDOW下的tftp服务器,那么UBOOT的serverIP就要设置为WINDOW下tftp服务器的IP地址一样。
这个IP地址和主机的WINDOW必须在一个网段。

2、内存操作指令mm

(1)DDR中是没有进行分区的,只听说过对硬盘进行分区。
没有听说过内存进行分区,但是内存使用的要注意,千万不能越界踩到别人了。因为UBOOT是一个裸机程序,不能像操作系统会由系统整体管理所有内存。

(2)为什么我们一开始需要把UBOOT放在23E00000地址中去。这个地址是比较靠低地址的,虚拟地址映射:

(3)md:就是显示内存中的内容
(4)mw:memory write,将内存写到内存中。
(5)mm:memory modify:修改内存中的某一块,说白了还是写内存。

如果是逐个字节的,逐个的增加地址,如果我们要修改的内存存在多个字节,如果需要批量的逐个单元的修改内存,用mm

3、启动内核指令bootm go

(1)UBOOT的终极目标就是为了启动内核,启动内核在UBOOT中表现为一个指令。UBOOT命令中调用就会启动内核。
(2)差别:bootm启动内核同时给内核传参,而go命令内核不传参。

还有一种方法是在开发板中启动内核,然后在UBOOT中去下载裸机程序,其实这些命令就是通过go指令完成的,里面屏蔽了很多细节,不值得深究。

你可能感兴趣的:(嵌入式:UBOOT,UBOOT从零开始的学习)