嵌入式系统课程设计报告.docx
- 文档编号:3790218
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:7
- 大小:20.64KB
嵌入式系统课程设计报告.docx
《嵌入式系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计报告.docx(7页珍藏版)》请在冰豆网上搜索。
嵌入式系统课程设计报告
嵌入式系统课程设计
课题:
嵌入式Linux操作系统的移植与研究
一、简介
操作系统是用于管理计算机资源和控制应用程序运行的计算机程序,充当计算机用户和计算机硬件之间的一个中介。
本次课程学习主要了解嵌入式系统技术根本概念、特点、分类,掌握嵌入式系统软硬件设计的根本方法。
随着微电子技术的开展,嵌入式系统的硬件功能越来越强大,嵌入式软件开场使用C、c++等高级语言编写,调试手段也越来越多和成熟。
在体系构造上,也由最初的单一控制流程,逐渐引入嵌入式操作系统等技术。
嵌入式操作系统首先从技术上解决了嵌入式系统标准化、层次化的问题,其次基于嵌入式操作系统,我们可以形成有效的技术积累和资源积累,比方在嵌入式操作系统根底上的各种硬件驱动程序、专家库函数、行业库函数、产品库函数和通用性的应用程序等。
嵌入式操作系统作为嵌入式系统的根底,是嵌入式系统重要的运行环境和开发平台,它的集成度和可用性直接关系到嵌入式系统的效率,历来是嵌入式系统设计和开发的重点。
二、系统总体设计
关于嵌入式Linux操作系统的移植主要包括移植环境的搭建,Bootloader的移植和内核的移植,构建linux根文件系统,驱动设备的移植。
在这里主要介绍Bootloader的移植和内核的移植,比拟PC机上的Linux与嵌入式Linux的内核,安装过程及模块的区别。
三、原理概述
Linux是一个用于多种硬件体系构造的操作系统,目前可以在i386、MIPS、ARM等硬件体系构造上运行,但是实际工作到特定的硬件环境上方方面面都需要修改,这就是具体的移植。
例如根本操作系统移植包括文件系统、存储管理、设备驱动等,在原有系统的根底上根据系统构造的特点进展如下修改或开发:
修改系统引导和初始化;去掉引导过程中多余代码,如:
解压缩、移动核心代码等,以加速系统的引导和系统存储空间的充分利用;去掉swap,优化文件系统的物理布局,将常修改的文件定位在SDRAM中,不常修改的文件定位Flash中:
修改外围初始化,简化系统文件的配置和文件属性、模式的设置,以便于平安管理;修改存储管理,使特定程序能在位执行,并增强内存空间的保护机制;开发所需驱动程序、设备状态监视程序:
本章将从Bootloader移植、内核移植等方面来分析讲解一个完整的
LiFlUX移植和优化的过程。
四、系统实现:
4.1移植环境的搭建
〔1〕获取内核源码
一个的FTP地址:
ftp:
//ftp.kernel.org/pub/linux/kernel/
〔2〕构建穿插编译环境
搭建穿插编译环境是嵌入式开发的第一步,也是很关键的一步。
不同的体系构造、不同的操作内容设置是不同的版本的内核,都会用到不同的穿插编译器。
选择穿插编译器非常重要,有些穿插编译器经常会有局部的bug,都会导致最后的代码无法正常运行。
建立穿插编译环境的目的在于使用普通的PC机作为宿主机来调试目标开发板。
建立ARM的穿插编译环境主要用到的开发工具有:
binutils、gcc、glibc。
其中binu2tils是二进制文件的处理工具,它主要包含了一些辅助开发工具,例如objdump显示反汇编码、nm列出符号表、readelf显示elf文件信息及段信息、strip将不必要的代码去掉以减少可执行文件大小等。
这些工具在嵌入式开发初期,尤其硬件平台存储器的地址安排是移植调试操作系统时非常有用;gcc是编译工具,用来编译内核代码的工具,使用它可以编译汇编语言和c语言的程序,生成ARM的代码;glibc是和运行库,它的编译需要指定编译器为刚刚做好的ARM穿插编译器;否那么编译出的glibc代码将会是同时有ARM和x86代码的混和体。
所有需要用到的工具可以下载源码自行编译,然后在宿主机上进展安装,就可以建立起ARM的穿插编译环境。
4.2BootLoder引导程序的移植
在嵌入式系统中,BootLoader的作用与PC机上的BIOS类似,通过.BootlLoader可以完成对系统板上的主要部件如CPU,SDRAM,FLASH、串行口等进展初始化,也可以下载文件到系统板上,对FLASH进展擦除与编程。
当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个适宜的状态,以便为最终调用操作系统准备好正确的环境。
因此,正确建立Linux移植的前提条件是具备一个与Linux配套、易于使用的BootLoader,它能够正确完成硬件系统的初始化和Linux的引导。
系统使用的BootLoader是VIVI。
VIVI是CPU加电后运行的第一段程序,其根本功能是初始化硬件设备,建立内存空问的映射图,从而为调用嵌入式Linux内核做好准备。
为能够实现正确引导Linux系统的运行,以及当编译完内核后,快速下载内核和文件系统,VIVI首先通过串口下载内核和文件系统,当系统正常运行起来后,网络驱动正常运行后,VIVI就通过网口下载内核和文件系统。
同时,它也具有功能较为完善的命令集,对系统的软硬件资源进展合理的配置与管理。
4.3内核移植
Linux内核主要由5个子系统组成:
进程调度,内存管理,虚拟文件系统,网络接口,进程间通信,支持X86,ARM等多种体系构造。
要让Linux可以在不同的硬件平台运行只需修改与体系构造平台相关的代码即可。
内核源码一般在/usr/src/Linux-*目录下。
内核源码arch子目录包括了所有和平台体系构造相关的核心代码,它的每一个子目录都代表所支持的一种体系构造。
本工程移植内核版本是Linux-2.4.18。
内核移植包括以下工作:
(1)根目录/Makefile文件修改
根目录Makefile有2个任务:
产生vmlinux文件和产生内核模块。
Makefile还将递归进入各个子目录中,调用子目录Makefile。
在此处要做的是:
指定目标平台ARCH:
=$(shelluname–m|sed–es/i.86/i386/.....
设置为ARCH:
=arm
指定穿插编译器CROSS_PILE=
设置为CROSS_PILE=arm-linux-
〔2〕/arch/arm/linux
启动代码的产生要通过此一文件,由于2.4内核没有对S3C2410的支持,自行参加如下代码:
ifeq($(CONFIIG_ARCH_S3C2410),y),
TEXTADDR=xxx
MACHINE=s3c2410
endif
TEXTADDR是内核的虚拟起始地址,也是内核最终运行地址,通常设为PAGE_OFFSET+0x8000,须根据实际情况相结合。
(3)/arch/arm/config.in
1)config.in是配置文件,决定了我们在配置菜单中看到的内容。
自行参加$CONFIG_ARCH_S3C2410子选项。
If[“$CONFIG_ARCH_S3C2410〞=〞y〞];then
dep_bool‘SMDK(MERITECHBOARD)’
CONFIG_S3C2410_SMDK//
$CONFIG_ARCH_S3C2410
//其他需要的选项
fi
2)其他选项
在if[“$CONFIG_FOOTBRIDGE_HOST〞=“y“–o\
……//省略号代表其他SOC的配置
“$CONIFG_ARCH_SA1100〞=“y“];then
define_boolCONFIG_ISAy
else
define_boolCONFIG_ISAn
fi
中依照其他SOC的设置方式参加〞$CONFIG_ARCH_s3c2410“=“y〞–o\
(4)/arch/arm/boot/Makefile
ZTEXTADDR是自解压代码的起始地址,ZRELADDR是内核解压后最终执行的位置。
ZRELADDR与TEXTADDR之间符合如下映射关系:
__virt_to_phys(TEXTADDR)==ZRELADDR
移植后:
Ifeq($(CONFIG_ARCH_S3C2410),y)
ZTEXTADDR=-xxx
ZRELADDR=xxx
endif
(5)/arch/arm/boot/pressed/Makefile
依照其他参加:
ifeq(“$(CONFIG_ARCH_S3C2410),y)
OBJS+=head–s3c2410.o
endif
(6)/arch/.arm/boot/pressed/head-s3c2410.S
此处需要自己添家参加内核解压前处理器初始化文件head-s3c2410.S,
例如代码:
#include
#include
#include
.section“.starr〞,#alloc,#execinstr
__S3C2410_start:
bicr2,pc,#0x1f去除pc相关位,放于r2
addr3,r2,#0x4000r3=r2+16k
1:
ldrr0,[r2],#32
teqr2,r3比拟2个存放器内容
bne1b
mcrp15,0,r0,c7,c10,4写回WriteBuffer
mcrp15,0,r0,c7,c7,0刷新I&Dcaches
#if0禁用MMU,caches
…….
#endif
movr0,#0x00200000
1:
subsr0,r0,#1
bnelb暂停一段时间,等待主机启动终端
.paper.edu.
-5-
(7)/arch/arm/kernel/Makefile
依样将$〔CONFIG_ARCH_2400〕$(CONFIG_ARCH_2410)\参加
no–irq–arch:
=$(CONFIG_ARCH_INTEGRATOR)\$(CONFIG_ARCH_CLPS711X)\
……
中。
并添加obj-$(CONFIG_MIZI)+=event.o
obj-$(CONFIG_ARCH_APM)+=apm2.o
(8)/arch/arm/kernel/entry-armv.S
此文件主要定义CPU初始化时中断处理局部,可参考处理器使用手册,按处理器使用
要求设置。
(9)/arch/arm/kernel/debug-armv.S
此文件用于最根本的串口调试功能,包括调试串口的地址初始化、发送、等待、忙状态定义等。
使用此文件可以在启动过程中打印出相关信息。
(10)/arch/arm/kernel/setup.c
在此文件中要根据使用的板子设置几个变量。
nr_banks指定了内存块的数量,bank指定了每块内存块的X围,PAGE_OFFSET是内存起始地址,MEM_SIZE是内存的大小。
PAGE_OFFSET,MEM_SIZE要在/include/asm-arm-arm/arch-s3c2410中定义。
(11)/arch/arm/mm/mm-armv.c此文件用于与硬件相关的内存管理,如初始化内存页表内存映射等。
将init_maps->bufferable=0;改为init_maps->bufferable=1
(12)/arch/arm/mach-s3c2410
建立相应目录并按照处理器使用要求编写irq.c,mm.c,time.c,arch.c,Makefile,分别实现中断控制器的初始化,初始化,地址的虚实映射关系,时钟中断和实时时钟处理以及有关Ramdisk使用参数等的设置。
(13)/include/asm-arm/arch-s3c2410
此目录下定义用到的头文件。
至此移植工作根本完成,再进展如下编译过程,即可得到我们需要的映像文件。
makedep;makeclean;makezImage
4.4PC机上的Linux与嵌入式Linux安装过程的区别:
共同点:
使用一样的linux内核
不同点:
在内核上加载的应用不同
4.5设备驱动程序模块
Linux下的设备驱动程序可以按照两种方式进展编译,一种是直接静态编译成内核的一局部,另一种那么是编译成可以动态加载的模块。
如果编译进内核的话,会增加内核的大小,还要改动内核的源文件,而且不能动态地卸载,不利于调试,所有推荐使用模块方式。
从本质上来讲,模块也是内核的一局部,它不同于普通的应用程序,不能调用位于用户态下的c或者c++库函数,而只能调用Linux内核提供的函数,在/proc/ksyms中可以查看到内核提供的所有函数。
在以模块方式编写驱动程序时,要实现两个必不可少的函数
initmodule()和cleanupmodule(),而且至少要包含<1inux/krernel.h>和
在用gcc编译内核模块时,需要加上一DMODULE—DEERNEL—DLINUX这几个参数,编译生成的模块(一般为.0文件)可以使用命令insmod载入Linux内核,从而成为内核的一个组成局部,此时内核会调用模块中的函数init—module()。
当不需要该模块时,可以使用rmmod命令进展卸载,此进内核会调用模块中的函数cleanup—module()。
任何时候都可以使用命令来ismod查看目前已经加载的模块以及正在使用该模块的用户数。
五、结果与分析
跟平台相关的代码在一级目录的arch之中,在这个目录中的每个
子目录都是一种硬件cpu的代码。
现在应用与嵌入式最多的i386,ARM,MIPS这几种cpu。
ARM的启动过程都在三级目录boot之中,如果编译压缩内核又属pressed目录为最关键。
六、总结
在操作系统移植理论和Linux内核移植原理的根底上,通过
对Linux内核体系构造和Linnx源代码妁研究。
分析了Linux内核在向新的硬件平台移植过程中需要处理的~些问题。
在这些分析和研究的根底上。
针对Enet.SHl目标板,对Linux内核移植全过程进展了完整的实践。
首先,根据目标机和宿主机系统建立穿插开发环境:
然后,根据目标硬件平台对Linux核心进展修改;最后,提供了使用GNU调
试工具GDB对新移植的Linux内核进展调试的方法。
掌握这些移植的技术和流程,对于开发嵌入式系统是十分重要的。
七、参考资料
1.?
ARM应用系统开发详解?
,李驹光,清华大学,2003年;
2.?
嵌入式技术与系统——IntelXscale构造与开发?
,陈章龙,北航,2004。
3.?
AT91系列ARM核微控制器构造与开发?
,马忠梅;
4.?
嵌入式linux应用开发详解?
,X峥嵘,机械工业;
5.?
嵌入式linux设计与应用?
,清华大学。
6、?
ARM嵌入式系统移植实战开发?
韩少云,航天航空大学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 课程设计 报告