bootloader之U-boot

bootloader简介:

bootloader是引导os启动的一段小程序,它被放在地址为0x00000000的flash处,当硬件加电后启动时就会去执行这段程序,完成硬件的初始化工作,并建立内存空间的映射图,从而为os启动做准备工作。

bootloader流程:

分单阶段和多阶段:

通常是多阶段:

多阶段:

stage1:完成初始化硬件,为stage2准备内存空间,并把stage2需要运行的代码复制到内存中,接着设置堆栈,然后就跳转到stage2.

stage2:初始化硬件,指的是外围硬件,eg:网卡。。。,接着将内核映像和根文件系统映像从flash中拷贝到内存ram中,最后就是调用内核了。

bootloader的工作模式:

1.启动模式:自动启动系统,无需任务操作。

2.下载模式:目标机上的bootloader将通过串口或网络等通信手段从主机下载文件,然后控制启动流程。

 

bootloader的内存布局:

 bootloader之U-boot_第1张图片

 

u-boot的下载地址为:

ftp://ftp.denx.de/pub/u-boot/
 
 
下载完后,解压之:
进入解压后的u-boot目录,make xxxxx
这个xxxx是我们根据自己的开发板情况进行选择的。我们可以查看u-boot目录下Makefile文件找到适合我们开发板的xxxx命令:
 

smdk6400_config :       unconfig
        @$(MKCONFIG) $(@:_config=) arm s3c64xx smdk6400 samsung s3c6400

smdk6410_config :       unconfig
        @$(MKCONFIG) $(@:_config=) arm s3c64xx smdk6410 samsung s3c6410

mini6410_nand_config-ram128 :  unconfig
        @$(MKCONFIG) mini6410 arm s3c64xx mini6410 samsung s3c6410 NAND ram128

mini6410_sd_config-ram128 :    unconfig
        @$(MKCONFIG) mini6410 arm s3c64xx mini6410 samsung s3c6410 SD ram128

mini6410_nand_config-ram256 :  unconfig
        @$(MKCONFIG) mini6410 arm s3c64xx mini6410 samsung s3c6410 NAND ram256

对应与我们开发板的xxxx就是mini6410_nand_config-ram256
 
所以第一步:make mini6410_nand_config-ram256
这时我们会看到这个话:Configuring for mini6410 board which boot from NAND ram256...
然后我们就执行 make命令就行了,最后会生成u-boot.bin文件,把这个烧入开发板就行了

你可能感兴趣的:(c,工作,OS,Flash,化工,makefile)