引言:
随着物联网的发展,嵌入式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的流程介绍就差不多告一段落了。具体的细节下次贴出来。