东南大学信息学院嵌入式Linux系统复习资料.docx
- 文档编号:5121093
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:8
- 大小:47.23KB
东南大学信息学院嵌入式Linux系统复习资料.docx
《东南大学信息学院嵌入式Linux系统复习资料.docx》由会员分享,可在线阅读,更多相关《东南大学信息学院嵌入式Linux系统复习资料.docx(8页珍藏版)》请在冰豆网上搜索。
东南大学信息学院嵌入式Linux系统复习资料
东南大学信息学院嵌入式Linux系统复习资料
第一部分嵌入式系统概论
1.什么叫嵌入式系统?
以应用为中心,以计算机技术为基础的,并且软件硬件是可剪裁的,能满足应用系统对功能、可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。
它可以实现对其他设备的控制、监视或管理等功能。
2.嵌入式系统有哪几个组成部分?
通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。
3.嵌入式系统有什么特点?
与通用的计算机系统相比较,有如下特点:
1.面向特定应用,一般都有实时要求;
2.集先进的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集成系统。
3.嵌入式系统是和具体应用对象有机地结合在一起,因而其升级换代也是和具体的产品同步进行的。
4.嵌入式系统的软硬件设计着重于高效率性。
在最大限度满足应用需求的前提下,降低成本是必需要考虑的主要问题。
5.嵌入式系统软件一般都固化在存储器芯片中。
4.现有的嵌入式处理器有哪几种类型?
ARM系列产品、Motorola(DragonBall)系列、TI系列、ATMEL系列、ADMTEK系列、
CIRRUSLOGIC系列、INTEL系列、NETSILICON系列、SAMSUNG系列
5.嵌入式外围设备的主要功能是什么?
主要是指以完成存储、通信、保护、调试、显示等辅助功能的其他部件。
6.嵌入式外围设备可分成哪几类?
存储器类型:
RAM、SRAM、DRAM、ROM、EPROM,EEPROM、FLASH
接口类型:
RS-232、IRDA(红外线数据输入输出)SPI(串行外设接口)、I2C(现场总线)、USB、Ethernet、EPP。
显示类型:
CRT、LCD及各种不同类型的触摸屏等外围显示设备。
7.什么是嵌入式操作系统?
它与台式计算机操作系统有什么不同之处?
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。
它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
目前在嵌入式领域广泛使用的操作系统有:
嵌入式Linux、WindowsEmbedded、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。
8.什么叫实时操作系统(RTOS)?
实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。
因而,提供及时响应和高可靠性是其主要特点。
9.试举出三种以上的典型嵌入式操作系统,并简要阐述其有何特点?
目前在嵌入式领域广泛使用的操作系统有:
嵌入式Linux、WindowsEmbedded、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。
●μC/OS-II:
当一个系统选用μC/OS2II时,最多只需要2MB的NORFlash,2MB的SDRAM或最多8MB的SDRAM,因此整个系统的硬件成本是最低的,能满足很多项目的需求。
如果需要支持WiFi等更多的协议软件时,那就非常麻烦了,且μC/OS2II要收费。
●资源丰富、具有完美继承性的WinCE:
由于WinCE与Windows一脉相承,且使用同样的开发工具,那么对于熟练掌握Windows编程的软件开发人员来说也就非常方便了,所以很多客户还是选择WinCE。
如果项目中还需要用到GUI或具有更加复杂的功能,那么WinCE可以说是最佳的选择,这是WinCE最明显的优势之一。
硬件成本高。
●高贵、实时、稳定的VxWorks:
VxWorks最大的应用价值是实时性和稳定性
第二部分Linux简介
1.如何定义Linux?
Linux常用来指Linux内核、Linux系统或Linux发行套件等术语。
严格的说,Linux指的是LinuxTorvalds维护的(及通过主要和镜像网站发布的)内核。
从Linux所代表的三个涵义开始:
一个内核、一个系统、一个发行套件。
由于Linux并未发行过嵌入式版本的内核,所以“内核”应从清单中移除。
一个嵌入式Linux系统只是代表它是一个基于Linux内核的嵌入式系统,这并不意味着该内核使用了任何特定的链接库或用户工具。
一个嵌入式Linux发行套件可能包括:
用来开发嵌入式Linux系统的平台、各种为了在嵌入式系统中使用而裁剪过的应用软件,或是这二者。
2.试列出三种Linux的发行版本?
SlackwareLinuxDebianGNU/LinuxRedHatLinux
3.嵌入式Linux指的什么含义?
嵌入式Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。
嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
4.什么是实时Linux?
实时Linux是指1996年在VictorYodaiken管理下,由MichaelBarabanov发表的RTLinux计划。
该计划的目标是在Linux环境下提供确定的响应时间。
现在更多的计划是在Linux元下提供这种形式或其他形式的实施相应功能。
它主要是用来描述系统或其中的组件具有固定的响应时间。
5.Linux的内核(kernel)有哪几个部分组成?
主要完成什么任务?
MMU:
内存管理单元,完成地址映射(应用虚拟地址方式)
VFS:
虚拟文件管理系统,提供了统一管理计算机资源的途径。
使统一规范计算机资源的使用格式成为可能,方便传输
SCHED:
进程调用单元。
支持多任务运行。
利用软件中断的特点,将CPU的时间线划分给各个任务,完成多任务管理
IPC:
进程间通信单元。
实现多个不同程序在运行时可以进行数据交换、通信。
NET:
网络。
网络不做为通用设备,以特定工作单元存在。
负责计算机系统与其他计算机相互通信的接口。
6.试简要说明Linux系统启动过程?
第一阶段:
BIOS启动引导阶段;
1.在该过程中实现硬件的初始化以及查找启动介质;
2.从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理
第二阶段:
GRUB启动引导阶段;
1.装载stage1
2.装载stage1.5
3.装载stage2
4.读取/boot/grub.conf文件并显示启动菜单;
5.装载所选的kernel和initrd文件到内存中
第三阶段:
内核阶段:
1.运行内核启动参数;
2.解压initrd文件并挂载initd文件系统,装载必须的驱动;
3.挂载根文件系统
第四阶段:
SysVinit初始化阶段:
1.启动/sbin/init程序;
2.运行rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统;
3.读取/etc/inittab文件,运行在/et/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本;
4.打开字符终端1-6号控制台/打开图形显示管理的7号控制台
7.试列出选择Linux作为嵌入式操作系统的几个理由?
1、可应用于多种硬件平台。
Linux已经被移植到多种硬件平台,这对于经费,时间受限制的研究与开发项目是很有吸引力的。
2.Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等现有的大部分芯片)等特性的一种通用操作系统。
其程序源码全部公开,任何人可以修改并在GUN通用公共许可证(GNUGeneralPublicLicense)下发行。
这样,开发人员可以对操作系统进行定制,适应其特殊需要。
3、Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。
Linux还提供了强大的网络功能,有多种可选择窗口管理器(XWindows)。
其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。
答:
(1)程度代码是可以获取的,可高度高;
(2)有完整的源码,软件丰富并且免费;
(3)得到众多硬件生产家的广泛支持;包括cpu、计算机外围设备
(4)完善的通信协议、软件标准和文件管理机制;
(5)提供完全免费且优秀的开发工具;
(6)广泛的社群支持
(7)无需购买licence,是免费的;
(8)不依赖特定厂商、供应商;
(9)成本相对低廉。
8.常用的嵌入式Linux操作系统有哪几种版本?
各有什么特点?
1.uC/OS—II
uC/OS—II是赫赫有名的开源嵌入式OS(OperatingSystem),但如果用于商业目的,需要授权。
内核简单清晰,是学习嵌入式实时操作系统极好的入门材料。
近来增加了uC/GUI图形界面,uC/FS文件系统,uC/TCP网络功能,这些都是要收费的。
进行简单的开发还是不错的选择。
在8位的51系列单片机用的很多,16位、32位也支持。
2.FreeDOS
FreeDOS,是开源的兼容DOS。
自从微软抛弃DOS,一心一意谋Windows,开源社区就开发了FreeDOS。
DOS的几个缺点:
单进程,网络功能弱。
用于DOS免费的网络协议栈已经有了。
要做真正的嵌入式,当慢腾腾又臃肿的AWORD生产的BIOS伤你的心时,你需要开发一个嵌入式的BIOS,主要用X86汇编。
台湾很多公司喜欢用兼容DOS,毕竟DOS时代的程序员还在。
FreeDOS是X86系列嵌入式OS的首选,特别是80186兼容的16位,80386兼容的32位。
3.eCOS
eCOS是真正的GPL实时嵌入式OS,大概比uC/OS-II大一倍,是因为Linux的实时性不好开发的,很有前途,只是中国学eCOS的很少。
4.Linux
Linux如此有名,但因为实时性问题,只能用在要求不高的嵌入式系统中。
不过有几家大公司比如风河,在开发高实时性的Linux。
Linux的前途越来越好,我是说服务器和嵌入式,不是说桌面。
Linux是32位,不是16位,ARM9用的多。
5.uCLinux
uCLinux,32位ARM7TDMI的首选。
主要用于没有MMU的CPU,简单的说是没有虚拟内存。
6.RTLinux
RTLinux,Linux的实时扩展,商业目的需要收费,主要是实时API作为驱动模块加载到内核,架空Linux的底层,通过实时FIFO进程间通讯。
7.RTAI
RTAI,类似于RTLinux,真正GPL,我看前途比RTLinux好,结构清晰,有实时串口API,实时TCP等。
8.FreeRTOS
FreeRTOS这是一个开源的项目,属于轻量级内核,API比较全,支持AVR、ARM、MSP430等处理器,同时有移植好的uIP。
9.用Linux内核构成嵌入式操作系统需要考虑哪些技术问题?
一、程序设计的基础,例如:
基本的编程语言基础,至少对数据类型、程序的结构及流程控制等最基本的内容要相当清楚!
另外有不少同学都问到数据结构的基础,我一直认为数据结构和算法的学习是帮助形成程序设计逻辑思维的很好训练方式,对于程序员的长期专业素养的提高一定有好处,所以建议即使已经在嵌入式行业中工作之后也应该多补充一些相关的知识。
许多在学校没有学过数据结构的同学往往认为这部分非常枯燥、难学。
而实际上如果你能明白研究计算机存储和数据组织方式的意义,就一定能够充分体会到数据结构的价值和魅力。
二、操作系统工作原理,这部分往往是非计算机专业的同学在学校时没有接触过的。
而由于嵌入式软件设计相关的多任务环境、模块间的同步与通信协同、驱动设计等往往都需要有对操作系统工作机制的了解和掌握作为基础,因此建议没有系统学习过的同学,找一本相关的操作系统工作原理书籍认真看一下。
三、基本的硬件基础,由于嵌入式Linux开发往往是ARM+Linux路线,所以为了能够在后续培训过程中很好地掌握主流嵌入式微处理器的结构与原理(例如:
ARM9),就需要对硬件工作原理有初步的了解和掌握,建议看一下诸如计算机组成原理、体系结构等相关的专业书籍。
第三部分构建嵌入式Linux系统开发平台
1.嵌入式Linux系统开发平台有几种形式?
请分别给出示意图?
2.为什么要在主机(host)上建立交叉开发环境?
1、一般的嵌入式系统资源有限,所以,在嵌入式系统上建立开发环境来开发应用程序比较困难,甚至是不可能的;
2、一般,嵌入式操作系统是需要经过剪裁的,所以某些功能上有限制,如果在嵌入式系统上建立开发环境来开发应用程序保证不了良好的软件兼容性;
3、在宿主机上开发嵌入式系统程序,可以利用现有较成熟的商业系统及开发环境,获得很好的软件支持和稳定性,也便于软件在不同平台之间的移植。
另外,可以不受嵌入式系统资源的限制。
这其中最主要的是第一条。
当然,总的来说,以PC机作为宿主机开发嵌入式系统给我们带来了极大的方便,同时,现有的软件也大都是在PC机平台下开发的,所以建立交叉开发环境既是必要也是可能的。
4.在主机上为什么需要装载GNUC(gcc)?
gcc的作用是什么?
GNU提供的关于C语言编译器,多版本
GCC是一个用于linux系统下编程的编译器,原名GMUC语言编译器(GNUCCompiler),因为它原本只能处理C语言。
GCC很快地扩展,变得可处理C++。
之后也变得可处理Fortran、Pascal、Objective-C、Java、Ada及Go与其他语言。
5.在主机上建立交叉开发环境为什么需要装载二进制工具软件包(binutils)?
交叉编译就是跨架构编译,编译出来的程序不能在本机执行(当然有例外情况)。
所以这个时候就需要交叉编译工具链。
工具链光有GCC是不行的,还需要一个binutils的二进制连接器,以及一个最基本的目标架构的C库,C库还需要一个目标架构的内核源代码才能完全工作(当然不是必须的,但编译有的时候需要)
又因为GCC、binutils不能实现单软件同时多架构输出,所以需要单独另装,又加上C库和内核头文件需要目标架构的东西而不能用本机本地架构的数据。
所以一个交叉编译工具链就是针对目标架构准备的单独安装单独使用的binutils+gcc+glibc+kernel-header的集合了。
6.在选择LINUX内核时需要考虑哪些问题?
7.在目标机(Target)中采用不同的CPU的结构对交叉开发平台中的哪些工具软件有影响?
8.为什么要重新配置LINUX内核?
针对嵌入式系统,内核需要知道运行在怎么样的平台上,它要管理的硬件单元,这就需要我们重新组装内核来达成上述目标。
因为完整的Linux的内核比较庞大,不适合嵌入式系统这样的对速度、容量要求苛刻的系统上面运行,因此我们需要去掉那些与目标系统无关的、只编译系统需要的功能的代码。
9.为什么要重新编译LINUX内核?
Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。
新的内核修订了旧内核的bug,并增加了许多新的特性。
如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。
通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
(1)自己定制编译的内核运行更快(具有更少的代码)
(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
(4)将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
第四部分嵌入式Linux系统的开发
1.试问在所有的嵌入式Linux系统中,其内核的加载和启动过程是否都相同?
内核的加载是嵌入式设备加载过程的一个环节。
根据内核具体使用的硬件设备驱动不同,其加载过程会有所差异,但基本的linux内核功能的加载都应该是相同的,会在一开始都加载进去。
当内核基本可以自己运作之后再加载剩下的模块,这也是模块化的好处
2.在嵌入式Linux系统中的根文件(rootfilesystem系统中主要有那些目录项?
构建嵌入式操作系统时应包括的目录项有:
/bin;/boot;/dev;/ect;/home;/lib;/mnt;/opt;/proc;/root;/sbin;/tmp;/usr;/var
3.若要构成用ARM720T处理器形成的嵌入式Linux系统,试简要阐述实现过程?
附:
1、为什么在Linux操作系统中,要用设备文件的方式操作一个设备?
答:
这是Linux操作系统管理所有设备的一种方式,且并非只有Linux操作系统采用。
在Linux操作系统中将所有挂接到计算机上的设备用三种类型的设备文件进行分类管理,而每一类设备又分别用主设备号和次设备号来进行标识。
在具体实施时则是通过内核中运行的虚拟文件系统(VFS)来完成的。
2、什么是设备驱动程序?
用户怎么使用?
答:
设备驱动程序是操作系统与设备硬件之间的接口。
具体地说就是为该设备编写的一系列特定操作的应用程序接口模块,只不过在LINUX操作系统中,这个模块必须首先向VFS注册(或在加进内核后,重新编译内核)才能被系统调用。
因此设备驱动程序是内核的一部分,它要完成以下功能:
(1)对设备初始化和释放;
(2)
在内核和设备硬件之间完成数据存取;(3)检测和处理设备出现的错误。
对用户(应用程序)而言,可以象使用普通文件一样来使用该设备,即打开和关闭,读取或存储(写入)数据。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 信息 学院 嵌入式 Linux 系统 复习资料