当前位置:文档之家› 基于ARM9的嵌入式的linux操作系统的移植

基于ARM9的嵌入式的linux操作系统的移植

基于ARM9的嵌入式的linux操作系统的移植
基于ARM9的嵌入式的linux操作系统的移植

学 号 0809111021

毕 业 论 文(设计)

课 题 基于ARM9的嵌入式linux 操作系统移植

学生姓名 李龙

系 别 电气工程系

专业班级 08 自动化本

指导教师 赵海波

二0 一二 年 六 月

目录

第一章绪论.............................................................................................................................. - 1 -1.1引言...................................................................................................................................... - 1 -1.2嵌入式系统的概述.............................................................................................................. - 1 -1.3嵌入式系统的开发前景...................................................................................................... - 1 -1.4本文所要研究的任务和意义.............................................................................................. - 2 -第二章Linux的内核启动分析 .............................................................................................................. - 2 - 2.1内核...................................................................................................................................... - 3 -2.2 Linux内核的特性 ............................................................................................................... - 3 -2.3内核启动过程分析.............................................................................................................. - 4 -

2.3.1 Bootloader启动过程 ........................................................................................................................ - 4 -

2.3.2 Linux内核引导过程 ........................................................................................................................ - 5 - 第三章引导加载程序U-BOOT的编译 .......................................................................................... - 12 - 3.1编译交叉环境的搭建........................................................................................................ - 12 -3.2编译源码............................................................................................................................ - 12 -3.3编译U-BOOT....................................................................................................................... - 12 -第四章编译和配置内核........................................................................................................................ - 14 - 4.1解压内核包........................................................................................................................ - 14 -4.2编辑Makefile文件 ........................................................................................................... - 14 -4.3配置并编译Kernel ........................................................................................................... - 14 -4.4介绍映像文件zImage与uImage的区别 ........................................................................ - 15 -4.5 rootfs文件系统的制作................................................................................................... - 15 -第五章内核与文件系统的烧写.......................................................................................................... - 16 - 5.1 U-BOOT的更新................................................................................................................... - 17 -5.2内核的烧写........................................................................................................................ - 19 -5.3文件系统的烧写................................................................................................................ - 19 -结论............................................................................................................................................................... - 22 - 参考文献 ..................................................................................................................................................... - 23 - 致谢............................................................................................................................................................... - 24 -

图表清单

图2-1完整的Linux的各层次概述............................................... - 3 - 图2-2典型固态存储设备的物理空间分配 ......................................... - 4 -图2-3linux内核启动流程...................................................... - 8 - 图4-1配置目录.............................................................. - 14 - 图5-1DNW终端............................................................... - 16 - 图5-2tftp窗口.............................................................. - 17 - 图5-3ping窗口.............................................................. - 17 - 图5-4镜像的下载............................................................ - 18 - 图5-5擦除u-boot的分区..................................................... - 18 - 图5-6下载内核镜像.......................................................... - 19 - 图5-7下载文件系统.......................................................... - 20 - 图5-8擦除分区过程.......................................................... - 21 - 图5-9烧写文件系统.......................................................... - 21 -

基于ARM9的嵌入式linux操作系统移植

摘要

随着电子技术的不断更新,嵌入式已经深入到各行各业了,嵌入式系统的开发已成为热点了,在智能家电,数字移动终端等这些行业嵌入式软件开发的需求下,嵌入式集成开发环境已经成为目前嵌入式系统发展的趋势,嵌入式系统的核心是嵌入式操作系统,在此之上开发可以减少嵌入式开发的工作量,增强嵌入式应用软件的可移植性。

Linux作为优秀的开源操作系统软件被广泛应用到嵌入式操作系统中,它的实时性,可移植性,支持大容量的内存,MMU(微控制器),和I/O系统等。

本课题的研究内容主要分为以下几个方面:

研究嵌入式linux从模块到函数不同级别上的分析,硬件平台是基于CPU: 三星S3C2440A,核心ARM920T,典型主频400MHZ;SDRM: 64Mbyte,FLASH: NOR FLASH: 24M字节(用于存放bootloader)NAND FALSH: 64M字节;嵌入式系统的概念和现状;嵌入式系统的开发模式;介绍内核启动过程和内核的裁剪;Bootloader 启动分析;嵌入式linux 的移植;嵌入式linux系统的开发环境工具链的生成和集成开发环境的搭建。

关键词:嵌入式系统;linux内核;Bootloader;移植集成开发环境

Based on the linux operating system ARM9 embeded

transplantaion

Abstract

Along with the electronic technology unceasing renewal, the embedded has penetrated into all trades and professions, the embedded system development has become the hot spot, in the intelligent home appliances, digital mobile terminal embedded software development demand in these industries, embedded integrated development environment has become the development trend of embedded system, the embedded system is the core of embedded operating system, on this development can reduce the embedded development work load, enhanced the transplant of embedded application software.

Linux as excellent open source operating system software has been widely applied to the embedded operating system, its real-time performance, portability, supports large capacity memory, MMU (microcontroller), and I / O system.

This research mainly divides into the following several aspects:

Research on Embedded Linux from the module to the function of different levels of cutting, hardware platform is based on the CPU: S3C2440A core ARM920T, Samsung, 400MHZ SDRM: typical frequency; 64Mbyte, FLASH: NOR FLASH: 24M bytes (for bootloader) NAND FALSH: 64M byte; embedded system concept and current situation; embedded system development model; introduce start kernel and kernel tailoring; embedded Linux transplantation; Linux embedded system development environment tool chain generation and integrated development environment to build.

Key words: embedded system kernel;Linux;Bootloader;transplantation;integrated development environment.

铜陵学院毕业论文(设计)

第一章绪论

1.1引言

随着计算机技术、通信技术以及Internet的飞速发展。嵌入式系统已得到越来越广泛的应用。与此同时,嵌入式系统的复杂性也在不断增加,嵌入式操作系统已经成为其中最重要的组成部分。目前,市场上存在着众多的嵌入式操作系统,而在这些系统之中,兼有Linux和嵌入式优点的嵌入式Linux操作系统,凭借其在结构清晰、源代码开放性、裁剪性好,开发与使用均易实现等方面的优势,拥有巨大的市场前景和商业机会。当前嵌入式Linux的一个热点应用就是将Linux内核移植到一些典型的微控制器和微处理器上,提供操作系统层面支持,以实现嵌入式系统用软件的开发。

此研究基于Linux 2.6内核的嵌入式Linux系统,分析了所面临的理论问题、关键技术,实现了Linux内核在ARM9平台上的运行。

1.2嵌入式系统的概述

嵌入式系统的出现最初是用于单片机的。随着单片机的出现,使得家电、工业仪器仪表、工业机器人、通信设备等产品可以通过内嵌集成的电子装置来获得的极佳的性能:更方便使用、速度更快、价格更便宜。这些装置虽然基本上具备了嵌入式的应用功能特点,但是这些的应用单一的使用八位的芯片,仅能执行一些单线程程序,根本说不上“system(系统)”的概念。

从20世纪80年代年代以后,软件规模大大提升,所以对实时性要求更高,嵌入式系统进入了用“操作系统”编写应用软件的时代,可以进一步缩短开发周期,降低开发成本,大大提高了效率,具有代表性的操作系统如:VxWorks,PalamOS,wince,UNIX等。就这样实时内核慢慢发展为现在很火的实时操作系统(RTOS Real Time Operating System)。

嵌入式系统开发就是对于所有电子设备除了电脑之外的上操作系统的开发,开发对象涉及领域包括手机,手持设备,机电,仪表仪器等。嵌入式系统围绕计算机技术为基础,以应用为中心,软硬件都可裁剪,适用于某些应用系统对可靠性、功能、体积、成本、功耗要求严格的专用的计算机操作系统。它一般由MPU(微处理器)、外围的硬件设备、用户的应用程序以及嵌入式操作系统等四个部分组成,用于实现对其他设备的控制、管理或监视等功能。嵌入式系统和具体应用有机地结合在一起,它的更新换代也是和具体产品基本同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。[3]

1.3嵌入式系统的开发前景

随着硬件性能的提高,嵌入式系统开发成为新的一个IT发展方向之一。嵌入式系统的出现可以实现多任务管理在硬件资源(如处理器、存储器等)有限的设备上,而且对控制成本很敏感,很高的实时响应要求等。随着家电终端的智能化,操作系统更显重要。手机、电子字典、PDA、可视电话、数字相机(DC)、游戏机(PSP)、DVD/MP3/MP5、U-Disk、机顶盒(Set Top Box)、数字摄像机(DV)、高清电视(HDTV)、智能机器人、网络设备、仪器仪表、GPS导航、家电控制系统、航天航空设备、医疗仪器等都是典型的嵌入式系统。

如今嵌入式系统带来的年工业产值已超过了1万亿美元,在国内,信息家电,物联网技术这几年更成了IT热点,而其实这些都是嵌入式操作系统在特定环境下的一个应用。据

- 1 -

李龙:基于ARM9的嵌入式linux操作系统移植

统计,目前国际上嵌入式操作系统多达两百多种,配套着各种各样的开发工具、用于嵌入式开发的辅助仪器设备几乎都通用且功能强大。在国内,虽然嵌入式应用很广,但该领域的自主知识却几乎还是空白。因此可见,嵌入式系统技术发展的空间难以想象,应用领域广泛。

(1) 消费类电子应用领域

(2) 智能仪器,仪表应用领域

(3) 通信信息应用领域

(4) 自动化领域

(5) 国防武器设备应用领域

(6) 生物微电子应用领域

1.4本文所要研究的任务和意义

本课题主要是基于智能家居,移动终端等电子消费产品的嵌入式软件开发的需求,在本文中以linux2.6.3内核为平台,硬件是基于arm9开发板,主要对内核的的启动过程和移植进行深入研究,相关的具体研究内容包含以下几个方面:

(1) 简单分析Linux2.6内核启动流程

研究内核的启动过程,Bootloader的研究。

(2) 研究嵌入式linux内核移植

研究u-boot的启动过程,编译配置内核,烧写linux内核,烧写根文件系统rootfs。(3 ) 嵌入式linux开发环境的建立

安装基于ARM平台的CROSS_COMPILE(交叉编译),编译内核配置。

- 2 -

铜陵学院毕业论文(设计)

- 3 -

第二章 Linux 的内核启动分析

Linux 源于UNIX ,从一开始就继承了UNIIX 的先进性,是一个真正的多任务,多用户,具有复杂内核的操作系统。他充分利用了现行的CPU 的任务切换功能,创造了多任务,多用户的环境让CPU 的功能发挥到最大作用,Linux 系统是单内核,这种内核比微内核复杂多,并且支持现有的常见的文件系统,完全支持POSIX(可移植性操作系统)的规范,几乎能运行在所有的常见的处理器上,支持广泛的外部设备,可以找到所有的设备驱动程序最主要的一点就是置于GPL(General Public Licence,共用许可证)保护下,完全免费,源代码是公开的。

2. 1内核

内核层是整个操作系统的核心部分,只要是负责各种软硬件资源的驱动,协调与调度。Linux 内核层的主要功能模块分以下几个部分:进程管理、CPU 和存储管理、文件系统、设备管理和驱动、网络支持,以及系统的初始化与系统调用等。[4]

内核的结构图:

图2-1 完整的Linux 的各层次概述

2. 2 Linux 内核的特性

(1) 支持动态加载内核模块,允许在需要的时候动态卸除和加载部分内在代码。

(2)支持对称多处理(SMP )机制。

(3)内核可抢占,允许在内核运行的任务优先执行的能力。

(4)支持内核线程,对于内核来说,线程与进程一样,只是线程共享资源。

应用程序 C 库 核心 内核 设备驱动程序 硬件 网络 设备驱动程序 VFS 文件系统 内存管理 进程管理 特定于体系结构的代码 系统调用 用户空间 内核空间

李龙:基于ARM9的嵌入式linux 操作系统移植

- 4 -

(5)提供具有设备类的面向对象的设备模型,热插播事件,已经用户空间的设备文件系统。 (6)Linux 是开源代码,其自由空间大。

2. 3 内核启动过程分析

一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader ),Linux 内核,文件系统,应用程序。其中Bootloader 是系统启动或复位以后执行的第一段代码它主要用来初始化处理器及外设,然后调用Linux 内核。Linux 内核在完成系统的初始化之后才能挂载根文件系统(Root Filesystem )。作为系统的核心组成部分,它可以提供Linux 系统中数据和文件的存储区域,一般它还包括运行应用软件和系统配置文件所需要的C 库。嵌入式系统的灵魂可以说是应用程序,通常嵌入式系统所要达到的目标就是通过设计应用程序所实现的。任何硬件上设计精良的嵌入式系统,如果没有应用程序的支持都没有实用

意义。

[7][8]

图2-2 典型固态存储设备的物理空间分配

2.3.1 Bootloader 启动过程

Bootloader 在运行过程中具有执行用户输入的命令和初始化系统等作用,其最根本的功能是为了启动Linux 内核做一些准备工作。

(1)Bootloader 的概念和作用:

Bootloader 是系统上电后运行的第一段程序,类似于PC 机上的BIOS(Basic Input Out System 基本输入输出系统),所以也称作为嵌入式系统的引导加载程序,由于很少采用磁盘而使用Flase(非易失性存储器)作为主要存储介质,在完成对硬件设备的初始化,建立内存空间映射图,将软硬件环境带到一个合适的状态。他会将Flash 中的Linux 内核拷贝到RAM 中去,然后直接跳转到内核的第一条指令处继续执行即跳转到MEM_ATART+0x8000地址处,其中0x8000是相对于内核首地址的偏移量,然后启动Linux 内核(kernel ),所以Linux 内核的启动和Bootloader 是分不开的,若要研究Linux 内核的启动过程,就必须得清晰认识Bootloader 的启动流程,这样对嵌入式系统的启动流程有更深入的掌握。

(2)Bootloader 的启动流程

不同厂商的处理器核的嵌入式操作系统在上电或复位后执行的第一条指令所在地址一般不相同,对于三星ARM920T 处理器来说,该地址为0x00000000。对于大多数的嵌入式系统,通常把Flash 等非易失性存储器映射到这个地址处,那么位于该存储器的最前端就是Bootloader 的程序代码。针对不同类型的存储器,Bootloader 的执行流程也会不同。嵌入式系统中大都采用Nor Flash 和Nand Flash 两种, 它们之间的区别在于:Nand Flash 不支持

铜陵学院毕业论文(设计)

- 5 -

XIP(eXecute In Place 芯片内执行),所以要想执行Nand Flash 上的代码,必须先将其拷贝到 RAM 中去,然后跳到 RAM 中去执行;而Nor Flash 支持芯片内执行(XIP 这样代码可以在Flash 上直接执行而不必拷贝到RAM 中去执行。[5] Bootloader 启动过程多数包括两个阶段即stage1和stage2。

(3)Bootloader 实现的功能

以下,对这两个阶段启动流程进行分析,Bootloader 的启动过程多数分为两个阶段。第一阶段主要依赖于CPU 体系结构的硬件初始化代码,由于所做的操作针对性强,依附于硬件,一般用ARM 汇编编程实现;第二阶段考虑到实现功能的复杂性,程序代码的可读性和可移植性,一般采用C 语言编程实现。启动过程中,在完成第一阶段任务后,通过跳转指令B 或BL 等可直接跳转到第二阶段C 程序的入口处,也可以通过 LDR ,MOV 指令实现上述功能,此外,C 程序的入口不一定是主函数main()函数。

第一阶段和第二阶段的主要任务如下。

Bootloade 的第一阶段的主要任务:

① 基本硬件初始化(屏蔽所有中断,关闭CPU 内部指令,数据CACHE 等)。

② 为第二阶段准备ARM 空间(设置CPU 的控制寄存器参数,以便能正常使用RAM 以

及检测RAM 大小等)。

③ 如果是从某个存储器(Nand Flase )中启动则复制Bootloader 第二阶段代码到RAM 。 ④ 设置ARM 各种模式下的堆栈指针堆栈指针SP 设置在1MB 的RAM 空间的最顶端(堆

栈向下生长)。

⑤ 跳转到第二阶段C 程序入口处,进入第二阶段。

在第一阶段全部就绪后,跳转到stage2去执行。

Bootloader 的第二阶段的主要任务:

① 初始化本阶段要用到的硬件设备。

② 检测系统的内存映射。

③ 将内核映像和根文件系统从Flase 复制到ARM 。

④ 为操作系统的内核设置启动参数。

⑤ 调用操作系统内核。

Bootloader 调用Linux kernel 的方法是直接跳转到内核的第一条指令处。在跳转时必须满足下列条件:

① CPU 寄存器的设置:R0为0;R1为机器类型ID ;R2为启动参数,标记列表在RAM

中的起始基地址。(机器类型参见 linux/arch/arm/tools/mach-types 目录)。

② CPU 模式:CPU 必须设置为SVC 模式,必须禁止中断(IRQs 和FIQs)。

③ MMU 和CACHE 的设置:MMU 必须关闭;指令CACHE 可以打开也可以关闭;数

据CACHE 必须关闭。

2.3.2 Linux 内核引导过程

(1) linux 内核启动方式

Bootloader 完成系统初始化工作后,将运行机制移交给Linux 内核。根据内核是否压缩以及内核是否在本地执行,分为以下启动方式:

RAM 自解压 :压缩格式的内核由开头一段自解压代码和压缩内核数据组成,由于以

李龙:基于ARM9的嵌入式linux操作系统移植

压缩格式存放,内核只能以非XIP方式运行。RAM自解压过程如下:压缩内核存放于ROM/Flash中,Bootloader启动后加载到内存中的临时空间,然后跳转到压缩内核入口地址ZTEXTADDR执行自解压代码,内核被解压到最终的目的地址ZRELADDR然后运行。压缩内核所占据的临时空间随后被Linux回收利用。这种方式的内核在嵌入式产品中较为常见。非压缩:非XIP方式是指在运行之前需对代码进行重定位。该类型的内核以非压缩方式存放在Flash中,启动时由Bootloader加载到内存后运行。XIP该类型的内核以非压缩格式存放在ROM/Flash中,不需要加载到内存就能运行,Bootloader直接跳转到其存放地址执行。Data段复制和BSS 段清零的工作由内核自己完成。这种启动方式常用于内存空间有限的系统中,另外,程序在ROM/Flash中运行的速度相对较慢。[4]

Head-armv.s文件位于./arch/arm/kernel/目录下,是Boot Loader将控制权交给内核后执行的第一个程序。下面是head-armv.s的基本运行过程:

①配置系统REGISTER;

②初始化ROM、RAM以及总线控制REGISTER等;

③设置堆栈指针,将BSS段清零;

④修改PC指针,跳转到./init/main.c中的start_kernel函数,开始Linux系统的初始化。

内核启动的物理地址ZRELADDR在arch/arm/boot/Makefile中设定。

# arch/arm/boot/Makefile

# Note: the following conditions must always be true:

# ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)

# PARAMS_PHYS must be within 4MB of ZRELADDR

# INITRD_PHYS must be in RAM

ZRELADDR := $(zreladdr-y)

# zrealaddr-y is specified with 0x30008000 in arch/arm/boot/makefile.boot

PARAMS_PHYS := $(params_phys-y)

INITRD_PHYS := $(initrd_phys-y)

export ZRELADDR INITRD_PHYS PARAMS_PHYS

通过下面的命令编译内核映像,由参数-a, -e设置其入口地址为ZRELADDR,此值在上面ZRELADDR := $(zreladdr-y)指定。

quiet_cmd_uimage= UIMAGE $@

cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel

-C none -a $(ZRELADDR) -e $(ZRELADDR)

-n 'Linux-$(KERNELRELEASE)' -d $< $@

从上面分析可知道,linux内核被bootloader拷贝到RAM后,解压代码从ZTEXTADDR 开始运行(这段代码是与位置无关的PIC)。内核被解压缩到ZREALADDR处,也就是内核启动的物理地址处。相应地,内核启动的虚拟地址被设定TEXTADDR,满足如下条件TEXTADDR = PAGE_OFFSET + TEXT_OFFSET

- 6 -

铜陵学院毕业论文(设计)

内核启动的物理地址和虚拟地址满足入下条件:

ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)= virt_to_phys(TEXTADDR) 这里用的开发板为CES-2440,则有:

内核启动的虚拟地址

TEXTADDR = 0xC0008000

内核启动的物理地址

ZRELADDR = 0x30008000

如果直接从flash中启动还需要设置ZTEXTADDR地址。

(2)Linux系统初始化

程序跳转到start_kernel函数执行,在这里完成处理器结构的初始化、中断的初始化、进程相关的初始化以及内存初始化等重要工作。开启MMU和Cache。

调用decompress_kernel()解压内核,最后通过调用call_kernel()进入非压缩内核Image 的启动。下面将具体分析在此之后Linux内核的启动过程如图2-3。

- 7 -

李龙:基于ARM9的嵌入式linux操作系统移植

start

decompress_kernel()

call-kernel()

stext

start_kernel()

steup_arch()

rest_init()

init()

do_basic_setup()

prepare_namespace()

execve("/sbin/init",argv_init,evep_init)

图2-3 linux内核启动流程

(3) Linux 内核子模块初始化

start_kernel()函数是Linux内核通用的初始化函数。无论对于什么体系结构的Linux,都要执行这个函数。Start_kernel()函数是内核初始化的基本过程。下面按照函数对内核模块初始化的先后顺序进行分析。

start_kernel函数位于init/main.c

asmlinkage void __init start_kernel(void)

{

char * command_line;

extern struct kernel_param __start___param[], __stop___param[];

- 8 -

铜陵学院毕业论文(设计)

smp_setup_processor_id(); /*指定当前的cpu的逻辑号,这个函数对应于对称多处理器的设置,当系统中只有一个cpu的情况,此函数为空,什么也不做*/

lockdep_init(); /* 初始化lockdep hash 表*/

/* 初始化irq */

local_irq_disable();

early_boot_irqs_off();

early_init_irq_lock_class();

/* 锁定内核、设置cpu的状态为present,online等状态、初始化页表、打印内核版本号等信息、设置体系结构、为cpu分配启动内存空间,在此期间中断仍然处于关闭状态*/

lock_kernel();

boot_cpu_init();

page_address_init();

printk(KERN_NOTICE);

printk(linux_banner);

setup_arch(&command_line);

setup_per_cpu_areas();

smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */

/*在打开任何中断之前打开调度器*/

sched_init();

/*关闭任务抢占功能,因为早期的调度器功能比较脆弱,直到第一次调用cpu_idle()*/ preempt_disable();

/* 建立内存区域链表节点,对于单cpu节点数为1 */

build_all_zonelists();

/* 发通知给每个CPU,处理每个CPU的内存状态*/

page_alloc_init();

/* 分析早期没命令参数*/

printk(KERN_NOTICE "Kernel command line: %s\n", saved_command_line);

parse_early_param();

/* 分析命令参数*/

parse_args("Booting kernel", command_line, __start___param,

__stop___param - __start___param,

&unknown_bootoption);

/* 排序内核创建的异常表*/

sort_main_extable();

unwind_init();

/*设置陷阱门和中断门*/

trap_init();

/*初始化内核中的读-拷贝-更新(Read-Copy-Update RCU)子系统*/

- 9 -

李龙:基于ARM9的嵌入式linux操作系统移植

rcu_init();

/*初始化IRQ */

init_IRQ();

/* 按照开发板上的物理内存初始化pid hash表*/

pidhash_init();

/*初始化计时器*/

init_timers();

/* 高解析度&高精度的计时器(high resolution)初始化*/

hrtimers_init();

/*初始化软中断*/

softirq_init();

/* 初始化时钟资源和普通计时器的值*/

timekeeping_init();

/* 初始化系统时间*/

time_init();

/*为内核分配内存以存储收集的数据*/

profile_init();

/* 开中断*/

if (!irqs_disabled())

printk("start_kernel(): bug: interrupts were enabled early\n");

early_boot_irqs_on();

local_irq_enable();

/*

* HACK ALERT! This is early. We're enabling the console before

* we've done PCI setups etc, and console_init() must be aware of

* this. But we do want output early, in case something goes wrong

*/

/* 初始化控制台,为了能够尽早地帮助调试,显示系统引导的信息*/ console_init();

if (panic_later)

panic(panic_later, panic_param);

/*如果定义了CONFIG_LOCKDEP宏,则打印锁依赖信息,否则什么也不做*/ lockdep_info();

/*

* Need to run this when irqs are enabled, because it wants

* to self-test [hard/soft]-irqs on/off lock inversion bugs

* too:

*/

- 10 -

铜陵学院毕业论文(设计)

/* 如果定义CONFIG_DEBUG_LOCKING_API_SELFTESTS宏,则locking_selftest()是一个空函数,否则执行锁自测*/

locking_selftest();

#ifdef CONFIG_BLK_DEV_INITRD

if (initrd_start && !initrd_below_start_ok &&

initrd_start < min_low_pfn << PAGE_SHIFT) {

printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - "

"disabling it.\n",initrd_start,min_low_pfn << PAGE_SHIFT);

initrd_start = 0;

}

#endif

进入init进程后,将执行init()函数负责完成挂接根文件系统、初始化设备驱动和启动用户空间的init进程。然后init 进程会执行用户传递过来的init=启动参数,执行用户指定的命令,或者执行以下几个进程之一:

execve("/bin/init",argv_init,envp_init)

execve("/etc/init",argv_init,envp_init)

execve("/bin/sh",argv_init,envp_init)

execve("/sbin/init",argv_init,envp_init)

当所有的初始化工作结束后,系统处于闲置(idle)状态,这时cpu_idle()函数会被调用。并等待用户程序的执行。至此,整个Linux内核启动完毕。

- 11 -

李龙:基于ARM9的嵌入式linux操作系统移植

第三章引导加载程序U-BOOT的编译

3.1编译交叉环境的搭建

在这里需要用到两个交叉编译工具,arm-linux-gcc-4.3.2或arm-linux-gcc-3.4.1,其中arm-linux-gcc-4.3.2是编译u-boot,内核zImage,文件系统rootfs.yaffs的,而

arm-linux-gcc-3.4.1(带有LCD触摸屏的ARM板这里不做介绍了)是用来编译文件系统rootfs-qt.yaffs的。[9]

(1) 首先把CROSS_TOOLS(交叉编译工具)拷贝至linux主机任意目录下

(2) 安装arm-linux-gcc-4.3.2至/usr/local/arm下执行命令:

# t ar zxvf arm-linux-gcc-4.3.2.tgz –C

安装好后查看编译器安装情况用命令cd /local /arm -ls 可以看到版本了。

(3) 增加编译器的路径

在终端编辑/etc/bashrc文件,在最后增加路径export/usr/local/arm/4.3.2/bin :bin:$PATH 以后编译内核或其他应用程序均可用arm-linux-gcc- 来指定交叉编译器。可以使用命令echo $PATH 来查看环境变量中是否有usr/local/arm/4.3.2/bin的路径变量。

(4)安装内核镜像uImagede的制作工具mkimage如下:

# apt-get install uboot-mkimage

3.2 编译源码

在官网上下载源码包u-boot-ces2440.tar.gz, linux-2.6.30.4-ces2440.tar.gz拷贝到linux工作目录下。

?Uboot : u-boot-ces2440.tar.gz

?Kernel : linux-2.6.30.4-ces2440.tar.gz

3.3 编译U-BOOT

(1) U-BOOT是linux 的主要系统引导部分,它可以用来引导内核镜像和文件系统的。生成的镜像u-boot.bin用于NAND FLASH启动。

解压u-boot-ces2440.tar.gz,并进入U-BOOT目录。

# tar zxvf u-boot-ces2440.tar.gz // 解压命令

# cd u-boot-ces2440

(2) 把arm-linux-gcc-4.3.2 交叉编译工具的安装路径加入到PATH中,因为编译u-boot的时候要用到。

# export PATH=$PATH:/usr/local/arm/4.3.2/bin

(3) 配置并编译U-BOOT

# make mrproper

# make ces2440_config

# make

- 12 -

铜陵学院毕业论文(设计)

检验u-boot.bin,u-boot是否已生成。

include lib_ppc rules.mk

lib_arm lib_sh System.temp

lib_avr32 lib_sparc tools

lib_blackfin MAINTAINERS u-boot

libfd MAKEALL u-boot.bin

lib_generic Mkefile u-boot.lds

lib_i386 mkconfig u-boot.map

lib_m68k nand_spl u-boot.serc

lib_miroblaze net

其中u-boot是ELF格式的文件,u-boot.bin是RAW的二进制文件,经过上述编译后,生成了启动程序的映像文件,就可以下载到目标板上进行启动。

- 13 -

李龙:基于ARM9的嵌入式linux操作系统移植

第四章编译和配置内核

4.1解压内核包

linux-2.6.30.4-ces2440.tar.gz拷贝到PC 机linux工作目录下,进入这个目录,然后解压这个Linux源码包。

终端命令:tar –zxvf – linux -2.6.30.4 –ces2440.tar.gz

[root@localhost linux-2.6.30.4-ces2440] # ls

arch documentaion kbulid

block drivers kernel

ces2440_defconfig firmware lib

ces2440_defconfig.old fs MAINTAINERS

COPYING include Makefile

CREDITS inits Makefile~

crypto ipc mm

4.2编辑Makefile文件

进入解压的目录后,运行命令:

vim Makefile 找到“CROSS_COMPILE=”运行,将它改为

CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux-(或者你的系统所安装的

arm-linux-gcc 的编译器路径)。[10]

193 ARCH ?=arm

194 CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-n

195 # architecture as present in compile.h

196 UTS-MASHINE :=$ARCH

197 SRCARCH :=$ARCH

198 Additional ARCH settings for x86

199 ifeq ($(ARCH),i386)

SRCARCH :i386

4.3 配置并编译Kernel

终端输入命令:#make clean//清除以前的配置文件

终端输入命令:# make menuconfig 进入配置栏的“Load an Alternate Configuration

File”

图4-1 配置目录

- 14 -

centos操作系统简介

centos操作系统简介 CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。CentOS,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是linux的一个发行版本。CentOS并不是全新的linux发行版,倘若一说到RedHat这个大名,大家似乎都听过,在RedHat家族中有企业版的产品,它是Red Hat Enterprise Linux(以下称之为RHEL),CentOS正是这个RHEL的克隆版本,RHEL是很多企业采用的linux发行版本,需要向RedHat付费才可以使用,并能得到付过费用的服务和技术支持和版本升级。这个CentOS可以像REHL一样的构筑linux系统环境,但不需要向RedHat付任何的费用,同样也得不到任何有偿技术支持和升级服务。 CentOS计划是在2003年红帽决定不再提供免费的技术支持及产品认证之后的部份"红帽重建者"(Red Hat rebuilders)之一。 CentOS和Linueox、组装Linux (White box Linux)、Tao Linux 、X/OS Linux,及科学Linux (Scientific Linux)等都以红帽所发布的源代码原件重建Red Hat Enterprise Linux的翻版,并修正了已经发现了的redhat的bug。 CentOS是"Caos Linux"独立计划的一个分枝,在Lawrence Berkeley 国家实验室担任管理员与程序设计师的Kurtzer表示。但后来Caos基金会最受欢迎的计划变成是RHEL 的重建。 历史 Red Hat公司的产品中,有RedHat Linux(如Redhat8,9)和针对企业发行的版本Red Hat Enterprise Linux,都能够通过网络FTP免费的获得并使用,但是在2003年的

嵌入式系统教案(李震)

嵌入式系统教案(李震) -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

嵌入式系统教案(李震)

嵌入式系统教案 教材:《ARM9嵌入式系统设计—基于S3C2410与Linux(第二版)》,徐英慧,马忠梅,王磊,王琳编著,北京航空航天大学出版社 课时分配:理论课32学时,实验课8学时,共40学时 第1章嵌入式系统基础 一、教学目的: 介绍嵌入式系统的基本概念,包括嵌入式系统的概念、特点及应用,由本章了解嵌入式系统的基础知识,掌握嵌入式的发展方向。 学时分配:2学时 二、教学重点: 实时操作系统的多任务内核,实时操作系统的任务管理机制 三、教学难点: 理解和掌握嵌入式系统中任务间采用的共享数据结构和消息机制等两种通信方式,嵌入式系统的优先级继承,抢占式调度和非抢占式调度间的区别。 四、教学方法: 课题讲授及嵌入式系统在精细农业中的应用实例演示 五、教学过程设计:(2学时) 一、嵌入式系统概念 (一)嵌入式系统的定义 (二)嵌入式系统的组成 (三)嵌入式系统的特点 (四)嵌入式系统的应用 (五)实时系统 二、嵌入式处理器 (一)嵌入式处理器分类 (二)微控制器的定义及特点

(三)嵌入式微处理器的定义及特点,介绍主流的微处理器,包括ARM、MIPS、MC68K、PowerPC、X86微处理器等。 (四)DSP处理器的定义及特点 (五)片上系统的定义及特点 (六)典型的嵌入式处理器 三、嵌入式操作系统 (一)操作系统的概念和分类 (二)实时操作系统 (三)常见的嵌入式操作系统 四、实时操作系统的内核 (一)任务管理 (二)任务间的通信和同步 (三)存储器管理 (四)定时器和中断管理 五、嵌入式技术发展现状及趋势 六、思考题 1、什么是嵌入式系统它由哪几部分组成(作业) 2、嵌入式系统有何特点?(作业) 3、嵌入式处理器分为哪几类? 4、ARM英文原意是什么它是一个怎样的公司其处理器有何特点 5、什么事实时系统实时系统有何特点如何划分 6、实时操作系统常用的任务调度算法有哪几种? 第2章嵌入式系统开发过程 一、教学目的: 介绍嵌入式软件的开发过程和调试手段,使学生了解嵌入式软件与普通计算机软件在开发和调试上的区别。 学时分配:2学时

嵌入式系统移植+心得

嵌入式系统作为近年来新兴的且发展很快的学科,它的应用越来越受到广大技术人员的重视。尤其起可移植性,显著的区别了通用操作系统。一款嵌入式操作系统通常运行在不同体系结构的处理器和开发板上,极大的方便了开发者开发与应用,节约了成本。 嵌入式操作系统作为移植支持嵌入式系统应用的操作系统软件,被广泛的运用于不同应用领域。纵观嵌入式系统40多年的历史,从无操作系统的嵌入式算法阶段到简单监控式的实时操作系统,一步又一步的到现在的以Internet为标志的嵌入式系统,一批又一批的先辈为其努力而奋斗。科技的革新,带动着社会的发展,人类的进步。大数据的时代必定属于我IT 人。以下我们聊一聊嵌入式系统及其移植性。 嵌入式操作系统大体分为商用型和免费型。 商用型主要是WindowsCE。Psos.os-9.qnx等其价格较为昂贵,开发成本高,广泛运用于通信。军事。航天等高端技术领域 免费型主要为Linux等主要运用于没有存储器管理单元的处理器而设置。 嵌入式基本操作共四步 主机和目标机的连接方式; UARA最经典90%的板子上,都支持的方式叫异部串行接口,也就是我们所说的串口。 USB串行接口 TCP/IP网络接口 Debug Jtag调试接口 补充说明 1.对于串口,通常用的有串口调试助手,putty工具等,工具很多,功能都差不多,会用一两款就可以; 2.对于USB线,当然必须要有USB的驱动才可以,一般芯片公司会提供,比如对于三星的芯片,USB下载主要由DNW软件来完成; 3.对于网线,则必须要有网络协议支持才可以 安装交叉编译器 方法一:分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。该方法相对比较困难,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用下列的方法二构建交叉工具链。 方法二:通过Crosstool-ng脚本工具来实现一次编译,生成交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链。 方法三:直接通过网上下载已经制作好的交叉编译工具链。该方法的优点不用多说,当然是简单省事,但与此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的,没有灵活性,所以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名其妙的错误 搭建主机

arm嵌入式系统基础教程课后答案.doc

arm 嵌入式系统基础教程课后答案【篇一:arm 嵌入式系统基础教程习题答案周立功】 /p> 1 、举出3 个书本中未提到的嵌入式系统的例子。 答:红绿灯控制,数字空调,机顶盒 2、什么叫嵌入式系统 嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的 专用计算机系统。 3、什么叫嵌入式处理器?嵌入式处理器分为哪几类? 嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。 嵌入式微处理器(embedded microprocessor unit, empu) 嵌入式微控制器(microcontroller unit, mcu) 嵌入式dsp 处理器(embedded digital signal processor, edsp) 嵌入式片上系统(system on chip) 4、什么是嵌入式操作系统?为何要使用嵌入式操作系统? 是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实 时操作系统提高了系统的可靠性。其次,提高了开发效率,缩短了 开发周期。再次,嵌入式实时操作系统充分发挥了32 位cpu 的多任务潜力。 第二章 1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务 是什么? 项目的生命周期一般分为识别需求、提出解决方案、执行项目和结 束项目 4 个阶段。识别需求阶段的主要任务是确认需求,分析投资 收益比,研究项目的可行性,分析厂商所应具备的条件。 提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。 执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定 期监控进展,分析项目偏差,采取必要措施以实现目标。 结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系 统交接给维护人员;结清各种款项。 2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险? 在一个项目中,有许多的因素会影响到项目进行,因此在项目进行 的初期,在客户和开发团队都还未投入大量资源之前,风险的评估

常见的嵌入式操作系统

常见的嵌入式操作系统 分类:嵌入式操作系统2012-12-11 10:06 459人阅读评论(1) 收藏举报嵌入式操作系统 嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠。 2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。 3.面向应用,强实时性,可用于各种设备控制当中。 国际上常见的嵌入式操作系统大约有40种左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com 的Palm,以及Symbian和Google的Android等。 一、VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是T ornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 二、Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操

嵌入式系统移植的简单介绍

嵌入式操作系统的移植 综述:嵌入式操作系统与通用操作系统的最显著的区别之一就是它的可移植性。一款嵌入式操作系统通常可以运行在不同体系结构的处理器和开发板上。为了使嵌入式操作系统可以在某款具体的目标设备上运行,嵌入式操作系统的编写者通常无法一次性完成整个操作系统的代码,而必须把一部分与具体硬件设备相关的代码作为抽象的接口保留出来,让提供硬件的OEM厂商来完成。这样才可以保证整个操作系统的可移植性。 一、移植的定义及其目的 由于嵌入式系统所使用的芯片型号多种多样,很多芯片不能直接兼容,所以通过修改部分代码,把能在甲芯片上运行的程序,也能在与之不完全兼容的乙芯片上正确运行,就叫移植. 嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行。 二、移植的方法与具体操作步骤 2.1 在进行移植时,我们的首要任务就是要建立一个最基本的开发环境。该环境具备一套跨平台开发工具。它包含有编译器、连接 器、除错器等,另外还要准备制作文档系统所需的软件。以PC机作为宿主机构建一套完整的交叉编译系统来调试目标板。而在目标平台上只需要准备一段开机程序,如Ether boot,Red boot等,此程序可以在除错阶段取得系统的映像(image)文件后启动或者直接从Flash room中来引导系统。一旦启动后就进入Linux操作系统,同时也可

以使用GDB server作为远端除错工具。 2.2 内核的移植 为了使Linux内核能在不同的目标平台上运行,要求我们根据平台的处理器类型和外围接口,对Linux内核文件进行正确的配置,同时。修改内核文件Linux移植的主要步骤。如果修改完Linux的内核文件,使其能在目标平台上正确跑起来,那么整个移植过程就基本完成了。 2.3 移植的具体步骤 (1)首先获取某一版本的Linux内核源码,根据具体的目标平台对源码进行必要的改写(主要是修改体系结构相关的部分); (2)添加一部分外设驱动(如网卡驱动、USB驱动),打造一款适合于目标平台的新的操作系统,也就是常说的内核配置或内核定制;(3)对该系统进行针对目标平台的交叉编译,生成一个内核映象文件; (4)最后通过一些手段将该映象烧写到目标平台中。 三、移植过程中如何进行剪裁 3.1 进行方式 进行的方式必须有效率的建立系统,基本可行的方法有两种: (1)从其中一个发行版本中把不必要的部份全部删掉,留下我们想要的系统。 (2)把系统所有的功能依规格从新建立起来。 3.2开发环境 要建立一个最基本的开发环境,必需具备一套跨平台的开发工具

我来说linux移植过程

我对linux移植过程的整体理解 首先,要开始移植一个操作系统,我们要明白为什么要移植。因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。 操作系统的功能能。我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。 Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。二,bootloader的重新编译。三,文件系统的制作。在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。 那么,我们开始进行移植。首先是内核。1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。至于具体如何修改,我已经写在另外一个文档里了。3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。具体设置步骤我会另加说明。4.设置好后我们需要重新编译内核,用的是make zImage命令。编译后就生成了我们自己编译好的内核,呵呵。 接下来,进行文件系统的移植。我们需要一个Yaffs2文件系统压缩包。1.复制这个压缩包到/home/dong/SoftEmede(我自己在ubuntu里建的目录,呵呵),2.解压,会生成一个文件夹。3.给内核打补丁,通过执行 ./patsh-ker.sh c /内核目录。呵呵4.进入 make menuconfig中配置选项,要选择对yaffs2的支持,具体怎么设置我写在另一个文档。 接下来,我们进行根文件制作,需要一个制作工具 mkyaffs2image.taz.还是复制到我自己的目录下,解压,安装。接着,我们需要对Busybox的移植、配置,具体移植、配置步骤我另写,呵呵。最后是构建我们自己的文件系统,到此我们已经完成了内核移植和文件系统的制作。准备移植,呵呵。今天先写到这里,累了。

五大适合STM32的嵌入式操作系统

五大适合STM32的嵌入式操作系统 基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。1、μClinuxμClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比, μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。 在内存管理上由于μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的,操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,

即使是一个无特权进程调用一个无效指针也会触发一个地 址错误,并有可能引起程序崩溃甚至系统崩溃。 μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。 μClinux对文件系统支持良好,由于μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。在对硬件的支持上,由于μClinux继承了Linux的大部分性能,所以至少需要512KB的RAM空间,lMB的ROM/Flash 空间。 在μClinux的移植方面,。μClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂。移植μClinux,目标处理器除了需要修改与处理器相关的代码外,还需要足够容量的外部ROM和RAM。 综上可知,μClinux最大特点在于针对无MMU处理器设计,

几种嵌入式实时操作系统的研究分析与比较

几种嵌入式实时操作系统地分析与比较 2008-07-04 20:54 VxWorks、μClinux、μC/OS-II和eCos是4种性能优良并被广泛应用地实时操作系统.本文通过对这4种操作系统地主要性能进行分析与比较,归纳出它们地选型依据和适用领域. 1. 4种操作系统地介绍 (1)VxWorks VxWorks是美国WindRiver公司地产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高地嵌入式操作系统.VxWorks实时操作系统由400多个相对独立、短小精悍地目标模块组成,用户可根据需要选择适当地模块来裁剪和配置系统;提供基于优先级地任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范地内存管理,以及多处理器控制程序;并且具有简明易懂地用户接口,在核心方面甚至町以微缩到8 KB. (2) μC/OS-II μC/OS-II是在μC-OS地基础上发展起来地,是美国嵌入式系统专家Jean J.Labrosse用C语言编写地一个结构小巧、抢占式地多任务实时内核.μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点. (3)μClinux μClinux是一种优秀地嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux.同标准地Linux相比,μClinux地内核非常小,但是它仍然继承了Linux操作系统地主要特性,包括良好地稳定性和移植性、强大地网络功能、出色地文件系统支持、标准丰富地API,以及TCP/IP网络协议等.因为没有MMU内存管理单元,所以其多任务地实现需要一定技巧. (4)eCos eCos(embedded Configurable operating system),即嵌入式可配置操作系统.它是一个源代码开放地可配置、可移植、面向深度嵌入式应用地实时操作系统.最大特点是配置灵活,采用模块化设计,核心部分由小同地组件构成,包括内核、C语言库和底层运行包等.每个组件可提供大量地配置选项(实时内核也可作为可选配置),使用eCos提供地配置工具可以很方便地配置,并通过不同地配置使得eCos能够满足不同地嵌入式应用要求. 2. 性能分析与比较 任务管理、任务及中断间地同步与通信机制、内存管理、中断管理、文件系统、对硬件地支持和系统移植这几方面是实时操作系统地主要性能.下面就从这几个方面着手对上述4种操作系统进行分析与比较. 2.1 任务管理 任务管理是嵌入式实时操作系统地核心和灵魂,决定了操作系统地实时性

孟祥莲嵌入式系统原理及应用教程部分习题答案

习题1 1. 嵌入式系统的概念的是什么?答:嵌入式系统是以应用为中心,以计算机技 术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。(嵌入式系统是嵌入式到对象体系中的,用于执行独立功能的专用计算机系统。) 2. 嵌入式系统的特点是什么? 答:系统内核小;专用性强;运行环境差异大;可靠性要求高;系统精简和高实时性操作系统;具有固化在非易失性存储器中的代码嵌入式系统开发和工作环境 4. 嵌入式系统的功能是什么?答:提供强大的网络服务小型化,低成本,低 功能;人性化的人机界面;完善的开发平台 5. 嵌入式系统的硬件平台由哪些部分组成?答:嵌入式系统的硬件是以嵌入式处理器为核心,由存储器I/O 单元电路,通信模块,外部设备必要的辅助接口组成的。 7. 嵌入式操作系统的主要特点是什么?答:体积小;实时性;特殊的开发调试环境。 8. 叙述嵌入式系统的分类。答:按嵌入式微处理器的位数分类可以分为4 位、 8 位、16 位、32 位和64 位等;按软件实时性需求分类可以分为非实时系统(如PDA), 软实时系统(如消费类产品)和硬实时系统(如工业实时控制系统)按嵌入式系统的复杂程度分类可以分为小型嵌入式系统,中型嵌入式系统和复杂嵌入式系统。 习题2 处理器和工作状态有哪些?

答:ARM犬态:此时处理器执行32位的的字对齐的ARS旨令。 Thumb犬态:此时处理器执行16位的,半字对齐的Thumb旨令 2.叙述ARM9内部寄存器结构,并分别说明R13 R14 R15寄存器的 作用。 答:共有37个内部寄存器,被分为若干个组(BANK,这些寄存器包括31个通用寄存器,包括程序计数器(PC指针)6个状态寄存器。R13用作堆栈指针,R14称为子程序链接寄存器,R15用作程序计数器。处理器的工作模式有哪些? 答:用户模式:ARM处理器正常的程序执行状态。 快速中断模式:用于高速数据传输或通道处理 外部中断模式:用于通用中断处理管理模式:操作系统使用的保护模式数据访问终止模式:当数据或指令预期终止时进入该模式,可用于虚拟存储器及存储保护 系统模式:运行具有特权的操作系统任务 未定义指令终止模式:当未定义的指令执行时进入该模式,可用 于支持硬件协处理器的软件仿真。 微处理器支持的数据类型有哪些? 答:ARM微处理器中支持字节(8位)、半字(16位),字(32 位)

Linux操作系统部分复习题答案

第一章 Linux系统简介 一、思考题 1.UNIX的大部分代码是用一种流行的程序设计语言编写的,该语言是什么? C语言 2.UNIX系统的特点有哪些? ·多任务 ·多用户 ·并行处理能力 ·设备无关性 ·工具 ·错误处理 ·强大的网络功能 ·开放性 3.什么是Linux?其创始人是谁? Linux是一个功能强大的操作系统,同时它也是一个自由软件,是免费的、源代码开放的、可以自由使用的UNIX兼容产品。其创始人是Linus 4.Linux操作系统的诞生、发展和成长过程始终依赖者的重要支柱都有哪些? ·UNIX操作系统 ·MINIX操作系统 ·GNU计划 ·POSIX标准 ·Internet 5.简述Linux系统的特点。 ·自由软件 ·良好的兼容性 ·多用户、多任务 ·良好的界面 ·丰富的网络功能 ·可靠地安全性、稳定性 ·支持多种平台 6.常见的Linux的发行版本有哪些? ·Red Hat Linux ·Caldera OpenLinux ·SuSE Linux ·TurboLinux ·红旗Linux ·中软Linux 二、选择题 1.Linux最初是以MINIX 操作系统为模板而开发出来的。 2.关于Linux内核版本的说法,下列选项中错误的是(C)。 A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版 C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正(补充:次版本号为偶数的是稳定版本;为奇数的则是测试版本。)

3.Linux属于自由软件。 4.自由软件的含义是软件可以自由修改和发布。 5.一下不具有多任务性的操作系统是DOS 第二章 Linux系统入门 一、思考题 1.Linux系统有哪些运行级别?其含义是什么? 可用级别为0~6,其中0:关闭系统;6:重新启动,其他略。 2.Linux系统下经常使用的两种桌面环境是什么? GNOME和KDE 3.什么是X-Window系统?它有什么特点? 图形界面(X-Window)是在Linux操作系统中提供的图形化用户界面(GUI),其支持的视窗系统也称为X,它的特点有:它采用了“客户端-服务器”模式;它是一个跨平台的操作环境。 7.默认情况下,超级用户和普通用户的登录提示符分别是什么? # 和 $ 二、选择题 1.系统引导的过程一般包括如下的几步:①MBR中的引导装载程序启动。②用户登录。③Linux内核运行。④BIOS自检。正确的顺序是④①③②。 2.Linux中使用Ctrl+Alt+BackSpace 组合键可以关闭X-Window图形用户界面。 3.字符界面下使用init命令关机所用的参数是0 。(参数6是重新启动) 4.字符界面下使用shutdown命令重启计算机时所用的参数是–r 。 5.使用man命令调阅相关的帮助信息时,用于逐页地下翻的功能键是Space 。 第三章 shell与shell命令 一、思考题 1.shell的基本功能有哪些? 命令解释执行、文件名替换、输入/输出重定向、连同管道建立、系统环境设置和shell编程。 2.Linux系统中的主要目录有哪些? /:系统的根目录 /dev:系统的设备目录 /home:用户主目录 /root:root用户主目录 /boot:Linux的启动目录 /usr:用户级目录 3.工作目录及其父目录课分别用什么表示? . 和 .. 5.常用的shell环境变量有哪些? ·HOME:用户家目录的完全路径名 ·LOGNAME:登录用户名 ·IFS:命令行内部域分割符 ·PATH:由冒号分隔的目录路径名

适合STM32的嵌入式操作系统

一下是网络收集的几种适合stm32的嵌入式操作系统,打算最近都移植一下,先做个记录。 基于STM平台且满足实时控制要求操作系统,有以下4种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这四种嵌入式操作系统的特点及不足。 1、μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU 特点进行改良,且不支持内核抢占,实时性一般。 在内存管理上由于μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的,操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,即使是一个无特权进程调用一个无效指针也会触发一个地址错误,并有可能引起程序崩溃甚至系统崩溃。 μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。 μClinux对文件系统支持良好,由于μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS 文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。

嵌入式Linux系统开发教程很完整的习题答案资料

参考答案 第一章 一、填空题。 1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。 2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。 4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。 5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。 6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。 二、选择题 1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:、存储器(SDRAM、ROM等)、设备I/O接口等。(A) A、嵌入式处理器 B、嵌入式控制器 C、单片机 D、集成芯片 2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D) A、分时多任务操作系统 B、多任务操作系统 C、实时操作系统 D、实时多任务操作系统 3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是。(B) A、Palm B、VxWorks C、Linux D、WinCE [在此处键入]

四种常见的嵌入式操作系统方案

常见的四种嵌入式操作系统 嵌入式操作系统EOS(Embedded Operating System)又称实时操作系统RTOS(Real Time Operation System)是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser 等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。 在嵌入式实时操作系统环境下开发实时应用程序使程序的设计 和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统还需要额外的ROM/RAM 开销,2~5%的CPU 额外负荷。 到目前为止,商业化嵌入式操作系统的发展主要受到用户嵌入式系统的功能需求、硬件资源以及嵌入式操作系统自身灵活性的制约。

而随着嵌入式系统的功能越来越复杂,硬件所提供的条件越来越好,选择嵌入式操作系统也就越来越有必要了。到了高端产品的阶段,可以说采用商业化嵌入式操作系统是最经济可行的方案,而这个阶段的应用也为嵌入式操作系统的发展指出了方向现在主流的嵌入式操作系统包括Linux、VxWorks、Windows CE、μC/OSⅡ等。 (一)嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。 由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL,是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。优秀的网络功能,这在Internet时代尤其重要。稳定——这是Linux本身具备的一个很大优点。核精悍,运行所需资源少,十分适合嵌入式应用。 支持的硬件数量庞大。嵌入式Linux和普通Linux并无本质区别,PC 上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方

常见的四种嵌入式操作系统

(一)VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。 VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 (二)Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KB的ROM。由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。 (三)嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。 由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL,是开放源代

《嵌入式操作系统》课程教学大纲

《嵌入式操作系统》课程教学大纲 (Embedded Operating System) 课程编号: 课程性质:专业课 适用专业:软件工程 先修课程:计算机组成和结构、C语言程序设计、操作系统原理、嵌入式系统原理与设计 后续课程:嵌入式操作系统 总学分:3(其中实验学分0.5) 一、教学目的与要求 “嵌入式操作系统”是软件工程专业的课程之一,培养学生具有嵌入式系统的应用知识、嵌入式系统的初步分析能力和具有用RTOS构成嵌入式系统的应用能力。介绍嵌入式系统中嵌入式实时操作系统和其他技术。通过本课程学习常见的嵌入式操作系统;掌握嵌入式系统软硬件设计的基本方法;跟踪嵌入式系统最新设计理念;实践嵌入式系统项目开发基本流程;为嵌入式系统开发奠定良好的基础。 本课程以介绍嵌入式操作系统知识为主,但在构成一个嵌入式计算机应用系统时,还必须具有用汇编语言、C或C++语言及程序设计编制源程序的能力,软硬件结合是本课程的一个特点。 1.教学目的 通过本课程的学习,使学生具有嵌入式操作系统的分析能力和初步设计能力。 2.教学要求 本课程采用课堂教学和试验教学相结合,以课堂教学为主的教学形式。通过本课程的学习,要求学生能够达到: (1)较深入地了解嵌入式操作系统的组成及工作原理; (2)具有较高的汇编语言源程序的阅读能力和一定的程序编写能力; (3)掌握嵌入式操作系统的使用方法和移植方法; 二、课时安排

注:教学、实验内容和学时安排各专业任课教师可根据具体专业要求作适当调整。 三、教学内容 1. 概论(2学时) (1)教学的基本要求 了解:嵌入式系统、实时系统的基本概念 重点:嵌入式操作系统的选型 (2)教学内容 ①嵌入式系统的概念 ②嵌入式操作系统的分类 ③嵌入式系统的应用举例 2. 嵌入式系统工程设计(4学时) (1)教学的基本要求 了解:介绍可用于嵌入式应用开发的一些基本方法 重点:介绍嵌入式实时软件工程方法 (2)教学内容 ①嵌入式系统项目开发流程 ②嵌入式系统工程设计方法 3. 内核相关基本概念(10学时) (1)教学的基本要求 了解:内核的定位与可裁剪性;相关基本术语 理解:任务状态、调度规则,中断处理,任务异常处理 掌握:非任务执行时、任务无关部分和准任务部分的系统状态 重点:任务状态 难点:中断处理 (2)教学内容 ①内核的定位与可裁剪性。 ②任务的运行、就绪、等待与睡眠和不存在状态。 ③任务的优先级与调度规则。 ④中断与异常。 ⑤系统状态。 4. 数据类型与系统调用(6学时) (1)教学的基本要求 了解:普通数据类型和其它定义数据类型 理解:相对时间,系统时间,时限 掌握:系统调用的格式,调用方法以及参数包的修改 重点:系统调用方法。 难点:参数包的修改。

实时操作系统到Linux系统的应用移植

实时操作系统到Linux系统的应用移植 ■MontaVistaJimReady 北京麦克泰软件技术有限公司译 从一个操作系统到另一个操作系统的应用程序移植,即使在最好的情况下也经常是一个艰巨的任务。把一个实时的嵌入式应用程序移植到一个新的操作系统上,可以说是一项最困难的任务。为了帮助开发人员在不久的将来转移到嵌入式Linux上,或者将现有的应用程序运行在嵌入式Linux上这种投资的必要性,Jim解释了这一转换的过程,评估了涉及到的困难和挑战,并且阐述了认识这种转换的益处。 越来越多的公司正在转向嵌入式Linux,把它作为其下一代产品的操作系统。事实上,VDC的报告显示了嵌入式I。inux占到32位和64位领域设计的三分之一,是其他所有嵌入式系统的2倍。 一个典型的基于RToS的应用程序依赖于很多因素,其中最重要的是编程/内存模型、API、性能,特别是实时响应的能力。另外一个重要的因素是软件开发环境。 编程模型 几乎所有使用的RToS有一个简单的编程模型,它由多线程的执行(通常称为“任务”)构成,包含在单一的地址空问中。举例来说,一个C语言的程序有一个单一的主函数,它创建所有其他的线程。每一个线程依次被定义为总程序中的一个C函数。不管是RTOS还是非保护内存中的应用程序,它们的物理地址和逻辑地址都是一样的。可能会有一些超级用户模式下的操作使用限制了在用户模式下的应用程序发出一些指令。基本上,所有的内存对应用程序来说都是虚拟的。 在过去,大多数嵌入式处理器没有内存管理单元,因此RTOS单地址空间模式是必需的。然而今天大多数的中高端处理器配备了MMU,由MMU来管理内存。 该体系结构的描述提出了一个移植RTOS代码到Linux上的简单架构: ◆RTOS的全部应用代码移植到一个Linux单进程; ◆RToS的任务转换成“nux线程; ◆RTOS的物理地址空间映射到Linux的虚拟地址 空间。 诸如VME机架的多板或多处理器架构,移植到一个多进程的Linux应用,如图1所示。 图1 构架上的考虑:进程和线程的创建 是否使用遵循API的Vxworks和PSOS等RTOS仿真软件包,开发人员最终必须决定是否将线程或是进程作为执行RTOS的任务。在这点上,Linux内核对待线程和进程是同等的,都是以调度为目的的。然而不同的API创建和管理每个实体的类型、性能、资源的成本和益处都是关联的。 通常来说,进程比线程大一点,因为它们传送更多的上下文信息。一个I。inux线程的上下文如同RTOS的一个任务,主要由CPU寄存器、堆栈、当前的程序指针以及一些内核数据结构的入口组成。一个进程加上一个完整的虚拟地址空间。这样,至少内核必须创建和跟踪进程的页转换、所有代码的类型、上下文、数据等。对于重量级进程,上下文的主要影响有两点:创建的时间和相互的上下文切换时间。 RTOS的代码会尽可能地争取要轻量级的执行。同样,当很多RTOS提供了动态的任务创建API时,其他以静态任务定义页表为特色,所有RTOS的商家不鼓励使用频繁的任务创建以节省时间和空间。Linux进程是重 84《平旁机乌嵌入式糸诧应冈》 adv@mesnet.com.cn(广告专用)  万方数据

相关主题
文本预览
相关文档 最新文档