课嵌入式系统的BootLoader技术.ppt

上传人:sccc 文档编号:5674444 上传时间:2023-08-08 格式:PPT 页数:42 大小:950.51KB
返回 下载 相关 举报
课嵌入式系统的BootLoader技术.ppt_第1页
第1页 / 共42页
课嵌入式系统的BootLoader技术.ppt_第2页
第2页 / 共42页
课嵌入式系统的BootLoader技术.ppt_第3页
第3页 / 共42页
课嵌入式系统的BootLoader技术.ppt_第4页
第4页 / 共42页
课嵌入式系统的BootLoader技术.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《课嵌入式系统的BootLoader技术.ppt》由会员分享,可在线阅读,更多相关《课嵌入式系统的BootLoader技术.ppt(42页珍藏版)》请在三一办公上搜索。

1、1,嵌入式系统An Introduction to Embedded System第四课 嵌入式系统的BootLoader技术 教师:蔡铭 助教:王广辉 浙江大学计算机学院人工智能研究所航天科技浙江大学基础软件研发中心,2,课程大纲,Bootloader程序的基本概念 Bootloader典型框架结构 S3C2410 Bootloader代码分析 嵌入式软件开发环境建立实验,3,从一个最小的“操作系统”说起,摘自自己动手写操作系统,4,Boot Loader程序基本概念,Boot Loader是在系统启动时激活,在操作系统内核运行之前运行的一段程序 初始化硬件设备和建立内存空间的映射图 将系统

2、的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,5,PC机的引导装载简介(1/2),Boot Loader,启动扇区,6,PC机是通过BIOS来启动机器:1、当PC机加电之后,BIOS启动相应的程序完成机器自检POST(Power-On Self Test);2、寻找可以引导的驱动器,即启动盘IPL(Initial Program Load Device);3、若找到合法的引导扇区(以0 xAA55结束),那么就会将引导扇区的内容(共512字节)装载到内存0 x0000:7C00处。4、BIOS把控制权限交给系统引导扇区的程序。,PC机的引导装载简介(2/2),7,

3、BIOS Boot Specification用于描述BIOS识别各类IPL(Initial Program Load)设备,并进行引导设备优先级排序、启动加载等功能。BIOS启动时采用实模式(real mode)寻址,寻址空间为16位。BIOS启动程序采用汇编语言编写,这使得编写BIOS程序变得比较复杂。,BIOS Boot Specification,8,BIOS内存分布图BIOS Entry0 xFFFF0hBIOS Boot Block0 xFe000h 0 xFFFFFh(Extended)BIOS Data AreaBoot Sector0 x7c00hInterrupt Vect

4、or0 x0000h 0 x3ffh,BIOS内存分布图,9,BIOS映像文件BIOS-bochs-latest源代码C程序:rombios.c、rombios32.c汇编代码:rombios32start.SMakefileBIOS映像生成工具biossums.c,BIOS构成分析,10,BIOS-bochs-latest,BIOS映像文件分析,上电起始运行代码,11,16位实模式程序Power-up Entry Point(系统上电入口):0 xfff0POST Entry Point(系统检测入口):0 xe05bINT 19H(系统引导入口):0 xe6f2-int19_relocat

5、ed-int19_functionINT 18H:int18_handler,BIOS模拟rombios.c分析,12,嵌入式系统的Boot Loader程序(1/2),在嵌入式系统中没有BIOS那样的固件程序,因此,整个系统的加载启动任务完全由BootLoader来完成。基于ARM内核的嵌入式系统,加电或复位的地址为0 x00000000,Boot Loader程序的入口就安排在该地址上。,13,Boot Loader的实现依赖于硬件环境 CPU体系结构:ARM、PPC、x86、MIPS板级设备:时钟、FLASH、通讯端口Boot Loader的入口地址Boot Loader与开发机的通讯机

6、制 串口网络 专用Boot Loader通用Boot Loader:U-boot、Redboot,嵌入式系统的Boot Loader程序(2/2),14,由Boot Loader启动操作系统的方式,Flash启动方式硬盘启动方式在硬盘主引导区放置bootloader从文件系统中引导操作系统网络启动方式Bootloader放置在EPROM或Flash中通过以太网远程下载操作系统内核或文件系统开发板不需配置大的存储介质,Bootloader参数区操作系统内核文件系统,15,简单Bootloader只具有系统引导功能具有监控功能(Monitor)的Bootloader调试支持内存读写Flash烧写网

7、络下载环境变量配置,Boot Loader的功能种类,16,开放源码的Boot Loader程序,17,课程大纲,Bootloader程序的基本概念 Bootloader典型框架结构 S3C2410 Bootloader代码分析 嵌入式软件开发环境建立实验,18,Boot Loader的典型框架结构,Boot Loader的启动过程通常是多阶段的提供复杂的功能:突破引导扇区512字节限制提高代码移植性:高阶段代码采用高级语言提高运行速度:高阶段代码在内存中执行大多数Boot Loader可分为阶段1和阶段2两大部分 阶段1:实现依赖于CPU体系结构的代码 阶段2:实现一些复杂的功能,19,Bo

8、ot Loader阶段1介绍(1/4),Boot Loader的阶段1通常包括以下步骤:1)硬件设备初始化屏蔽所有的中断 设置CPU的速度和时钟频率 RAM初始化 初始化LED 关闭CPU内部指令数据Cache,20,2)为加载阶段2准备RAM空间 除了阶段2可执行映象的大小外,还必须把堆栈空间也考虑进来 必须确保所安排的地址范围的确是可读写的RAM空间内存区域有效性检测方法保存指定内存区域写入预定数据读入数据并比较恢复内存数据,Boot Loader阶段1介绍(2/4),21,3)拷贝阶段2代码到RAM中 4)设置堆栈指针sp 5)跳转到阶段2的C语言入口点Boot Loader 的阶段1执

9、行完成后的RAM 空间布局,如下图:,Boot Loader阶段1介绍(3/4),22,Boot Loader阶段1介绍(4/4),23,Boot Loader阶段2介绍(1/8),1)初始化本阶段要使用到的硬件设备初始化至少一个串口,以便和终端用户进行I/O输出信息 初始化计时器等,24,2)检测系统的内存映射 内存映射的描述 可以用如下数据结构来描述RAM地址空间中的一段连续的地址范围:内存映射的检测,Boot Loader阶段2介绍(2/8),25,连续内存区域探测X86系统内存探测算法举例for(p=(char*)0 x100000;(int)p 0 x40000000;p+=delt

10、a)for(ix=0;ix N_TIMES;ix+)/*保存内存原有信息*/tempix=*(int*)p+ix);*(int*)p+ix)=TEST_PATTERN;/*TEST_PATTERN0 x12345678*/cacheFlush(DATA_CACHE,p,4*sizeof(int);if(*(int*)p!=TEST_PATTERN)/*测试内存单元有效性*/p-=delta;for(ix=0;ix N_TIMES;ix+)/*恢复内存原有信息*/*(int*)p+ix)=tempix;,Boot Loader阶段2介绍(3/8),26,非连续内存区域探测具有空洞内存的探测fro

11、m 内存区域低端 to 内存区域最高端,以页为单位进行内存探测 对当前内存进行检测;if(当前内存页状态 与 前一内存页状态一致)合并内存状态情况;else 记录当前内存区域状态。,Boot Loader阶段2介绍(4/8),27,3)加载内核映像和根文件系统映像 规划内存占用的布局 内核映像所占用的内存范围MEM_START+0X8000 根文件系统所占用的内存范围 MEM_START+0X00100000从Flash上拷贝While循环,Boot Loader阶段2介绍(5/8),28,4)设置内核的启动参数 标记列表(tagged list)的形式来传递启动参数,启动参数标记列表以标记A

12、TAG_CORE开始,以标记ATAG_NONE结束 嵌入式Linux系统中,通常需要由Boot Loader设置。常见启动参数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD,以ATAG_NONE结束。,Boot Loader阶段2介绍(6/8),29,例:设置ATAG_MEM的代码如下:,指针params是一个struct tag类型的指针。宏tag_next()将以指向当前标记的指针为参数,计算出当前标记的下一个标记的起始地址。,Boot Loader阶段2介绍(7/8),30,5)调用内核 CPU寄存器的设置:R00;R

13、1机器类型ID;关于机器类型号,可以参见:linux/arch/arm/tools/mach-types。R2启动参数标记列表在RAM中起始基地址;CPU 模式:必须禁止中断(IRQs和FIQs);CPU必须SVC模式;Cache和MMU的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。,Boot Loader阶段2介绍(8/8),31,课程大纲,Bootloader程序的基本概念 Bootloader典型框架结构 S3C2410 Bootloader代码分析 嵌入式软件开发环境建立实验,32,S3C2410 内存地址映像,Flash内存映像,SDRAM内存映像

14、,33,S3C2410 中断向量设置,34,S3C2410 Bootloadervivi,vivi是韩国Mizi公司开发的一种bootloader,适用于ARM9处理器,支持S3C2410处理器。vivi有两种工作模式:启动加载模式下载模式:提供命令行接口,35,vivi命令举例,36,vivi源代码分析目录结构,代码目录结构分析,37,vivi源代码分析阶段1,Bootloader阶段1代码分析禁止看门狗、中断初始化时钟、内存设置LED、GPIO拷贝vivi至内存初始化nand flash设置堆栈寄存器、入口参数调用C函数将vivi由nand flash拷贝至内存跳转至内存执行设置堆栈寄存器

15、、入口参数调用C函数main,38,vivi源代码分析阶段2,Bootloader阶段2代码分析打印系统启动标识初始化CACHE、MMU、Heap初始化MTD设备初始化系统参数命令装载启动shell 或 启动操作系统,39,课程大纲,Bootloader程序的基本概念 Bootloader典型框架结构 S3C2410 Bootloader代码分析 嵌入式软件开发环境建立实验,40,实验要求,采用手写方式完成实验报告实验报告格式实验机位固定每次实验记录评分,41,实验二内容清单,编译vivi源代码,通过串口,将vivi下载至目标机固化编译操作系统内核、文件系统(busybox),并下载至目标机固化编写hello.c,进行交叉编译、交叉链接采用串口,将代码下载至目标机最终,在目标板上打印出hello world!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号