ARMLinux大纲.docx

上传人:b****6 文档编号:7953941 上传时间:2023-01-27 格式:DOCX 页数:14 大小:41.19KB
下载 相关 举报
ARMLinux大纲.docx_第1页
第1页 / 共14页
ARMLinux大纲.docx_第2页
第2页 / 共14页
ARMLinux大纲.docx_第3页
第3页 / 共14页
ARMLinux大纲.docx_第4页
第4页 / 共14页
ARMLinux大纲.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

ARMLinux大纲.docx

《ARMLinux大纲.docx》由会员分享,可在线阅读,更多相关《ARMLinux大纲.docx(14页珍藏版)》请在冰豆网上搜索。

ARMLinux大纲.docx

ARMLinux大纲

Linux部分

1.Linux的特点有哪些?

Linux是免费的;真正的多任务、多用户及32位操作系统;支持多种硬件平台;开放性;全面支持网络协议;可移植性;支持多种文件系统;支持良好的用户界面;良好的安全性、健壮性。

2.设备的概念是什么?

分哪些类?

Linux系统中设备都是用设备文件来表示,所有硬件设备用起来和普通文件一样,系统通过读写设备文件来完成对设备的控制。

设备文件存储在/dev目录下。

设备文件名通称使用主设备号和从设备号来描述。

这些设备可以分为三种类型:

字符设备,块设备和网络设备。

字符设备:

以字符为最小存取单位,通常只允许按顺序访问,一般不使用缓存技术,如鼠标、声卡等。

块设备:

以块为最小存取单位,大多允许随机访问,而且常常采用缓存技术。

网络设备:

以网络相关的设备。

3.Linux内核

Linux的内核特征

内核(kernel)是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。

操作系统的代码分以下两部分:

1)内核所在的地址空间称作内核空间

2)外部管理程序与用户程序所占据的地址空间称为外部空间。

微内核结构中,操作系统的内核只需要提供最基本、最核心的一部分操作(如创建和删除任务、内存管理、中断管理等)即可,而其他管理程序则尽可能放在内核以外。

4.嵌入式Linux的引导过程

1)处理器重新启动之后,执行ROM启动代码。

2)ROM启动代码初始化CPU、内存控制器以及片上设备,然后配置存储映射。

ROM启动代码随后执行一个引导装载程序bootloader。

3)引导装载程序将Linux内核从闪存货TFTP服务器解压到RAM中。

然后跳到内核的第一条指令出执行。

内核首先配置微处理器的寄存器,然后调用start_kernel,它是体系结构无关的开始点。

4)内核初始化高速缓存和各种硬件设备。

5)内核挂载根文件系统。

6)内核执行init进程。

7)正在执行init进程装载运行时共享库。

8)Init读取其配置文件/etc/inittab并执行脚本。

一般而言,init执行一个启动脚本rc.d/rcs,该脚本配置并启动网络极其其他系统服务。

9)Init进入运行级别,在该级别下可以执行系统任务或开始登录进程,最后进入用户会话阶段。

5.Linux文件系统类型

1)ext2文件系统

2)cramfs文件系统

3)romfs文件系统

4)日志文件系统

5)JFFS和JFFS2文件系统

6.简述进程的启动、终止的方式

在linux中启动一个进程有手工启动和调度启动两种方式:

(1)手工启动

用户在输入端发出命令,直接启动一个进程的启动方式。

可以分为:

1.前台启动:

直接在SHELL中输入命令进行启动。

2.后台启动:

启动一个目前并不紧急的进程,如打印进程。

(2)调度启动

系统管理员根据系统资源和进程占用资源的情况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。

7.Linux设备驱动概念和功能:

系统调用是操作系统内核和应用程序之间的接口,设备驱动程序时操作系统内核和机器硬件之间的接口。

设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序开来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。

设备驱动程序是内核的一部分,它完成以下的功能:

1)对设备初始化和释放;

2)把数据从内核传送给设备文件的数据和回送应用程序请求的数据;

3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据;

4)检测和处理设备出现的错误。

8.实现一个嵌入式Linux设备驱动的大致流程:

1)定义主、次设备号,也可以动态获取。

2)实现驱动初始化和清除函数。

如果驱动程序采用模块方式,则要实现模块初始化和清除函数。

3)设计所需实现的文件操作,定义file_operations结构。

4)实现所需的文件操作调用,如read、write等。

5)实现中断服务函数,并用request_irq向内核注册。

6)将驱动编译入内核或编译成模块,用ismode命令加载。

7)生成设备节点文件。

与普通文件相比,设备文件的操作要复杂的多,不可能简单的通过read、write和llseek等来实现。

9.画出Linux模块调用图

书上279页图6-1

填空大纲

1在Linux系统中,以文件方式访问设备。

2进程是一个动态的实体,所以它是有生命的。

从创建到消亡,是一个进程的整个生命周期。

一般来说,所有进程都要经历就绪态阻塞态和运行态这3种状态。

3系统调用是Linux中从用户态进入内核态的唯一途径。

Linux使用了中断的方法来实现系统调用。

4在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是/etc,用来存放库文件的目录是/lib。

5Linux内核中,设备文件是通过structfile来表示的,与普通文件的表示方法完全相同,通常所说的设备驱动程序接口是指结构file_operations,与文件操作接口相同。

6通常的嵌入式系统的软件开发采用一种交叉编译、调试的方式,其环境建立在宿主机上,对应的开发板或试验箱叫做目标机。

7某文件的权限为:

d-rw-r--r--,用数值形式表示该权限,则该八进制数为:

644,该文件属性是目录。

8在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是ps-aux,结束后台进程的命令是kill。

9在嵌入式系统中,由一个源文件编程最终可执行的二进制文件,一般要经过3个过程,即编译、链接和重新定位。

10vi编辑器具有两种工作模式:

命令模式和输入模式。

11当想删除本系统用不上的设备驱动程序时必须编译内核,当内核不支持系统上的设备驱动程序时,必须对内核升级。

12Linux设备驱动中,安装驱动模块的命令是insmod,卸载模块的命令是rmmod,浏览系统已经安装的模块命令是lsmod。

13vi编辑器具有两种工作模式:

命令模式和输入模式。

P-219

ARM部分

第一章

1.嵌入式系统的定义

根据电气工程师协会(IEE)的定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置。

国内一般定义:

以应用为中心,以计算机技术为基础,软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、提及、功耗等严格要求的专用计算机系统。

嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等几大部分组成。

2.实时系统

实时系统(RealTimeSystem)是指产生系统输出的时间对系统至关重要的系统。

从输入到输出的之后时间必须足够小到一个可以接受的时限内。

因此,实时逻辑的正确性不仅依赖于计算结果的正确性,还取决于输出结果的时间。

实时系统是一个能够在指定或者确定的时间内完成系统功能以及对外部或内部事件在同步或异步时间内做出响应的系统。

实时系统时在逻辑和时序控制中,如果出现偏差,将会引起严重后果的系统。

对于实时系统来说,应该具备以下几个重要的特性:

实时性;并行性;多路性;独立性;可预测性;可靠性;

实时系统主要通过三个指标来衡量系统的实时性:

响应时间;生存时间;吞吐量;

实时系统根据响应时间可以分为三种类型:

强实时系统;弱实时系统;一般实时系统;

实时系统根据确定性可以分为以下两类:

硬实时;软实时;

实时系统又可以分为“硬实时系统”和“软实时系统”。

硬实时和软实时的区别就在于对外界的事件做出反应的时间。

硬实时系统必须是对事件做出及时的反应,绝对不能错过事件处理的时限。

软实时系统是指,如果在系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害。

硬实时系统和软实时系统实现的区别主要是在选择调度算法上。

3.操作系统

操作系统OS(OperatingSystem)是一组计算机程序的集合,用来有效地控制和管理计算机的硬件和软件资源,即合理地对资源进行调度,并为用户提供方便的应用接口。

它为应用支持软件提供运行环境,即对程序开发者提供功能强、使用方便的开发环境。

从资源管理的角度,操作系统主要包括如下功能:

处理器管理;

存储器管理;

设备管理;

文件管理;

用户接口;

按程序运行调度的方法,可以将计算机操作系统分为以下几种类型:

顺序执行系统;

分时操作系统;

实时操作系统;

4.任务、进程和线程

任务:

任务是指一个程序分段,这个分段被操作系统当做一个基本工作单元来调度。

任务是系统运行前已经设计好的。

进程:

进程是任务的一次运行过程,它是动态过程。

有些操作系统把任务和进程等同看大,认为任务是一个动态过程,即执行任务体的动态过程。

线程:

同进程相比,线程是真正的执行单元。

5.中断与中断优先级

中断:

中断是计算机软件系统与硬件系统共同提供的功能。

它包括中断源、中断优先级、中断处理程序及中断任务等相关概念。

实时操作系统充分利用中断来改变CPU执行程序的顺序,达到实时处理的目的。

系统中所有中断控制器一共可以连接几个外部信号,则称系统有几个中断源。

CPU通过读取中断状态寄存器,判别出哪个信号有变化,就认为该信号对应的外部事件发生,正在请求CPU处理。

CPU接到请求后,先仲裁该中断源的优先级是否比当前正在执行的任务优先级更高。

若更高,则中断当前正在执行的程序而转向执行对应于该外部信号的中断处理程序。

中断处理程序的长度是有限的,因而,有些系统中,每个中断处理程序还可以对应一个任务入口使中断发生时执行任务重的代码,以便得到更多处理。

这一任务提交给操作系统作为任务调度。

这种与中断级对应、由外部事件驱动的任务称之为中断任务。

中断优先级:

操作系统对每个中断源指定了优先级,称之为中断优先级。

在多个中断源同时发生申请时,CPU按照优先级的高低顺序处理。

这种总是保证优先级最高的任务占用CPU的方式,称之为按优先级抢占式调度。

中断源及中断优先级是实时系统赖以工作的基础。

6.实时操作系统

实时操作系统(RTOS)是具有实时性且能支持实时控制系统工作的操作系统。

其首要任务是调度一切可利用的资源来完成实时控制任务,其次才着眼于提高计算机系统的使用效率,其重要的特点是能满足对时间的限制和要求。

在任何时刻,它总是保证优先级最高的任务占用CPU。

系统对现场不停机地监测,一旦有事件发生,系统能即刻做出相应的处理。

这除了由硬件质量作为基本保证外,主要由实时操作系统内部的事件驱动方式及任务调度来决定。

实时操作系统是能够根据实际应用环境的要求对内核进行裁剪和重配置的操作系统。

根据其面向实际应用领域的不同其组成也有所不同。

但一般都包括以下几个重要组成部分:

实时内核;网络组件;文件系统;图形用户界面;

实时操作系统与一般的操作系统有一定的差异。

IEEE的Unix委员会规定了实时操作系统必须具备以下几个特点:

支持异步事件的响应;

中断和调度任务的优先级机制;

支持抢占式调度;

确定的任务切换时间和中断延迟时间;

支持同步;

常见的嵌入式操作系统:

VxWorks,uC/OS,WindowsCE,Linux…

7.任务管理

实时操作系统中的任务和操作系统中的进程相似。

它是具有独立功能的无限循环程序段的一次运行活动。

运行的任务状态有4种:

运行态:

获得CPU控制权。

就绪态:

进入任务等待队列,通过调度转为运行状态。

挂起态:

任务发生阻塞,移除任务等待队列,等待系统实时事件的发生而唤醒,从而转为就绪或运行。

休眠态:

任务完成或错误等原因被清除的任务,也可以认为是系统中不存在的任务。

任何时刻系统中只能有一个任务在运行状态,各任务按级别通过时间片分别获得对CPU的访问权。

任务就绪后进入任务就绪态等待队列。

通过调度程序使它获得CPU和资源使用权,从而进入运行态。

任务在运行时因申请资源等原因而挂起,转入挂起态,等待运行条件的满足。

当条件满足后,任务被唤醒进入就绪态,等待系统调度程序依据调度算法进行调度。

任务的休眠太是任务虽然在内存中,但不被实时内核所调度的状态。

任务还有一种状态,即被中断状态,它指任务在运行态时又中断请求到达,系统响应中断,转而执行中断服务子程序,任务被中断后所处的状态。

它不同于挂起态和就绪态。

在宏观上系统中可能有多个任务同时运行,但微观上只能有一个任务在运行态。

调度(Scheduler)是操作系统的主要职责之一,它决定该轮到哪个任务运行。

往往调度是基于优先级的,根据其重要性不同赋予任务不同的优先级。

CPU总是让处在就绪态的优先级最高的任务先运行。

实时操作系统中常用的任务调度算法包括基于优先级的抢占式调度算法、统一优先级的时间片轮转调度算法和单调速率调度算法。

1.基于优先级的抢占式调度算法(P26-P30)

抢占式调度算法

优先级反转

解决优先级反转的方法:

优先级继承和优先级封顶

2.同一优先级的时间片轮转调度算法

3.单调速率调度算法

8.任务间的通信和同步

任务间的通信和同步有两种方式:

共享数据结构和消息机制。

共享数据结构:

实现任务间通信的最简单方法是共享数据结构。

共享数据结构的类型可以是全局变量、指针、缓冲区等。

在使用共享数据结构时,必须保证共享数据结构使用的排他性;否则,会导致竞争和对数据时效的破坏。

因此,在使用共享数据结构时,必须实现存取的互斥机制。

实现互斥比较常用的方法有:

开/关中断、设置测试标志、禁止任务切换以及信号量机制等。

消息机制:

任务间的另一种通信方式是使用消息机制。

任务可以通过系统服务向另一个任务发送消息。

消息通常是一个指针型变量,指针指向的内容就是消息。

消息机制包括消息邮箱和消息队列。

第二章

1.嵌入式软件的开发流程

1)需求分析阶段;

2)设计阶段;

在设计阶段引入DARTS的设计方法。

DARTS设计方法是结构化分析/结构化设计的扩展。

它给出划分任务的方法,并提供定义任务间接口的机制。

DARTS设计方法的设计步骤如下:

(1)数据流分析

(2)划分任务

(3)定义任务间的接口

3)生成代码阶段

(1)代码编程

(2)交叉编译和链接

(3)交叉调试

(4)测试

4)固化阶段

2.板级支持包

板级支持包是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。

板级支持包将实时操作系统和目标应用环境的硬件连接在一起,它不可避免地使用了硬件设备的特性,具有很强的硬件相关性。

板级支持包的实现中包含了大量的与处理器和设备驱动相关的代码和数据结构。

板级支持包完成的功能大体有以下两个方面:

在系统启动时,对硬件进行初始化,比如对设备的中断、CPU的寄存器的内存区域的分配等进行操作。

这个工作是比较系统化的,要根据CPU的启动、系统的嵌入式操作系统的初始化以及系统的工作流程等多方面要求来决定这一部分BSP应该完成什么功能。

为驱动程序提供访问硬件的手段。

驱动程序经常要访问设备的寄存器,对设备的寄存器进行操作。

如果整个系统时统一编址,开发人员可以直接在驱动程序中用C语言的函数就可以访问。

但是,如果系统为单独编址,那么C语言就不能够直接访问设备中的寄存器,只有用汇编语言编写的函数才能进行对外围设备寄存器的访问。

BSP就是上层的驱动程序提供访问硬件设备寄存器的函数包。

第四章

1.ARM流水线结构

计算机中1条指令的执行可以分若干个阶段:

◆取指:

从存储器中取出指令(fetch);

◆译码:

指令译码(dec);

◆取操作数:

假定操作数从寄存器组中取(reg);

◆执行运算(ALU);

◆存储器访问:

操作数与存储器有关(mem);

◆结果写回寄存器(res)。

各个阶段的操作是独立的。

因此,可以采用流水线的重叠技术,可以大大提高系统的性能。

2.ARMAMBA接口(P116~117)

ARM处理器内核可以通过内部总线选用Cache等部件,或通过协处理器接口扩充各种处理器;也可以通过现金微控制器总线架构AMBA来扩展不同体系架构哦的宏单元及I/O不见。

AMBA事实上已经成为片上总线OCB(OnChipBus)标准。

AMBA有现金高性能总线AHB、先进系统总线ASB和先进外围总线APB3类总线,如图4-9所示。

图4-9典型的基于AMBA的系统

ASB是目前ARM常用的系统总线,用来连接高性能系统模块,它支持突发(burst)方式数据传送。

先进高性能总线AHB不但支持突发方式的数据传送,而且还支持分离式总线事务处理,以进一步提高总线的利用效率。

特别在高性能的ARM架构系统,AHB有逐步取代ASB的趋势。

先进外围总线APS为外围宏单元提供了简单的接口。

也可以把APS看成先进系统总线ASB的余部,为外围宏单元提供了最简易的接口。

通过测试接口控制器TIC,AMBA提供了模块测试的途径。

允许外部测试者作为ASB总线的主设备来分别测试在AMBA上的各个模块。

3.ARM处理器模式

ARM体系结构支持7种处理器模式:

用户模式(usr):

正常程序执行模式。

FIQ模式(fiq):

支持高速数据传送或通道处理。

IRQ模式(irq):

用于通用中断处理。

管理模式(svc):

操作系统保护模式。

中止模式(abt):

实现虚拟存储器/或存储器保护。

未定义模式(und):

支持硬件协处理器的软件仿真。

系统模式(sys):

运行特权操作系统任务。

在软件控制下可以改变模式,外部中断或异常处理也可以引起模式发生改变。

大多数应用程序在用户模式下执行。

当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常(exception)发生。

这允许操作系统来控制系统资源的使用。

4.异常

异常由内部或外部源产生并引起处理器处理一个事件,例如外部中断或试图执行未定义指令都会引起异常。

在处理异常之前,处理器状态必须保留,以便在异常处理程序完成后,原来的程序能够重新执行。

同一时刻可能出现多个异常。

 

ARM支持7种类型的异常。

异常类型

模式

正常地址

高向量地址

复位

管理

0x00000000

0xFFFF0000

未定义指令

未定义

0x00000000

0xFFFF0000

软件中断(SWI)

管理

0x00000000

0xFFFF0000

预取中止(取指令存储器中止)

中止

0x00000000

0xFFFF0000

数据中止(数据访问存储器中止)

中止

0x00000000

0xFFFF0000

IRQ(中断)

IRQ

0x00000000

0xFFFF0000

FIQ(快速中断)

FIQ

0x00000000

0xFFFF0000

异常出现时,异常模式分组的R14和SPSR用于保存状态。

异常出现后,强制从异常类型对应的固定存储器地址开始执行程序。

这些固定的地址成为异常向量(exceptionvectors)。

当处理异常返回时,把SPSR传送到CPSR,R14传送到PC。

这可用两种方法自动完成,即:

Ø使用带“S”的数据处理指令,将PC作为目的寄存器。

Ø使用带回复CPSR的多加载指令。

参考以下内容:

当一个异常出现以后,ARM微处理器会执行以下操作:

(1)、将下一条指令的地址存入相应连接寄存器LR,以便使程序在处理异常返回时能从正确的位置重新开始执行。

若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存的是当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。

例如:

在软件中断异常SWI,指令MOVPC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。

(2)、将CPSR复制到相应的SPSR中。

(3)、根据异常类型,强制设置CPSR的运行模式位。

(4)、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

另外,ARM处理器可以设置中断禁止位,以禁止中断发生。

如果异常发生时,处理器处于Thumb状态,当异常向量地址载入PC时,处理器自动切换到ARM状态。

异常处理完毕之后,ARM微处理器会执行以下操作从异常返回:

(1)、将连接寄存器LR的值减去相应的偏移量后送到PC中。

(2)、将SPSR复制回CPSR中。

(3)、若在进入异常处理时设置了中断禁止位,要在此清除。

可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令。

当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,会返回到主程序继续执行。

补充:

5.比较windowsCE和其他嵌入式操作系统的区别?

从目前市场占有率来看,国内在嵌入式领域主要使用的操作系统有WindowsCE,VxWorks、Linux及PalmOS。

由于本书主要介绍WindowsCE,因此,下面列出了WindowsCE和其他嵌入式操作系统的一些主要区别,如表6.2所示。

表6.2WindowsCE和其他主要嵌入式操作系统的主要区别

WindowsCE

其他OS

多媒体支持

友好的用户界面;WindowsMediaPlayer9,支持mp3,wav,avi,wmv…IE6&PocketIE

对音视频支持有限

没有商业的网站浏览器

编程接口

Win32API

MFC,ATL,STL…

COM,ActiveX

.NETCompactFramework

EVB,EVC,VS2005…

不同的编程接口

常用的C/C++&j2me

镜像大小

对于一些特殊的应用镜像可能过大

VxWorks最小:

8k

µC/OS-II最小:

2k

实时性

硬实时系统

VxWorks支持硬实时

6.比较进程和线程的不同之处。

进程是由进程控制块、程序段、数据段三部分组成。

同进程相比,线程是真正的执行单元。

线程除了能够访问进程的资源外,每个线程还拥有自己的栈。

一个进程是一个正运行的应用程序的实例。

它由两个部分组成:

一个是操作系统用来管理这个进程的内核对象。

另一个是这个进程拥有的地址空间。

这个地址空间包含应用程序的代码段、静态数据段、堆、栈,非XIP(ExecuteInPlace)DLL。

从执行角度方面看,一个进程由一个或多个线程组成。

一个线程是一个执行单元,它控制CPU执行进程中某一段代码段。

一个线程可以访问这个进程中所有的地址空间和资源。

一个进程最少包括一个线程来执行代码,这个线程又叫做主线程。

7.在WindowsCE5.0中,用户控件分成了64个槽(slot),每个槽大小32MB,同一个进程只能有一个槽。

WindowsCE5.0操作系统支持32个进程,每个进程有32MB的虚拟地址空间。

8.驱动程序的概念?

WINCE驱动程序的分类?

驱动程序(DeviceDriver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序。

在微软的提供MSDN中是这样定义设备驱动程序的:

设备驱动程序是与硬件设备进行通信的系统程序。

一个设备可以是物理设备,也可以是一个逻辑实体。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1