您的位置:首页 > 运维架构 > Linux

嵌入式Linux开发之Bootloader(Boot-XSBase27024)原理简介

2016-04-11 10:30 435 查看
引言:

随着物联网的发展,嵌入式Linux在市场的比例愈发增大。因此,笔者在此简述一下嵌入式Linux开发的流程以及相应的原理。

1)开门见山的是嵌入式开发的结构:



接下来以Boot-XSBase27024(Blob)作为实例来举一反三地讲解嵌入式Linux开发中Bootloader部分的内容。



2)我们知道,测试嵌入式程序的时候需要通过网络配置进行文件传输,于是这部分的内容在utils文件夹当中,具体如下:


其中包括网络IP地址,Mac地址和Makefile。通过这些文件可以配置网络。

3)然后,我们需要做的就是讲述一下Blob的过程。其中包括两个阶段:

第一阶段汇编代码:fixgpio.S memcpy.S memsetup.S start.S 入口文件:start.S

第二阶段: C程序:bootp.c command.c flash.c lan91c111.c main.c network.c pxafb.c setup.c string.c time.c xmodem.c cmddebug.c ctype.c gpio.c linux.c menu.c partition.c serial.c stdio.c tftp.c vsprintf.c 入口文件:main.c

两个阶段具体的过程如下:

第一阶段:

• 基本的硬件初始化

– 初始化GPIO功能

– 设置CPU的速度和时钟频率

– 存储控制单元初始化

• 将bootLoader程序加载到RAM空间

• 设置堆栈指针sp

• 跳转到阶段2的C入口点

第二阶段:

• 初始化本阶段要使用到的硬件设备

– 初始化至少一个串口,以便和终端用户进行I/O输出信息;

– 初始化计时器、

– 初始化网络传输等。

• 系统的内存映射

• 加载内核映像和根文件系统映像 – 规划内存占用的布局

• 设置内核的启动参数

• 调用内核

详细的过程请根据文件夹/Src和/include中的代码模拟Bootloader执行的过程,这样就能够更加清楚地了解Blob的执行详情。

4)在了解了整个Blob加载的过程之后,需要知道怎么编译执行。于是在Boot-XSBase270程序的文件当中有三个Makefile文件

其一:配置网络环境为下载镜像和文件系统做准备 /Boot-XSBase27024/utils



其二:Blob加载 /Boot-XSBase27024/src



其三:根目录下整合网络配置和Blob加载的Makefile /Boot-XSBase27024



综上所述,整个Bootloader的流程介绍就差不多告一段落了。具体的细节下次贴出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息