嵌入式实验报告4编译Bootloader实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四编译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 –zxvf u-boot-s5pv210.tar.gz
Cd /home/cvtech/u-uoot-s5pv210:
命令:cd u-boot-s5pv210
3、执行make clean命令,清除之前编译生成的文件。
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)安装cross compiler
2)解压缩u-boot-1.1.6.tar.bz2
3)make smdk2410_config
system output: Configuring for smdk2410 board...
4)modify the makefile因为要改变编译器
modify :
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
to
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-elf-
endif
5)make 生成u-boot.bin
五实验心得
通过本次实验,掌握了编译Bootloader 的过程,了解了Bootloader的作用及在嵌入式系统中的应用,学习并实现了制作一个Bootloader。因为对实验整体的操作不是很熟悉,所以在试验中遇到了很多问题,也体会到了做实验中应该保持一个好的心态,遇到问题后应该去寻找出问题的根源,一步步排除,才能更好的解决问题,也认识到了做好预习的重要性。