6.2 嵌入式操作系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

嵌入式系统程序设计大连理工大学软件学院嵌入式系统工程系赖晓晨嵌入式Linux操作系统嵌入式Linux操作系统简介启动引导程序viviCRAMFS文件系统构建嵌入式Linux系统一、嵌入式Linux操作系统简介嵌入式Linux是以Linux为基础,经过裁剪之后适用于嵌入式设备的操作系统,广泛应用在移动电话、PDA、媒体播放器、消费性电子产品以及航空航天等领域。Linux系统具有开源、可裁剪、免费、完全支持TCP/IP协议、可移植性好、运行稳定等特点,嵌入式Linux继承了这些特性。嵌入式Linux操作系统简介(续)与uClinux系统相同,基本的嵌入式Linux操作系统包括三个组成部分:Bootloader,负责引导系统;操作系统内核,负责管理硬件,为上层软件提供运行环境;文件系统,负责管理文件。Linux内核源码目录树arch:包含所有体系结构相关的内核代码,可以在其中找到Linux目前支持的所有硬件体系结构;kernel:包含Linux内核代码。drivers:包含设备驱动程序源代码;fs:包含文件系统实现代码;Linux内核源码目录树(续)include:包含各种体系结构下编译内核所需要的头文件;init:包含内核初始化源代码;ipc:包含进程间通信源代码;mm:包含内存管理源代码;net:包括网络相关源代码。二、启动引导程序vivivivi简介vivi的工作过程vivi的工作模式vivi的命令接口vivi命令实现的数据结构1.vivi简介vivi是韩国mizi公司开发的BootLoader,其结构简洁,易于扩展,非常适合运行于ARM9处理器,支持S3C2410X,被许多底层程序员广泛采用。vivi的代码包括200多个文件,散布在arch、init、lib、drivers和include等几个目录中。2.vivi的工作过程vivi执行分为两个阶段:主要完成硬件相关部分操作,常用汇编语言编写;完成功能包括:硬件初始化;为加载BootLoader的第二部分准备内存空间;复制第二部分到RAM中;设置堆栈;跳转到第二阶段的入口点。完成硬件无关操作,常用C语言编写;完成功能包括:清理内存,为系统运行准备空间;初始化硬件定时器,设置GPIO引脚功能;建立页表、启动MMU,进行存储器系统初始化;堆空间初始化;MTD设备初始化;初始化内核启动参数;初始化vivi内置命令;根据终端输入选择进入vivi命令行或者引导Linux内核。3.vivi的工作模式vivi支持两种工作模式启动加载模式:设备正常运行状态下启动时vivi的工作模式,vivi负责把操作系统内核从某种非易失性存储器中复制到RAM中,并跳转到操作系统内核处开始执行。下载模式:系统调试时vivi的工作方式。vivi通过目标机的串口连接或者网络连接把操作系统内核或者根文件系统映像从宿主机下载到目标机内存中。4.vivi的命令接口vivi支持很多种命令。在Windows超级终端或Linux的minicom下,进入vivi后,按下除回车键之外的任意键,都可以进入到vivi提示符,通过vivi命令实现各种操作。利用help命令尅查看vivi支持哪些命令,在某些命令后面加help可以查看该命令的用法。5.vivi命令实现的数据结构文件vivi/include/command.h中的user-command-t是vivi命令实现的核心数据结构:tpyedefstructuser-command{constchar*name;void(*cmdfunc)(intargc,constchar**);structuser-command*next-cmd;constchar*helpstr;}user-command-t;vivi命令实现的数据结构(续)vivi每一个命令都是这个数据结构类型的一个实例。user-command-t结构中,name代表命令的名称;函数指针cmdfunc指向命令的实现代码,第一个参数表示命令行参数的个数,第二个参数代表命令行中的各个字符串,这两个参数的意义类似主函数的参数;next-cmd是同种类型的结构指针,用来构建一张单链表;helpstr指向此命令的帮助信息。三、CRAMFS文件系统CRAMFS是专门针对闪存设计的只读文件系统。它是一种压缩的文件系统,存在于Flash中,当系统运行需要某一部分数据时,CRAMFS会实时计算该部分数据解压缩后的容量,然后从内存中分配相应的空间,将其解压缩到内存中。CRAMFS文件系统(续)一个完整的CRAMFS文件系统通常包含以下几个目录:/linuxrc:启动脚本文件,负责进行系统启动时的配置。/bin:保存常用命令。/sbin:保存系统相关命令,其中最重要的是供内核初始化之后执行的/sbin/init程序。/etc:保存配置文件。CRAMFS文件系统(续)/lib:保存系统运行所需要的库文件。/dev:保存设备驱动程序。/usr:保存用户程序和配置文件,可以根据需要进行设置。/mnt:用于设备安装的目录。/proc:内存文件系统,存放代表系统运行状态的文件。CRAMFS文件系统(续)构造CRAMFS时,可以从下载源码包cramfs-1.1.tar.gz,然后解压缩、编译生成可执行文件。#tarzxvfcramfs-1.1.tar.gz#cdcramfs-1.1#makeCRAMFS文件系统(续)编译之后生成可执行文件mkcramfs,下面是mkcramfs的命令格式:mkcramfs[-h][-eedition][-ifile][-nname]dirnameoutfile-h:显示帮助信息。-eedition:设置生成的文件系统的版本号。-ifile:将一个文件映像插入这个文件系统中。-nname:设定mkcramfs文件系统的名字。dirname:指明需要被压缩的整个目录树。outfile:最终输出文件。四、构建嵌入式Linux系统移植BootLoader配置编译内核源码制作文件系统1.移植BootLoader准备好vivi源码,修改Makefile文件,指定目标体系结构arm,交叉编译工具前缀为arm-linux-,注意工具链的路径要设置正确;然后按照目标板的实际情况设置vivi运行的硬件地址;交叉编译vivi。本阶段依次运行:$makeclean$makemenuconfig$make2.配置编译内核源码首先修改Makefile文件,把内核运行的目标平台改为2410处理器,修改交叉编译器前缀为arm-linux-,注意工具链的路径要设置正确;然后按照目标板RAM、Flash的实际情况配置硬件地址;配置串口,设置正确的波特率。本阶段依次运行:$makemrproper$makexconfig$makedep$makeclean$makezImage3.制作文件系统首先创建根目录,在其中新建bin、dev、etc、usr、lib、sbin等目录;下载BusyBox源码,配置、交叉编译和安装BusyBox,注意目标平台指定为arm、交叉编译器前缀为arm-linux-,注意工具链的路径要设置正确;复制需要的C库到文件系统目录树中;编写需要的配置文件;上述工作完成之后,使用文件系统生成工具mkcramfs来生成文件系统的镜像文件。结果把vivi、内核和文件系统烧写到Flash中,重新启动目标机,操作成功出现如图所示:

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功