嵌入式操作系统_第1页
嵌入式操作系统_第2页
嵌入式操作系统_第3页
嵌入式操作系统_第4页
嵌入式操作系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统程序设计,大连理工大学软件学院 嵌入式系统工程系 赖晓晨,嵌入式Linux操作系统,嵌入式Linux操作系统简介 启动引导程序vivi CRAMFS文件系统 构建嵌入式Linux系统,一、嵌入式Linux操作系统简介,嵌入式Linux是以Linux为基础,经过裁剪之后适用于嵌入式设备的操作系统,广泛应用在移动电话、PDA、媒体播放器、消费性电子产品以及航空航天等领域。Linux系统具有开源、可裁剪、免费、完全支持TCP/IP协议、可移植性好、运行稳定等特点,嵌入式Linux继承了这些特性。,嵌入式Linux操作系统简介(续),与uClinux系统相同,基本的嵌入式Linux操作系统包

2、括三个组成部分:Bootloader,负责引导系统;操作系统内核,负责管理硬件,为上层软件提供运行环境;文件系统,负责管理文件。,Linux内核源码目录树,arch:包含所有体系结构相关的内核代码,可以在其中找到Linux目前支持的所有硬件体系结构; kernel:包含Linux内核代码。 drivers:包含设备驱动程序源代码; fs:包含文件系统实现代码;,Linux内核源码目录树(续),include:包含各种体系结构下编译内核所需要的头文件; init:包含内核初始化源代码; ipc:包含进程间通信源代码; mm:包含内存管理源代码; net:包括网络相关源代码。,二、启动引导程序vi

3、vi,vivi简介 vivi的工作过程 vivi的工作模式 vivi的命令接口 vivi命令实现的数据结构,1. vivi简介,vivi是韩国mizi公司开发的BootLoader,其结构简洁,易于扩展,非常适合运行于ARM9处理器,支持S3C2410X,被许多底层程序员广泛采用。 vivi的代码包括200多个文件,散布在arch、init、lib、drivers和include等几个目录中。,2. vivi的工作过程,vivi执行分为两个阶段: 主要完成硬件相关部分操作,常用汇编语言编写;完成功能包括:硬件初始化;为加载BootLoader的第二部分准备内存空间;复制第二部分到RAM中;设置

4、堆栈;跳转到第二阶段的入口点。 完成硬件无关操作,常用C语言编写;完成功能包括:清理内存,为系统运行准备空间;初始化硬件定时器,设置GPIO引脚功能;建立页表、启动MMU,进行存储器系统初始化;堆空间初始化;MTD设备初始化;初始化内核启动参数;初始化vivi内置命令;根据终端输入选择进入vivi命令行或者引导Linux内核。,3. vivi的工作模式,vivi支持两种工作模式 启动加载模式:设备正常运行状态下启动时vivi的工作模式,vivi负责把操作系统内核从某种非易失性存储器中复制到RAM中,并跳转到操作系统内核处开始执行。 下载模式:系统调试时vivi的工作方式。vivi通过目标机的串

5、口连接或者网络连接把操作系统内核或者根文件系统映像从宿主机下载到目标机内存中。,4. vivi的命令接口,vivi支持很多种命令。在Windows超级终端或Linux的minicom下,进入vivi后,按下除回车键之外的任意键,都可以进入到vivi提示符,通过vivi命令实现各种操作。 利用help命令尅查看vivi支持哪些命令,在某些命令后面加help可以查看该命令的用法。,5. vivi命令实现的数据结构,文件vivi/include/command.h中的user-command-t是vivi命令实现的核心数据结构:,tpyedef struct user-command const c

6、har* name; void (*cmdfunc)(int argc, const char *); struct user-command* next-cmd; const char* helpstr; user-command-t;,vivi命令实现的数据结构(续),vivi每一个命令都是这个数据结构类型的一个实例。user-command-t结构中,name代表命令的名称;函数指针cmdfunc指向命令的实现代码,第一个参数表示命令行参数的个数,第二个参数代表命令行中的各个字符串,这两个参数的意义类似主函数的参数;next-cmd是同种类型的结构指针,用来构建一张单链表;helpstr

7、指向此命令的帮助信息。,三、CRAMFS文件系统,CRAMFS是专门针对闪存设计的只读文件系统。它是一种压缩的文件系统,存在于Flash中,当系统运行需要某一部分数据时,CRAMFS会实时计算该部分数据解压缩后的容量,然后从内存中分配相应的空间,将其解压缩到内存中。,CRAMFS文件系统(续),一个完整的CRAMFS文件系统通常包含以下几个目录: /linuxrc:启动脚本文件,负责进行系统启动时的配置。 /bin:保存常用命令。 /sbin:保存系统相关命令,其中最重要的是供内核初始化之后执行的/sbin/init程序。 /etc:保存配置文件。,CRAMFS文件系统(续),/lib:保存系

8、统运行所需要的库文件。 /dev:保存设备驱动程序。 /usr:保存用户程序和配置文件,可以根据需要进行设置。 /mnt:用于设备安装的目录。 /proc:内存文件系统,存放代表系统运行状态的文件。,CRAMFS文件系统(续),构造CRAMFS时,可以从,# tar zxvf cramfs-1.1.tar.gz # cd cramfs-1.1 # make,CRAMFS文件系统(续),编译之后生成可执行文件mkcramfs,下面是mkcramfs的命令格式: mkcramfs -h -e edition -i file -n name dirname outfile -h:显示帮助信息。 -e

9、 edition:设置生成的文件系统的版本号。 -i file:将一个文件映像插入这个文件系统中。 -n name:设定mkcramfs文件系统的名字。 dirname:指明需要被压缩的整个目录树。 outfile:最终输出文件。,四、构建嵌入式Linux系统,移植BootLoader 配置编译内核源码 制作文件系统,1. 移植BootLoader,准备好vivi源码,修改Makefile文件,指定目标体系结构arm,交叉编译工具前缀为arm-linux-,注意工具链的路径要设置正确;然后按照目标板的实际情况设置vivi运行的硬件地址;交叉编译vivi。本阶段依次运行: $make clean

10、 $make menuconfig $make,2. 配置编译内核源码,首先修改Makefile文件,把内核运行的目标平台改为2410处理器,修改交叉编译器前缀为arm-linux-,注意工具链的路径要设置正确;然后按照目标板RAM、Flash的实际情况配置硬件地址;配置串口,设置正确的波特率。本阶段依次运行: $make mrproper $make xconfig $make dep $make clean $make zImage,3. 制作文件系统,首先创建根目录,在其中新建bin、dev、etc、usr、lib、sbin等目录;下载BusyBox源码,配置、交叉编译和安装BusyBox,注意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论