实验一 Bootloader的设计与移植实验讲义
- 格式:pdf
- 大小:508.20 KB
- 文档页数:12
实验内容二—BootLoader移植一、实验目的BootLoader是嵌入式系统上电之后,操作系统内核运行之前执行的一段程序,主要负责载入内核。
利用上次实验制作的交叉编译工具为目标机编译一个U-boot,然后烧写到实验箱中,为后面的系统移植和嵌入式程序的编译做基础(P58)。
二、实验内容在Linux下利用交叉编译工具配置编译u-boot并烧写到arm开发箱中。
三、实验步骤(1)实验准备从网上/projects/u-boot/下载U-boot的最新版本,解压后可以看到它的全部源代码,目录解释见书本P58表5-2,我们需要针对自己使用的CPU和开发板进行(2)修改顶层MakefileU-Boot是通过gcc和Makefile组织编译的。
顶层目录下的Makefile可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的代码连接成u-boot映像。
在顶层Makefile中先要定义交叉编译器,这里就使用我们上一次实验中构建的交叉编然后在顶层Makefile中,你只要找到smdk2410_config这一行:然后参考上面一行增加arm2410_config ,如下:解释一下这行配置中各项的意思:arm: CPU 的架构(ARCH)arm920t: CPU 的类型(CPU),其对应于cpu/arm920t 子目录。
arm2410: 开发板的类型,对应于board/arm2410 目录。
NULL: 开发者/或经销商(vender)。
s3c24x0: 片上系统(SOC)。
(3)为arm2410平台新建一个目录我们参考smdk2410开发板的配置,在smdk2410平台的基础上进行移植的。
不过为了不破换U-Boot本身的代码,我们在board目录下将smdk2410文件夹复制为arm2410,并将该目录下的smdk2410.c重命名为arm2410.c(4)在board/arm2410目录下增加nand.c文件,文件内容如下:(5)修改board/arm2410目录下的Makefile修改:为下面一行:这是因为前面将smdk2410.c改成arm2410.c,而且新增加了个nand.c文件,所以要在Makefile中告诉编译器将arm2410.c及nand.c文件分别编译链接成nand.o及arm2410.o这两个目标文件。
实验一交叉编译环境的建立和bootloader的使用实验目的1.建立嵌入式软件的交叉编译环境。
2.下载和使用bootloader。
实验内容1.安装串口支持文件。
2.安装编译器。
3.安装bootloader。
4.下载内核并运行。
嵌入式LINUX开发环境有几个方案:1.基于PC机WINDOWS操作系统下的CYGWIN;2.在WINDOWS下安装虚拟机后,再在虚拟机中安装LINXUX操作系统;3.直接安装LINUX操作系统。
基于WINDOWS的环境要么有兼容性问题,要么速度有影响,所以我推荐大家使用纯LINUX操作系统开发环境。
我们实际的开发环境为REDHAT9,它已经支持中文,并且包含了绝大部分的开发工具,不用担心装了LINUX就不能使用WINDOWS的问题。
一般的情况都是用户已经有了WINDOWS操作系统,再安装LINUX,LINUX会自动安装一个叫作GRUB的启动引导软件,可以选择引导多个操作系统。
绝大多数Linux 软件开发都是以native 方式进行的,即本机(HOST)开发、调试,本机运行的方式。
这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。
通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。
交叉编译调试环境建立在宿主机(即一台PC 机)上,对应的开发板叫做目标板。
运行Linux 的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。
调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器提供的支持做出选择。
宿主机和目标板的处理器一般不相同,宿主机为Intel 处理器,而目标板如UP-NetARM2410-S 开发板为三星S3c2410.GNU 编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。
U-boot引导加载程序(Bootloader)源代码分析与移植目录第一章绪论 (3)1.1 U-boot 简介 (3)1.2 U-boot 源码树 (4)1.3 U-boot 支持的主要功能 (5)第二章U-boot源代码详细分析 (6)2.1 U-boot的启动流程 (6)2.1.1 第一阶段(Stage 1) (6)2.1.2 第二阶段(Stage 2) (9)2.2 U-boot 的初始化 (13)2.2.1 私有数据global_data (13)2.2.2 初始化序列init_sequence (14)2.2.3 NAND Flash 初始化 (20)2.2.4 DataFlash 初始化 (21)2.2.5 环境变量重定位 (23)2.2.6 初始化设备 (25)2.2.7 控制台初始化 (27)2.2.8 单板后期初始化 (30)2.3命令处理 (33)2.3.1 命令数据结构 (33)2.3.2 命令查找 (34)2.3.3 主循环 (35)2.4 Linux 的引导 (42)2.4.1 映象格式 (42)2.4.2 linux 引导 (42)2.4.3 linux 的内核参数传递 (52)第三章U-boot 在S3C2410 上的移植分析 (58)3. 1 对ARM-920T内核的支持 (58)3. 2 配置自己的开发板 (58)3. 3 实现网卡的驱动程序 (60)3.4 从NAND Flash启动 (61)3.4.1 修改cpu/arm920t/start.s 添加NAND Flash启动跳转代码 (61)3.4.2 添加从NAND Flash启动代码 (63)3.4.3 添加上述代码中引用的宏定义 (65)3. 5 修改Makefile 文件 (65)3.6 搭建编译环境 (66)3. 7 生成目标文件并进行测试 (67)3. 8 测试 (69)第一章绪论1.1 U-boot 简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
实验报告--------- U-Boot的分析与移植实验目的●了解嵌入式开发的基本思想和过程●深入理解BootLoader,通过分析一款具体的BootLoader -- U-boot ,掌握BootLoader的作用,及其运行过程。
实验内容●本次实验具体分析uboot中基于arm9 系列为内核的开发板的bootloader的相关代码;●分析在uboot中,bootloader怎么与linux内核进行交互;●搭建交叉编译环境,将bootloader编译成在开发平台上能用的二进制文件,并将其烧入flash中,为做下一步实验进行准备。
实验设备及工具●硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、用于ARM920T 的JTAG 仿真器、串口线。
●软件:PC 机操作系统Win2000 或WinXP、Linux 9 ,交叉编译环境,仿真器驱动程序、超级终端通讯程序,第一章实验板的基本了解1.1嵌入式开发平台本次实验的硬件平台是基于ARM体系结构,由北京博创兴业科技有限公司开发的UP-NetARM2410-S实验仪器。
UP-NetARM2410-S的CPU为ARM920T 内核的三星S3c2410芯片,有MMU可以运行标准的ARM-LINUX内核。
该硬件平台的基本架构如图1.1所示;在图1.1中,2410核心板的结构为:●CPU: ARM920T结构芯片:工作频率202MHz ,SAMSUNG公司的S3c2410X ●FLASH:64M NAND型,SAMSUNG的K9F1208●RAM:64MB SDRAM,HY57V561620AT-H●200管脚精密插座S3c2410X芯片集成了大量的功能单元,包括:1).内部1.8V,存储器3.3V,外部IO3.3V,16KB数据CACHE,16KB指令CACHE,MMU;2).内置外部存储器控制器(SDRAM 控制和芯片选择逻辑);3). LCD控制器(最高4K色 STN和256K彩色TFT),一个LCD专用DMA;4). 4路带外部请求线的DMA;5).三个通用异步串行端口(IrDA1.0, 16-Byte Tx FIFO, and 16-Byte Rx FIFO),2通道SPI;6).一个多主IIC总线,一个IIS总线控制器;7). SD主接口版本1.0和多媒体卡协议版本2.11兼容;8). 2个USB HOST ,一个USB DEVICE(VER1.1);9). 4个PWM定时器和一个内部定时器;10).看门狗定时器;11).117个通用IO;12).24个外部中断;13).电源控制模式:标准、慢速、休眠、掉电;14).8通道10位ADC和触摸屏接口;15).带日历功能的实时时钟;16).芯片内置PLL;图1.1 UP-NetARM2410-S的架构示意图17).设计用于手持设备和通用嵌入式系统;18).16/32位RISC体系结构,使用ARM920T CPU核的强大指令集;19).ARM带MMU的先进的体系结构支持WINCE、EPOC32、LINUX;20).指令缓存(cache)、数据缓存、写缓冲和物理地址TAG RAM,减小了对主存储器带宽和性能的影响;21).ARM920T CPU 核支持 ARM 调试的体系结构;22).内部先进的位控制器总线(AMBA2.0, AHB/APB) .图1.2 S3c2410X芯片1.2嵌入式Linux 开发流程嵌入式Linux 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:1.建立开发环境操作系统一般使用REDHAT-LINUX,版本7 到9 都可以,选择定制安装或全部安装,通过网络下载相应的GCC 交叉编译器进行安装(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。
第3章Bootloader移植Bootloader是在嵌入式系统运行之前运行的一段程序。
运行Bootloader程序可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境调整到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
本章主要介绍两种常见的Bootloader及其移植过程。
3.1 Bootloader介绍体系结构不同的CPU都有不同的Bootloader,有些Bootloader支持多种不同类型体系结构的处理器,如U-boot。
通常,Bootloader不但依赖于CPU的体系结构,而且依赖于特定的嵌入式板设备的配置,即对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要运行在一块开发板上的Bootloader程序能够运行在另一块开发板上,通常需要修改Bootloader的源程序以适应不同的开发板。
3.1.1 Bootloader与嵌入式Linux系统的关系从软件的角度可将嵌入式Linux系统划分成4个层次,4个层次由低层到高层分别如下所述。
❑引导加载程序:包括固化在固件中(firmware)的boot代码(可选)和Bootloader 两大部分。
❑内核:给具体类型开发板定制的内核及控制内核引导系统的参数。
❑文件系统:包括根文件系统和建立于FLASH内存设备上的文件系统。
❑用户应用程序:用户的应用程序,包括GUI、Web服务器、数据库、网络协议栈等。
3.1.2 Bootloader基本概念Bootloader是在操作系统内核运行前执行的一段小程序,类似在启动Windows系统前运行的BIOS程序。
通过这段小程序,完成了对必要硬件设备的初始化,创建内核需要的信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态,最终调用操作系统内核,起到引导和加载内核的作用。
第3章 Bootloader 移植·65·1.Bootloader 的安装媒介系统每次加电或复位后,CPU 都会固定从预先设定的地址上取指令。
嵌入式系统设计实验告BootLoader移
植实验
1
合肥学院
嵌入式系统设计实验报告
(20 13 - 20 14第 2学期)
专业:
实验项目: BootLoader 移植实验
实验时间:年 5 月 19 日
实验成员:
__________________________________ __________________________________指导老师:
电子信息与电气工程系
4月制
实验三 BootLoader移植实验
一、实验目的
1、熟悉Bootloader工作原理。
2、了解U-Boot的代码结构。
3、掌握U-Boot移植过程。
二、实验内容
本实验熟悉Bootloader工作原理,了解U-Boot源码结构,基于S3C2440处理器,完成U-Boot移植,并在目标开发板上测试经过。
三、实验设备
硬件:1、pc机
2、FriendlyARM开发套件即MIRCO2440核心板
软件:1、虚拟机(VMware)
2、U-Boot源码(u-boot- .03.tar)
四、实验过程
1、Micro2440 配置
在mini2440/micro2440 上的移植准备工作,我们依然将开发板文件建立在 board/samsung 下,
2、配置时出现错误,字体要修改,复制粘贴的时候出现的错误,
有的地方有中文,去掉就行了。
3、编译完成失败,只有上网查找错误,最后解决了错误。
一、实验目的熟悉树莓派的bootloader二、实验内容David Welch的GitHub的bootloader05给出了一个非常简单的RPi bootloader,他的代码链接在内存的0x00020000位置,一直在监听串口是否有XMODEM协议的文件下载,如果有就开始接收数据,并复制到0x00008000位置,传输完成后跳转到 0x00008000去执行。
TA写了一个Python脚本,按照下面的命令调用脚本可以下载并执行用户程序python xmodem-loader.py -p com3 -baud 115200 output.bin你的任务是修改bootloader和python脚本实现如下功能:1.调用命令 python xmodem-loader.py -p com3 -baud 115200 启动脚本并且与板卡建立串口连接,之后可以发送下面的命令。
2.load *.bin 下载程序*.bin3.go 执行已下载的程序4.peek addr 以一个字为单位读取内存中addr位置的数据(addr是4字节对齐,十六进行的形式,长度为8,例如 0x00008000),并以十六进制的形式输出5.poke addr data 以一个字为单位修改内存中addr位置的数据为data(addr是4字节对齐,十六进行的形式,长度为8, data也是十六进行的形式,长度为8)6.verify *.bin 验证已下载的程序和*.bin是否完全相同。
三、主要仪器设备1. 树莓派板2. 移动电源3. PC四、操作方法和实验步骤1. 下载bootloader05代码具体的下载地址为:https:///dwelch67/raspberrypi或直接在linux命令行输入git clone https:///dwelch67/raspberrypi.git如下图分别为win7和ubuntu下截图:2、 Windows下运行py脚本首先win7下需要安装有python2.7.3,并配置好path。