积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> Bootloader
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 |
基于N0rflash的Bootder的设计与实现
 
作者:郝卫东,刘溯奇,林添成,杨谋刚   来源:《现代电子技术》    点击数:86   更新时间:2008-7-18
您可以添加到网摘 让更多人关注此文章:

    

Bootloader通常称为系统的引导程序,是系统加电或复位后执行的第一段代码[1]。一般他只在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境,并同时提供基本输入、输出系统监控功能和程序调试功能。不同的CPU有不同的Bootloader,即使他们是基于同一种CPU而构建的,要想让其运行在一块目标板上的BOOtloader程序也能运行在另一块目标板上,通常也都需要修改与目标硬件相关的代码。因此有必要分析Bootloader,并理解和找出其中的原理和规律,就其特定的嵌入式系统,移植并能够运行其上的Bootloader。

1 系统硬件平台简介

本系统采用的是SamSung公司的S3C2410处理器[2],他是专门为移动手持设备提供的高性价比和高性能的嵌入式微处理器解决方案。其内核是ARM920T,最高能工作在202.8 MHz,为了减少系统总成本和减少外围器件,他集成了如下部件:分别为16 kB指令和数据Cahce、1个LCD控制器、SDRAM控制器、NANDFLASH控制器、3通道UART、4通道DMA、4个具有PwM功能的计时器和1个内部时钟、8通道10位ADC、触摸屏接口、I2S总线接口,2个L1SB主机接口、1个L]SB设备接口,2个SPI接口、SD和MMC卡接口、看门狗定时器、117位通用I/O口、24位外部中断源、8通道10位A/D控制器等。本文涉及的S3C2410开发板的硬件结构如图1所示。本文主要阐述从Norflash引导操作系统要完成的主要任务和实现方法,至于从Nandflash引导操作系统,不打算介绍。

2存储空间分布和映射图

硬件平台的Norflash(型号是:AM29LV160DB[3])空间为2 MB(Ox00000000~Ox001FFFFF),SDRAM(型号是:HY57V561620_1_,32 M×2)空间为64 M(Ox30000000~Ox33FFFFFF),采用如图2所示的存储空间分布图.根据系统设计需要,也可以修改其中一些地址值,使存储空间布局更适合设计目的。

3 Bootloader的设计流程

Bootloader引导程序是硬件上电复位后首先运行的代码,由他来加载嵌入式操作系统。然后由操作系统接管整个系统,进行进程管理、内存管理、磁盘管理和各个外设管理等工作。BootLoader是操作系统内核运行之前的一段自举程序,用来初始化硬件设备、改变处理器运行模式和重组中断向量,建立内存空间的映射图,将系统的软硬件环境带到一个由用户定制的特定状态,然后加载操作系统内核。从操作系统的角度来看,Bootloader的总目标就是正确地调用内核来执行。Bootloader一般分为stagel和stage2两大部分[5],对于依赖CPU体系结构的代码,比如设备初始化代码等,通常都放在stagel中,而且通常用汇编语言来实现,以达到短小精悍的目的,也就是启动代码。而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。

3.1 Bootloader的stagel

这部分代码必须首先完成一些基本的硬件初始化。为stage2的执行以及随后的内核的执行准备好一些基本的硬件环境。Bootloadei。的stagel一般通用的内容包括:

(1)设置中断和异常向量;

(2)禁止看门狗;

(3)屏蔽所有的中断,在Boot Loader的执行全过程中可以不必响应任何中断,中断屏蔽可以通过写CPU的中断屏蔽寄存器或状态寄存器CPSR寄存器来完成;

(4)设置CPU的速度和时钟频率;

(5)对RAM进行初始化,包括正确设置系统的内存控制器的功能寄存器等;

(6)初始化LED或UART,通过GPIO驱动LED,也可以通过初始化UART向串口打印Bootloader的调试信息来表明系统的状态是OK还是ERROR,以便跟踪系统运行情况;

(7)关闭CPU内部指令/数据高速缓存(Cache);

(8)为加载Bootloader的stage2准备RAM空间;

(9)设置好堆栈;

(10)跳转到stage2的C入口点,其流程图如图3所示。

3.2 Bootloader的stage2

为了让程序跳入C语言的"main''函数,这里采用直接跳转到"main''函数的方法,实现代码如下: b Main进入main函数后即可以开始本阶段stage2的初始化任务,这包括:

(1)如果stagel没有初始化UART,这时候至少初始化一个串口,以便和终端用户进行交互,当然也可以继续点亮或熄灭LED来判断程序执行情况;

(2)修改时钟频率;

(3)使能指令Cache;

(4)从串口中打印一些必要的交互信息,了解系统状态;

(5)初始化中断,包括屏蔽中断,清除中断悬挂标志,初始化中断向量表,注册需要的中断处理函数等, (6)打印版本、时间等信息,并从Norflash复制内核到SDRAM中,当然也可以修改指针,跳到内核固化在FLASH中的首地址处,将控制权交给操作系统,开始在FLASH中逐句执行内核自带的引导程序,由该引导程序完成内核的加载工作。很明显,访问速度较慢;

(7)修改指针,直接跳到内核在SDRAM中的首地址处。至此,完成了Bootloader的全部运行加载工作。

下面是main()函数和从Norflash复制内核到SDRAM中的ReadImageF、romNorFlash()函数的具体实现,但省略了一些具体细节。



4试验结果

由于本试验板的Norflash是挂接在S3C2410的bankO地址上,因此,FLASH是从0x0地址开始的,而且Bootload-er必须烧写在FLASH的开始处。系统每次上电或复位后,首先开始运行的就是Bootloader使用ADS1.2集成开发环境建立BootlOader应用工程,添加必需的文件并设置好编译环境,调试并最后生成可执行二进制文件,通过JTAG接口把Bootloader烧写到NOrrlash的OxO地址处,把操作系统烧写到0x10000地址开始处,启动系统运行后的结果如图4所示,该程序用于基于μCOS操作系统的图像采集系统的引导,使用结果表明,这是一种简单可行的方法。

5 结 语

Bootloader的设计与实现是一个非常复杂的过程,一个好的Bootloader可以大大增强系统的稳定性,提高系统的实时性。本文设计的Bootloader完成的主要功能包括:试验板硬件的初始化、串口初始化、时钟频率修改以及从NorfIasll复制操作系统到SDRAM中运行等,并通过PC机上的超级终端显示了正确的启动运行信息,且可执行代码只有3 k左右。因此,本文所详细描述的:Bootloader启动运行的全过程,对设计和移植到其他类型的嵌入式系统有一定的参考价值。



相关文章
没有相关文章
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
各种冲值卡批发销售!独家特价!
特价销售GPS车载导航系统!
数字电视批发销售!你想不到的价格!
品牌相机批发销售!你想不到的价格!
品牌手机批发销售!你想不到的价格!
笔记本电脑批发销售!你想不到的价格!
那一年我做了鸭子2
那一年我做了鸭子1
等你十年(下)
等你十年(上)
 
热门下载 [更多]
 
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
[ ] 实用电源电路集锦
 
论坛新帖 [更多]
 
新店开业,部分开发板&元器件特...
[原创]VB编程RS232串口...
红外摄像机控制故障分析与处理方...
红外防水摄像机在智能视频监控中...
步进电机不用驱动芯片能驱动吗?...
我要选一块双串口,带AD的单片...
[分享]运放和功放的区别是什么...
4×4矩阵式键盘的课程设计...
做过高速信号滤波的高手帮忙...
做视频信号放大器,各位有什么好...

 
赞助商 [更多]
 


ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网