实验四编译Bootloader实验的实验报告一实验目的1、掌握编译Bootloader的过程。2、了解Bootloader的作用及在嵌入式系统中的应用;3、制作一个Bootloader。二实验环境预装Linux的pc机一台,CVT-A8嵌入式实验箱一台(已构建嵌入式Linux系统),以太网线一根,交叉编译工具链,u-boot-s5pv210.tar.gz源码包。三实验步骤1、启动S5PV210的Linux宿主机,在主目录下,能找到uoot的源码包文件夹/home/cvtech/u-uoot-s5pv210,有则直接用cd命令切换到源码目录下。如果没有,可以拷贝u-boot-s5pv210.tar.gz源码包到主目录后,通过解压命令解压源码包;解压命令:tar–zxvfu-boot-s5pv210.tar.gzCd/home/cvtech/u-uoot-s5pv210:2、用cd命令切换到uboot源码目录下命令:cdu-boot-s5pv2103、执行makeclean命令,清除之前编译生成的文件。4、执行make命令编译出uboot.bin文件。命令:make如果编译成功,则在uboot源码目录下生成uboot.bin文件。生成uboot.bin文件:5、烧写uboot把uboot.bin文件,复制到SD卡中,切换实验板为sd卡启动,并通过指导书上的操作步骤,通过sdfuse命令把uboot.bin文件烧写到flash中。再切换实验板为nand启动,之后操作uboot的命令。SD卡启动:6、使用和验证Bootloader命令help--打印uboot提供的所有可用命令,以及命令的简介help某个命令名--打印出此命令的具体使用方法根据某个命令的具体使用方法,使用这个命令四实验思考1.bootloader的作用?bootloader就是在操作系统内核运行之前运行的一小段程序。通过这个小程序我们主要完成以下内容:1)初始化硬件设备。2)建立内存空间的映射。3)创建内核需要的一些信息,并将这些信息通过相关机制,传递个给内核。4)将系统的软硬件环境设置成一个合适的状态。5)为最终调用操作系统内核准备好正确环境,真正起到引导和加载内核的作用。2、理解bootloader的启动过程?在嵌入式系统,整个系统的加载启动完全由bootloader来完成。Bootloader是CPU上电后运行的第一段程序。不同的CPU体系结构有不同的bootloader,有些bootloader支持多种体系结构的CPU,比如U-Boot就同时支持ARM和MIPS体系结构。除了依赖于CPU的体系结构外,Bootloader实际上也依赖于具体的嵌入式版级设备的配置。也就是两块不同的嵌入式版,即使他们是基于同一种CPU而建,但是要想让运行在一块板子上的bootloader也运行到另一块板子上,通常需要修改Bootloader源程序。当一个嵌入式开发板上电时,即使执行最简单的程序,都要初始化很多硬件。每种体系结构、处理器都有一组预定义的动作和配置,他们包含从单板的存储设备获取初始化代码的功能。最初的初始化代码是Bootloader的一部分,它负责启动处理器和相关硬件设备。上电复位时,大多数处理器都有一个获取第一条指令的默认初始地址。硬件设计人员利用该信息来进行存储空间的布局。这样以来,上电的时候,可从一个通用的已知地址获取代码,然后建立软件的控制。Bootloader提供初始化代码,并初始化单板,这样就可以执行其他程序,最初的初始化程序都是给体系结构下汇编语言写成的。在初始化相应的硬件信息之后,Bootloader会引导完整的操作系统,他会定位加载操作系统,并将控制权交给操作系统。当操作系统获取控制权之后,嵌入式下的Bootloader将不复存在。3、如何修改bootloader?1)安装crosscompiler2)解压缩u-boot-1.1.6.tar.bz23)makesmdk2410_configsystemoutput:Configuringforsmdk2410board...4)modifythemakefile因为要改变编译器modify:ifeq($(ARCH),arm)CROSS_COMPILE=arm-linux-endiftoifeq($(ARCH),arm)CROSS_COMPILE=arm-elf-endif5)make生成u-boot.bin五实验心得通过本次实验,掌握了编译Bootloader的过程,了解了Bootloader的作用及在嵌入式系统中的应用,学习并实现了制作一个Bootloader。因为对实验整体的操作不是很熟悉,所以在试验中遇到了很多问题,也体会到了做实验中应该保持一个好的心态,遇到问题后应该去寻找出问题的根源,一步步排除,才能更好的解决问题,也认识到了做好预习的重要性。