当前位置:首页 > 单片机 > 单片机
[导读]0.Bootloader Bootloader(引导加载程序)是系统加电后运行的第一段代码,一般运行的时间非常短,但是对于嵌入式系统来说,这段代码非常重要。在我们的台式电脑当中,引导加载程序由BIOS(固件程序)和位于硬盘MBR中的

0.Bootloader

Bootloader(引导加载程序)是系统加电后运行的第一段代码,一般运行的时间非常短,但是对于嵌入式系统来说,这段代码非常重要。在我们的台式电脑当中,引导加载程序由BIOS(固件程序)和位于硬盘MBR中的操作系统引导加载程序(比如NTLOADER,GRUB和LILO)一起组成

在嵌入式系统当中没有像BIOS这样的固件程序,不过也有一些嵌入式CPU会在芯片内部嵌入一小段程序,一般用来将bootloader装进RAM中,有点类似BIOS,但是功能比BIOS弱很多。在一般的典型系统中,整个系统的加载启动任务全由bootloader来完成。在ARM中,系统上电或复位时通常从地址0x00000000处开始执行,而在这个位置,通常安排的就是系统的BOOTLOADER。通过这小段程序可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境设置到一个合适的状态!以为最终调用操作系统内核准备好正确的环境。

嵌入式LINUX系统从软件的角度可看成是4个层次:

(1)引导加载程序,包括固化在固件中(firmware)中的启动代码(可选)和BOOTLOADER两大部分。

(2)内核。特定于板子的定制内核以及控制内核引导系统的参数。

(3)文件系统。包括根文件系统和建立与FLASH内存设备上的文件系统。

(4)用户应用程序。特定于用户的应用程序,有时还包括一个GUI。

—————————————————————————————

| Bootloader | 参数 | Kernel | 文件系统 |

—————————————————————————————

大多书BOOTLOASER都包含两中模式,启动加载模式和下载模式

BOOTLOADER的启动流程

大多书分为两个阶段,第一个阶段主要是包含依赖于CPU的体系结构的硬件初始化代码,通常都是用汇编语言来实现的。这个阶段的任务有:

● 基本的硬件设备初始化(屏蔽所有中断、关闭处理器内部指令/数据CACHE等)

● 为第二阶段准备RAM空间

● 如果是从某个固态存储媒质中,则复制BOOTLOADER的第二阶段代码到RAM

● 设置堆栈

● 跳转到第二阶段的C程序入口点

第二阶段通常是由C语言实现的,这个阶段的主要任务有:

● 初始化本阶段所要用到的硬件设备

● 检测系统的内存映射

● 将内核映像和根文件系统映像从FLASH读到RAM

● 为内核设置启动参数

● 调用内核

BOOTLOADER调用LINUX内核的方法是直接跳转到内核的第一条指令处,即跳转MEM_START+0x8000地址处,在跳转的时候必须满足下面的条件

● CPU寄存器:R0为0,R1为机器类型ID,R2为启动参数,标记列表在RAM中的起始基地址

● CPU模式:必须禁止中断,CPU设置为SVC模式

● Cache和MMU设置:MMU必须关闭,指令CACHE可以打开也可以关闭,数据CACHE必须关闭

Vivi简介

vivi是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这时vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用vivi提供的一些命令,见下表:


命令


功能


Load


把二进制文件载入Flash或RAM


Part


操作MTD分区信息。显示、增加、删除、复位、保存MTD分区


Param


设置参数


Boot


启动系统


Flash


管理Flash,如删除Flash的数据


1 vivi的配置与编译

1.1 建立交叉开发环境

网上关于这方面的内容有很多,也可以用最简单的cross-tool来自动建立开发环境!

1.2 配置和编译vivi

如果vivi的源代码已根据开发板作了相应改动,则需要对源代码进行配置和编译,以生成烧入flash的vivi 二进制映象文件。

需修改/vivi/Makefile里的一些变量设置:

LINUX_INCLUDE_DIR = /usr/local/arm/2.95.3/include

CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-

ARM_GCC_LIBS = /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3

进入/vivi目录执行make distclean。(目的是确保编译的有效性,在编译之前将vivi里所有的“*.o”和“*.o.flag”文件删掉)

进入/vivi目录里,输入“make menuconfig”,开始选择配置。可以Load一个写好的配置文件也可以自己修改试试。注意Exit时一定要选“Yes”保存配置。

再输入“make”正式开始编译,一会儿就完了。如果不报错,在/vivi里面就有你自己的“vivi”了。这个就是后面要烧写到flash中的bootloader。

vivi代码分析

vivi的代码包括arch,init,lib,drivers和include等几个目录,共200多条文件。

Vivi主要包括下面几个目录:

arch:此目录包括了所有vivi支持的目标板的子目录,例如s3c2410目录。

drivers:其中包括了引导内核需要的设备的驱动程序(MTD和串口)。MTD目录下分map、nand和nor三个目录。

init:这个目录只有main.c和version.c两个文件。和普通的C程序一样,vivi将从main函数开始执行。

lib:一些平台公共的接口代码,比如time.c里的udelay()和mdelay()。

include:头文件的公共目录,其中的s3c2410.h定义了这块处理器的一些寄存器。Platform/smdk2410.h定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭