基于S3C44B0 BootLoader设计.docx
《基于S3C44B0 BootLoader设计.docx》由会员分享,可在线阅读,更多相关《基于S3C44B0 BootLoader设计.docx(29页珍藏版)》请在冰豆网上搜索。
![基于S3C44B0 BootLoader设计.docx](https://file1.bdocx.com/fileroot1/2022-11/25/351aa662-78ae-43ed-b401-d783038c5ef5/351aa662-78ae-43ed-b401-d783038c5ef51.gif)
基于S3C44B0BootLoader设计
毕业设计说明书
题目:
基于S3C44B0BootLoader设计
系部:
计算机科学系
指导教师:
XXX
专业:
XXXXX
班级:
XXXX
姓名:
XX
学号:
XXXXXX
前 言
21世纪是嵌入式计算系统时代,人们日常生活和工作中所接触的仪器与设备中,都将嵌入具有强大计算能力的微处理器。
据统计,目前每年只有10%~20%的微处理器芯片用于台式计算机或笔记本电脑,80%左右的微处理器芯片是为嵌入式计算系统设计和制造的。
嵌入式计算系统已广泛地应用到工业控制系统、信息系统、通信设备、医疗仪器、军事设备等众多领域中。
尤其是最近几年,嵌入式计算系统不断进入到新的应用领域,如PDA、手持设备、智能电话等。
嵌入式系统已经广泛地应用到当今各个领域,与我们的生活息息相关,小到掌上的数字产品,大到汽车、航天飞机。
提到嵌入式系统我们很快会联想到单片机,不错,MCU是最基础和常用的嵌入式系统,但是目前像FPGA、ARM、DSP、MIPS等其他嵌入式系统应用越来越广泛。
嵌入式系统与模拟电路或其他功能电路组成的SoC(SystemonChip,片上系统)或SiP(SysteminPackage,系统级封装)在手机、机顶盒等功能复杂的产品上的应用也越来越多。
嵌入式系统的应用日益广泛,可以说无所不在,其快速发展也极大的丰富、延伸了嵌入式系统的概念。
32位ARM处理器已被广泛应用于消费电子产品、无线通信和网络通信等领域。
嵌入式系统的启动引导技术是嵌入式开发的一个难点。
BootLoader(启动程序)是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行。
写好BootLoader是设计好嵌入式程序的关键,且正在其上开发其软件的系统依赖于它所执行的操作。
BootLoder的成功与否决定了应用程序的运行环境是否能正确构建,即系统启动成功是应用正确运行的前提。
Bootloader本身的功能就是引导与加载内核镜像。
如何实现bootloader的基本功能,如何针对基于ARM7的微处理器来实现bootloader,就成为本文的一个基本论题。
对于不同的处理器在写Bootloader引导时,会有很多地方不同,所以也没有一个统一的Bootloader引导程序,当然一个Bootloader程序可以支持很多种平台,这样的引导程序叫做UBOOT,前期的引导程序(Bootloader)是一个系统能正常运行的基本,下面我们一起来讨论如何设计一个基于SAMSUNG公司的S3C44B0X平台的Bootloader程序。
目录
第一章相关知识简介
1.1嵌入式系统概述--------------------------------------------------------------3
1.2.1S3C44B0X介绍----------------------------------------------------------------5
1.2.2BootLoader介绍-------------------------------------------------------------6
1.2.3Bootloader的操作模式-----------------------------------------------------6
1.2.4Bootloader的任务---------------------------------------------------------6
第二章开发环境的建立
2.1安装软件下载--------------------------------------------------------------------7
2.2环境搭建--------------------------------------------------------------------------7
2.3环境测试--------------------------------------------------------------------------12
第三章BootLoader的实现
3.1硬件实现------------------------------------------------------------------------13
3.1.1ARM微处理器体系结构-----------------------------------------------------13
3.1.2ARM存储器------------------------------------------------------------------14
3.1.3ARM内部寄存器-------------------------------------------------------------14
3.1.4S3C44B0存储器空间-------------------------------------------------------15
3.1.5S3C44B0硬件上的设置----------------------------------------------------16
3.2软件实现------------------------------------------------------------------------17
3.2.1BootLoader实现方案-------------------------------------------------------17
第四章BootLoader设计
4.1stage1设计------------------------------------------------------------------------19
4.2stage2设计-----------------------------------------------------------------------24
4.3BootLoader的编译和下载----------------------------------------------------26
第五章设计心得--------------------------------------------------------------------27
参考文献---------------------------------------------------------------------------------------28
第一章相关知识简介
1.1嵌入式系统概述
根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。
从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
目前国内一个普遍被认同的定义是:
以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统的核心是嵌入式微处理器。
嵌入式微处理器一般就具备以下4个特点:
1)对实时任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。
2)具有功能很强的存储区保护功能。
这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。
3)可扩展的处理器结构,以能最迅速地开发出满足应用的最高性能的嵌入式微处理器。
4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。
1.2S3C44B0X介绍
S3C44B0X是Samsung公司生产的一款16/32位RISC处理器,为手持设备和一般应用提供了高性价比和高性能的微控制器解决方案,使用ARM7TDMI内核,最高工作频率可达66MHz,拥有71个多功能I/O,并提供了丰富的内置部件,包括8KBCache和内部SRAM,LCD控制器,2通道UART,带PWM功能的5通道定时器,8通道10位ADC等。
S3C44B0X微处理器不具有MMU,不支持虚拟内存管理和内存保护。
S3C44B0XRISCMICROPROCESSORPRODUCTOVERVIEW
INTRODUCTION
SAMSUNG'sS3C44B0X16/32-bitRISCmicroprocessorisdesignedtoprovideacost-effectiveandhighperformancemicro-controllersolutionforhand-helddevicesandgeneralapplications.Toreducetotalsystemcost,S3C44B0Xalsoprovidesthefollowing:
8KBcache,optionalinternalSRAM,LCDcontroller,2-channelUARTwithhandshake,4-channelDMA,Systemmanager(chipselectlogic,FP/EDO/SDRAMcontroller),5-channeltimerswithPWM,I/Oports,RTC,8-channel10-bitADC,IIC-BUSinterface,IIS-BUSinterface,Sync.SIOinterfaceandPLLforclock.
TheS3C44B0XwasdevelopedusingaARM7TDMIcore,0.25umCMOSstandardcells,andamemorycompiler.Itslow-power,simple,elegantandfullystaticdesignisparticularlysuitableforcost-sensitiveandpowersensitiveapplications.AlsoS3C44B0Xadoptsanewbusarchitecture,SAMBAII(SAMSUNGARMCPUembeddedMicrocontrollerBusArchitecture).
AnoutstandingfeatureoftheS3C44B0XisitsCPUcore,a16/32-bitARM7TDMIRISCprocessor(66MHz)designedbyAdvancedRISCMachines,Ltd.ThearchitecturalenhancementsofARM7TDMIincludetheThumbde-compressor,anon-chipICEbreakerdebugsupport,anda32-bithardwaremultiplier.
Byprovidingacompletesetofcommonsystemperipherals,theS3C44B0Xminimizesoverallsystemcostsandeliminatestheneedtoconfigureadditionalcomponents.Theintegratedon-chipfunctionsthataredescribedinthisdocumentareasfollows:
2.5VStaticARM7TDMICPUcorewith8KBcache.(SAMBAIIbusarchitectureupto66MHz)
Externalmemorycontroller.(FP/EDO/SDRAMControl,ChipSelectlogic)
LCDcontroller(upto256colorDSTN)with1-chLCD-dedicatedDMA.
2-chgeneralDMAs/2-chperipheralDMAswithexternalrequestpins
2-chUARTwithhandshake(IrDA1.0,16-byteFIFO)/1-chSIO
1-chmulti-masterIIC-BUScontroller
1-chIIS-BUScontroller
5-chPWMtimers&1-chinternaltimer
WatchDogTimer
71generalpurposeI/Oports/8-chexternalinterruptsource
Powercontrol:
Normal,Slow,Idle,andStopmode
8-ch10-bitADC.
RTCwithcalendarfunction.
On-chipclockgeneratorwithPLL.
hfs3c44b0实物图
1.2.1BootLoader介绍
bootloader就是在操作系统内核运行之前运行的一段代码。
类似于WINDOWS中的BIOS程序。
通过这段代码可以完成硬件设备的初始化,以及内存空间的映射图的功能,从而把系统的软硬件带到一个合适的状态,为最终调用内核做好准备。
Bootloader严重的依赖于硬件实现,特别是在嵌入式中,所以在嵌入式世界中想建立一个通用的Bootloader几乎是不可能实现的。
尽管如此,仍然可以对Bootloader归纳出一些通用的概念来指导用户特定的Bootloader的设计与实现。
1)Bootloader所支持的CPU和嵌入式开发板
每种不同的CPU体系结构有不同的Bootloader。
有些Bootloader也支持不同体系结构的CPU,如U-boot就支持ARM体系结构和MIPS体系结构。
除了依赖CPU的体系结构外,Bootloader实际上也依赖于具体的嵌入式板级设备的配置。
2)Bootloader的安装媒介:
系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。
因此在系统加电后,CPU将首先执行Bootloader程序。
3)Bootloader的启动过程分为单阶段和多阶段两种。
通常多阶段的Bootloader能提供更为复杂的功能,以及更好的可移植性。
1.2.3Bootloader的操作模式
大多数Bootloader都包含两种不同的操作模式:
“启动加载”和下载模式,这种区别仅对于开发人员才有意义。
*启动加载模式:
这种模式也称为“自主”模式,也就是Bootloader从目标机上的某个固态的存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入,这种模式是嵌入式产品发布时的通用模式。
*下载模式:
在这种模式下,目标机上的Bootloader将通过串口连接或网络连接手段从主机(host)下载文件,如下载内核或者跟文件系统映象等,从主机下载的文件通常首先被Bootloader保存到RAM中,然后被Bootloader写到目标机上的FLASH类固态存储设备中。
Bootloader的这种模式是系统在跟新时使用的。
工作于这种模式的Bootloader通常会向他的终端用户提供一个简单的命令行接口。
1.2.4Bootloader的任务
⒈stage1 通常包括以下步骤
⏹硬件设备初始化
⏹为加载 BootLoader的stage2准备RAM空间
⏹拷贝 BootLoader的stage2到RAM空间中
⏹设置好堆栈
⏹跳转到stage2的C入口点
第二章开发环境的建立
2.1安装软件下载
WINDOWS开发平台
1、ADS1.2开发软件:
编写程序,编译程序
2、JTAG调试工具(利用调试代理软件H-JTAG)
3、串口下载工具(超级终端bin文件格式)
4、FLASH烧写工具(H-Flasher)
我们找到hfs3c44b0的使用手册,根据手册下载如下所需软件
ARMDeveloperSuiteV1.2Setup(ADS1.2)
下载地址:
H-JTAGV0.4.4:
下载地址:
超级终端(Windows系统自带)
2.2环境搭建
1)安装ARMDeveloperSuiteV1.2Setup(ADS1.2)
首先解压ads12setup.zip文件(在[\windows下的编译器]下面),然后双击此文件夹下的SETUP.EXE程序开始安装。
安装类型选择FULL
打开License
2.H-JTAGV0.4.4安装
至此完成了,开发环境的搭建。
2.3环境测试
将目标板和PC机连后,在Windows下新建一个超级终端,当然也可以在Linux下用minicom,来和目标板通信,超级终端配置如下:
然后将ADS自带S3C44B0X的一个LedTest装载到ADS内,点快捷键make,编译无误后,点debug,在AXD内选择目标设备,然后把LEDtest.axf装入到AXD内,进行调试,完成后,则把可执行文件下载到目标板在超级终端输入loadb0x0c008000然后传送文件,利用kermit协议发送,发送完成后,则在超级终端输入go0x0c008000回车,此时,若能看到LED灯循环点亮,并且蜂鸣器鸣叫,则说明,环境搭建好了,可以进入下面的开发。
第三章BootLoader的实现
3.1硬件实现
3.1.1S3C44B0微处理器体系结构
S3C44B0采用ARM7TDMI处理器核,
ARM7的特点主要是
❑低功耗、低成本、高性能
1)具有嵌入式ICE-RT逻辑,调试开发方便
2)极低的功耗
3)能提供0.9MIPS/MHZ的三级流水线结构
4)代码密度高并兼容16位的Thumb指令集
3.1.2ARM存储器
数据类型:
字节、半字、字
地址空间:
最大可寻址空间位4GB(2的32次方字节)
大小端格式:
大端格式是字数据的高字节存储在低地址中,低字节存在高地址中
小端格式是低地址中寸的是子数据的低字节,高地址存放的是子数据的高字节
处理器模式:
v7种工作模式
3.1.3ARM内部寄存器
ARM处理器共有37个寄存器,被分为若干个组,这些寄存器包括:
31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器;
6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位。
3.1.4S3C44B0存储器空间
hfS3C44B0只用了两个bank分别是8M的SDRAM和2M的FLASH,S3C44B0各bank分布如下:
SDRM连接在bank7,而FLASH连接在bank0.硬件连接如下:
3.1.5S3C44B0件上的设置
1.外部提供10M晶振,连接如下
2.由硬件外置低电平,使用S3C44B0为小端模式连接如下
3.2软件实现
3.2.1BootLoader实现方案
我们先看一张固态存储设备的典型空间分配图:
v从固态存储设备上启动的BootLoader大多都是2阶段的启动过程
启动过程可以分为stage1和stage2两部分
嵌入式系统初始化代码程序一般包含在Bootloader中的第一阶段的代码中,他和嵌入式硬件系统的硬件密切相关,必须由汇编代码来实现。
Bootloader就是在操作系统内核运行之前运行的一段程序,相当于PC机上的BIOS。
通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,一般为最终调用操作系统内核准备好正确的环境。
系统加电或复位后,从地址0x00000000处取它的第一条指令,程序完成初始化工作。
vBOOTLOADER两部分分别为
1)汇编部分执行简单的硬件初始化
2)C语言部分负责复制数据,设置启动参数,串口通信等功能
vBOOTLOADER的生命周期
1.初始化硬件,如设置UART(至少设置一个),检测存储器等
2.设置启动参数,告诉内核硬件的信息,如用哪个启动界面,波特率.
3.跳转到操作系统的首地址.
4.消亡
▲Boot Loader两个部分的具体实现方案如下:
⒈stage1 通常包括以下步骤
⏹硬件设备初始化
⏹为加载 BootLoader的stage2准备RAM空间
⏹拷贝 BootLoader的stage2到RAM空间中
⏹设置好堆栈
⏹跳转到stage2的C入口点
2. stage2 通常包括以下步骤
初始化本阶段要使用到的硬件设备
检测系统内存映射(memory map)
将 kernel映像和根文件系统映像从flash上读到RAM空间中
为内核设置启动参数
调用内核
第四章BootLoader设计
4.1stage1设计
①硬件设备初始化
在BootLoader的第一阶段我们只初始化我们必须要用到的硬件设备,主要有存储器、锁相环、总线宽度、中断相关等,将这些设备控制寄存器进行初始化。
⑴存储器初始化
主要设置存储器bank0到bank7的相关数并把它装入到寄器中。
以bank0为例参数设置如下:
;Bank0parameter
B0_TacsEQU0x0;0clk
B0_TcosEQU0x0;0clk
B0_TaccEQU0x6;10clk
B0_TcohEQU0x0;0clk
B0_TahEQU0x0;0clk
B0_TacpEQU0x0;0clk
B0_PMCEQU0x0;normal(1data)
存储器参数的数据池如下代码:
SMRDATADATA
DCD0x11110090
DCD((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(