当前位置:文档之家› 基于S3C2440的嵌入式Linux系统移植的研究与实现_赵敏

基于S3C2440的嵌入式Linux系统移植的研究与实现_赵敏

基于S3C2440的嵌入式Linux系统移植的研究与实现_赵敏
基于S3C2440的嵌入式Linux系统移植的研究与实现_赵敏

第31卷 第6期

2008年12月

电子器件

Ch inese Jo u rnal Of Electro n Devi ces

Vol .31 No .6Dec .2008

Migration Research and Implementation Based on S 3C 2440Embedded Lin ux S ystem

Z H AO Min 1,Y A NG H ui -xian 1*,TA NG An -ping 2

(College o f In for mation En gineer ing ,X iang tan University ,X ian gtan H unan 411105,China )

A bstract :As the development of the microprocessor technology ,embedded system has been widely used .It is a

chief problem to the father application of the embedded sy stem to the research and application of a small ,real -time and good capability embedded operation system .The method and process of porting Linux to the board based on S3C2440processor are described .Firstly ,the target platform and Linux -2.6.23.14kernel are introduced .Mean -w hile ,the hardw are architecture of the board is presented .The structure and function of Boo tloader and the porting of Linux -2.6.23.14kernel are discussed in detail .The ported Linux works well in the embedded sy stem .The re -search is conducive to application of the embedded technology .Key words :Embedded Linux ;Porting ;Linux kernel ;Bootloader ;S3C2440processor EEACC :1265F

基于S3C2440的嵌入式Linux 系统移植的研究与实现

赵 敏1

,杨恢先

1*

,汤安平

2

(湘潭大学信息工程学院,湖南湘潭411105)

收稿日期:2008-03-25作者简介:赵 敏(1983-),男,湖南长沙人,湘潭大学信息工程学院控制理论与控制工程专业,硕士,主要研究方向为嵌入式

Linux ,计算机辅助设计,sy zm @https://www.doczj.com/doc/105946536.html, ;

杨恢先,教授,主要研究方向为复杂过程建模与优化控制,计算机辅助设计;汤安平,主要研究方向为计算机辅助设计,硕士

摘 要:微处理器技术的发展使嵌入式系统得到广泛应用,一个小型、实时、性能良好的嵌入式操作系统的研发和应用,就成为嵌入式系统进一步应用要解决的首要问题[1]。描述了将Linux -2.6.23.14内核移植到基于S3C2440处理器目标板上的方法与过程。介绍了目标平台和L inux -2.6.23.14内核,并说明了如何搭建移植环境,着重介绍了Bo o tloader 的架构和功能以及Linux -2.6.23.14内核的移植。结果证明该方法是可行的。移植后的Linux 在嵌入式系统中运行良好。为嵌入式技术应用和研究提供有益的帮助。

关键词:嵌入式Linux ;移植;Linux 内核;Boo tlo ader ;S3C2440处理器中图分类号:TP391

文献标识码:A 文章编号:1005-9490(2008)06-1947-04

随着微处理器技术的发展,嵌入式系统已经成为计算机应用领域的一个重要的组成部分。嵌入式系统一般定义为:以应用为中心,以计算机技术为基础,软硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统[2]。简言之,一个嵌入式系统就是一个计算机硬件和软件的集合体。S3C2440是SAM SUNG 公司使用ARM 920T 处理器内核开发的一款嵌入式处理器,专门为PDA 、IN TERNE T 设备、手持设备等开发[3],S3C2440和它的前身S3C2410相比,除了具

有宽温的特性和两倍的运行速度以外,还具备了

AC97编码器、摄像模块(标准CCD 或CM OS )接口、驱动强度控制等功能,它是真正的工业级芯片,配合14mm ×14mm 的小体积,可以适合多数嵌入式场合使用[4]。Linux 是开放源代码的操作系统。嵌入式Linux 是按照嵌入式操作系统的要求设计的一种小型操作系统,由一个内核以及一些根据需要进行定制的系统模块组成。其内核很小,一般只有几百kby te ,它非常适合移植到嵌入式系统中去,同时它还具有多用户多任务的系统特征,有些还具有

实时特征[5]。本文从以下三个方面系统介绍如何搭建一个基于Linux-2.6.23.14内核的小型Linux操作系统,并将它移植到S3C2440开发板上。

1 内核源码的准备和交叉编译环境的建立标准Linux的内核源码可以从fttp://ftp.ker-nel.o rg下载,本文使用的是Linux-2.6.23.14内核。移植前需要在宿主机上建立A RM的交叉编译环境。交叉编译指利用运行在机器上的编译器编译某个源程序,生成在另一台机器上运行的目标代码的过程。主要用到的开发工具包括三个部分:binu-tils、g cc、g libc。其中binutils是二进制文件的处理工具;gcc是编译工具;g libc是链接和运行库,当中最重要的是gcc交叉编译器,本文采用的是最新的GCC4.2.3编译器。经过编译binutils、配置Linux 内核头文件、第一次编译gcc、交叉编译glibc、第二次编译gcc后,所需的交叉编译环境就搭建好了。

2 Bootloader引导程序

Boo tloader通常称为系统的引导程序,作用与PC机上的BIOS类似,为初始化硬件设备、建立内存空间的映射图、为最终调用操作系统内核做好准备[6]。它依赖于硬件而实现的,因此建立一个通用的Bo otloader几乎是不可能的。在基于S3C2440的系统中,系统在上电或复位时通常都从地址0x0000,0000处开始执行,而在这个地址处安排的通常就是系统的Boo tloader程序。VIVI是韩国MIZI公司开发的一种Bootloader,适合于ARM9处理器,支持S3C2440,本文采用的Boo tLoader就是VIVI。

Bootloader的启动分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。VIVI作为一种Bootloader,它的启动也分为两个阶段。

2.1 VIVI的STAGE1

S tage1完成了基本的硬件初始化,如设置中断和异常向量,禁止看门狗,屏蔽所有的中断,设置CPU的速度和时钟频率,对RAM进行初始化,初始化UAT R,关闭CPU内部指令/数据高速缓存(cache)等;拷贝stage2的代码到SDRAM中;设置堆栈指针sp;跳转到stag e2的C入口点,一切就绪后就可以跳转到stage2去执行了。完成stage1以

后,系统的物理内存布局如图1所示。

图1 系统的物理内存布局

2.2 VIVI的STAGE2

Stage2用C语言实现,但是与普通C语言应用程序不同的是,在编译和链接VIVI程序时,不能使用glibc库中任何支持函数,因此从哪里跳转进m ain()函数就成了问题。本文利用弹簧床(tram po-line)的概念解决这一问题。即用汇编语言写一段trampoline小程序,并将这段tram po line小程序作为stage2可执行映像的执行入口点。然后可以在trampoline汇编小程序中用CPU跳转指令跳入m ain()函数中去执行;而当m ain()函数返回时, CPU执行路径显然再次回到trampoline程序。VI-VI中tram poline函数调用main()函数过程如下: L ar sp,DW ST A CK ST A R T

M o v fp,#0

M o v a2,#0

bl main

mov pc,#F LA SH BA SH

Stage2完成了初始化本阶段使用的硬件设备,例如:定时器设置和IO端口设置,函数在arch/ S3C2440/smdk.c中;检测系统的内存映射(Memo-ry m ap);加载内核映像和根文件系统映像并从FLAS H上拷贝,在这里用一个简单的循环就可以完成从FLAS H设备上拷贝映像的工作[7]。如: count=ke rnelsize

w hile(co unt>0){

*dest++=*src++;/*they are all aligned with wo rd boundary*/

Count-=4;/*by te number*/

};

接着设置内核的启动参数;调用内核等一系列过程。其中Boo tlo ader、内核映像和文件系统映像在FLAS H分布空间如图2所示。

图2 典型FlASH空间分配结构图

3 内核

Linux采用模块化的程序设计方法,其内核由

1948电 子 器 件第31卷

若干能相对独立的程序模块组成,主要包括以下组

成部分:进程管理、存储管理、文件管理、网络管理、进程间通信[8],其基本内核组成如图3所示

图3 Linux 内核组成示意图

它是嵌入式Linux 系统能否成功移植中最为复杂也最为关键的一个环节,本文分四个层次探讨这一环节。3.1 修改内核

(1)设置目标平台和指定交叉编译器

在根目录的makefile 文件中,做如下改动:S UBA RCH :=arm C ROSS COM PI LE :=/usr /local /arm /3.4.1/bin /arm -linux -(2)修改arch /arm 目录下的m akefile 文件在linux -2.6.23.14内核中添加如下代码:ifeq ($(CONFIG ARCH S3C2440),y )TEXTADDR =0xC0008000MACH INE =S3C2440

这里TEXTADDR 确定内核开始运行的虚拟地址。

(3)修改arch /arm 目录下的config .in 文件配置文件config .in 能够配置运行“make me -nuconfig ”命令时的菜单选项,由于2.6.23.14内核中没有S3C2440的相关信息,所以要在该文件中进行有效的配置。完成该步,在Linux 内核配置时就可以选择刚刚加入的内核平台了。

(4)修改arch /arm /boo t 目录下的makefile 文件

编译出来的内核存放在该目录下,要根据实际的硬件系统,修改解压后内核开始运行的实际物理地址。

(5)修改arch /arm /boo t /compressed 目录下的makefie 文件

该文件的功能是创建一个压缩的镜像文件,添加如下代码:

ifeq ($(CONFIG A RC H S3C2440),y )OBJS +=head -S3C2440.o

endif (6)在arch /arm /boo t /compressed 目录下添加head -S3C2440.s 文件

该文件主要用来初始化处理器。(7)在arch /arm /def -config s 目录下添加配置好的的S3C2440的配置文件

(8)修改a rch /arm /kernel 目录下的makefile 文件

该文件主要用来确定文件类型的依赖关系。(9)修改a rch /arm /kernel 目录下的debug -armv .s 文件

目的是关闭外围设备的时钟,以保证系统正常运行。

(10)修改arch /arm /kernel 目录下的entry -armv .s 文件

该文件是CPU 初始化时处理中断的汇编代码。

(11)修改arch /arm /mm 目录下的相关文件此目录下包含移植好的有关ARM 内存管理的代码。在mm -armv .c 中,使“init maps ->buffer -able =1;”即可。init maps 是一个m ap desc 型的数据结构,m ap desc 的定义在/include /asm -arm /m ach /map .h 文件中。

(12)修改arch /a rm /mach -S3C2440目录下的相关文件

此目录下包含的代码是专门针对S3C2440处理器的。3.2 Linux 内核编译

在配置菜单中导入内核对smdk2440的默认配置,再在此基础上选择所需的功能,如Nand Flash 及M TD 设备的支持,Cramfs 文件系统的支持等。配置完毕,在终端输入编译命令“make ”进行编译。若内核源码编译成功,将在linux -2.6.23.14/arch /arm /bo ot /下生成内核映像文件zImage 。然后在VIVI 下输入命令进行内核配置:make menuconfig ,该命令执行之后生成文件.config 。它保存这个配置信息,下一次再执行make menuconfig 的时候将生成新的.co nfig 文件。输入命令:make dep ,这步仅仅在第一次编译时需要,以后就不需要了,为的是在编译时知道文件之间的依赖关系;输入命令:m ake clean ,该命令用于清除以前编译内核时所生成的所有目标文件、模块文件和临时文件;输入命令:make zIm ag e ,编译内核,编译通过后,在目录arch /arm /boot 下生成zIm age 内核文件。通过各个目录的Makefile 进行,将会在各个目录下生成一系列目标文件,最后将内核映像zIm ag e 加载到开发

1949

第6期赵 敏,杨恢先等:基于S3C2440的嵌入式Linux 系统移植的研究与实现

板FlASH 中的适当地址。上述步骤完成后,就完成了对Linux 内核的编译工作。3.3 根文件系统

Linux 系统中的文件和设备是通过文件系统来组织的。文件系统的存在使得数据和设备可以被有效而透明地存取访问。一个Linux 的最简根文件系统应该包括支持Linux 系统正常运行的基本内容,包括系统使用的软件和库,以及所有用来为用户提供基本支持的架构和指令[8]。在根文件目录roo tfs 下建立bin 、dev 、etc 、lib 、proc 、sbin 、roo t 、tm p 等一系列必备的目录,把所需的配置文件、动态函数库放到相应的目录。采用BusyBox 是缩小根文件系统的好办法。Busy Box 以很小的体积集成了最常用的Linux 命令和应用程序,大大简化了制作Linux 根文件系统的过程。目前,Linux 已经能够支持几十种文件系统格式,如常用的Cram fs 、Jfss2、Yaffs 等。C ram fs 是一种只读的闪存文件系统,可以保护系统的基本设置不被更改。根文件系统就使用Cramfs 格式。使用C ram fs 制作工具mkcram fs 把根文件目录制作成映像文件:rootfs .cram fs 。根文件系统制作完成,在VIVI 命令模式下把roo tfs .cram fs 下载到FLAS H 的合适位置。3.4 Bootloader 和内核启动的调试经验3.4.1 关于串口终端的乱码问题

在启动Bootloader 时,经常会碰到串口终端显示乱码或根本没有显示。产生问题的主要有两个原因:

(1)Bo otloader 对串口的初始化设置不正确。(2)运行在host 端的终端仿真程序对串口的设置不正确,这包括波特率、奇偶校验、数据位、停止位等方面的设置。

在Boo tloader 的运行过程可以正确的向串口终端输出信息,但当Bootloader 启动内核后却出现乱码,可以从下面几个方面来考虑:

(1)首先确认内核在编译时配置了对串口的支持并配置了正确的串口驱动程序。

(2)Bo otloader 对串口的初始化设置于内核对串口的初始化设置不一致。

(3)最后确认Boo tlo ader 所用的内核基地址必须于内核影像在编译时所用的运行基地址一致。即都为0xc000,0000。3.4.2 关于内核无法找到体系结构的问题

在移植内核时,一个常见的启动错误是无法找到体系结构,这是因为在内核启动的第一阶段没有设置R1寄存器为体系码,在判断体系类型时出错,通常只要根据m ach -type 文件找到各自的体系码,然后在源码中对R1赋值就可以了。

通过以上过程之后,再加以一些必需设置及其调

试,一个基于Linux -2.6.23.14内核的小型嵌入式

Linux 平台便搭建成功,利用终端仿真程序DNW 和

Bootloder 引导程序通过串口就可以把Linux 内核移植到目标系统板S3C2440上。移植完成后,系统正常启动,初始启动的部分信息如下图4所示。

图4 嵌入式Linux 启动画面部分截图

经过一段时间观察,发现该系统能正常稳定运行。

4 结束语

本文系统阐述了Linux -2.6.23.14内核向目标开发板S3C2440移植过程中的关键技术,并成功搭建了一个基于S3C2440的Linux -2.6.23.14内核的小型嵌入式平台,为后续驱动程序与应用程序的开发提供了基础。但鉴于嵌入式操作系统移植是一项比较复杂的工作,涉及的文件很多,本文不可能完全介绍移植过程中各个方面的细节技术。但通过本文的阐述,读者可以明白移植操作系统过程中,需要注意的内容以及基本流程。虽然本文只谈到了Linux 系统移植,但是对于其他嵌入式操作系统来说,其原理也是一样的。参考文献:

[1] 徐英慧,马忠梅,王磊,王琳.ARM 9嵌入式系统设计———基于

S3C2410与Linux [M ].北京:北京航空航天大学出版社,2007.[2] 刘峥嵘.嵌入式Linux 开发详解[M ].北京:机械工业出版

社,2004.

[3] CPU :S am sung Electronics Co .Ltd US ER 'S M AN UAL .

S3C244032一Bit RISC M icrop roceso r Revision1.2[Z ].2002.[4] 韩国三星S3C2440处理器用户手册[S ].Revision 1.[5] 许德民.操作系统原理———Linux 篇[M ].北京:国防工业出版

社,2004.

[6] 徐胜,管庆.TM S 320C5000的Bootloader 技术[J ].电子产品世

界,2003,23:41-45.

[7] 万永波等.基于ARM 的嵌入式系统Bootloader 启动流程分析

[J ].微计算机信息2005,11-2:90-92.

[8] 许信顺,贾志平.嵌入式Linu x 应用编程[M ].北京:机械工业

出版社,2007.

1950电 子 器 件第31卷

实验四Linux内核移植实验

合肥学院 嵌入式系统设计实验报告 (2013- 2014第二学期) 专业: 实验项目:实验四 Linux内核移植实验 实验时间: 2014 年 5 月 12 实验成员: _____ 指导老师:干开峰 电子信息与电气工程系 2014年4月制

一、实验目的 1、熟悉嵌入式Linux的内核相关代码分布情况。 2、掌握Linux内核移植过程。 3、学会编译和测试Linux内核。 二、实验内容 本实验了解Linux2.6.32代码结构,基于S3C2440处理器,完成Linux2.6.32内核移植,并完成编译和在目标开发板上测试通过。 三、实验步骤 1、使用光盘自带源码默认配置Linux内核 ⑴在光盘linux文件夹中找到linux-2.6.32.2-mini2440.tar.gz源码文件。 输入命令:#tar –jxvf linux-2.6.32.2-mini2440-20110413.tar对其进行解压。 ⑵执行以下命令来使用缺省配置文件config_x35 输入命令#cp config_mini2440_x35 .config;(注意:x35后面有个空格,然后有个“.”开头的 config ) 然后执行“make menuconfig”命令,但是会出现出现缺少ncurses libraries的错误,如下图所示: 解决办法:输入sudo apt-get install libncurses5-dev 命令进行在线安装ncurses libraries服务。

安装好之后在make menuconfig一下就会出现如下图所示。 ⑶配置内核界面,不用做任何更改,在主菜单里选择退出,并选“Yes”保存设置返回到刚命令行界面,生成相应配置的头文件。 编译内核: #make clean #make zImage 在执行#make zImage命令时会出现如下错误: 错误:arch/arm/mach-s3c2440/mach-mini2440.c:156: error: unknown field 'sets' specified in initializer 通过网上查找资料 于是在自己的mach-mini2440.c中加入 #include

基于32位ARM920T内核的微处理器的嵌入式Linux系统构建详解

基于32位ARM920T内核的微处理器的嵌入式Linux系统构建详解目前,在嵌入式系统中基于ARM微核的嵌入式处理器已经成为市场主流。随着ARM技术的广泛应用,建立面向ARM构架的嵌入式操作系统成为当前研究的热点问题。 已经涌现出许多嵌入式操作系统,如VxWork,windows-CE,PalmOS,Linux等。在众多的嵌入式操作系统中,Linux以其开源代码及免费使用倍受开发人员的喜爱。本文选用的微处理器S3C2410是基于32位ARM920T内核的微处理器,基于此处理器构造一Linux 嵌入式操作系统,将其移植到基于32位的ARM920T内核的系统中,在此基础上进行应用程序开发。 l、开发环境介绍 1.1、基于S3C2410ARM920T的硬件平台 该系统的硬件平台为深圳旋极公司提供,硬件的核心部件为三星$3C2410ARM920T芯片,外围还包括:64MNANDFLASH和RAM外围存储芯片;串口、网口和USB外围接口;CSTNLCD和触摸屏外围显示设备;UDAl34lTS的外围音频设备。S3C2410处理器和外围设备共同构成了基于ARM920T的开发板。 1.2、嵌入式Limlx软件系统 该嵌入式Linux的软件系统包括以下4个部分:引导加载程序vivi;Linux2.6.14内核;YAFFS2文件系统以及用户程序。他们的可执行映像依次存放在系统存储设备上. 与通常的嵌入式系统布局有所不同,本系统在引导加载程序和内核映像之间还增加了一个启动参数区,在这个区里存放着系统启动参数。引导加载程序通过调用这些参数来决定启动模式、启动等待时间等,这些启动参数的增加加强了系统的灵活性。本系统采用64MNANDFLASH的存储设备。 2、嵌入式Linux系统设计与实现 2.1、引导加载程序vivi

嵌入式Linux内核移植详解(顶嵌)

内核移植阶段 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。 内核和用户界面共同为用户提供了操作计算机的方便方式。也就是我们在windows下看到的操作系统了。由于内核的源码提供了非常广泛的硬件支持,通用性很好,所以移植起来就方便了许多,我们需要做的就是针对我们要移植的对象,对内核源码进行相应的配置,如果出现内核源码中不支持的硬件这时就需要我们自己添加相应的驱动程序了。 一.移植准备 1. 目标板 我们还是选用之前bootloader移植选用的开发板参数请参考上文的地址: https://www.doczj.com/doc/105946536.html,/thread-80832-5-1.html。bootloader移植准备。 2. 内核源码 这里我们选用比较新的内核源码版本linux-2.6.25.8,他的下载地址是 ftp://https://www.doczj.com/doc/105946536.html,/pub/linux/kernel/v2.6/linux-2.6.25.8.tar.bz2。 3. 烧写工具 我们选用网口进行烧写这就需要内核在才裁剪的时候要对网卡进行支持 4. 知识储备 要进行内核裁剪不可缺少的是要对内核源码的目录结构有一定的了解这里进 行简单介绍。 (1)arch/: arch子目录包括了所有和体系结构相关的核心代码。它的每一个子 目录都代表一种支持的体系结构,例如i386就是关于intel cpu及与之相兼容体 系结构的子目录。PC机一般都基于此目录。 (2)block/:部分块设备驱动程序。 (3)crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验 算法。 (4) documentation/:文档目录,没有内核代码,只是一套有用的文档。 (5) drivers/:放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目 录:如,/block 下为块设备驱动程序,比如ide(ide.c)。 (6)fs/:所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持 一个文件系统, 例如fat和ext2。

嵌入式Linux系统的搭建与配置过程

1.摘要 (2) 2.UBOOT,LINUX内核,文件系统的介绍及相互关系..3 2.1嵌入式系统简介 (3) 2.2嵌入式Linux概述 (3) 2.3UBOOT简介 (4) 3.UBOOT的启动过程 (6) 4.内核的主要功能和裁剪 (7) 4.1Linux的编译 (7) 4.2嵌入式Linux的配置和剪裁 (8) 5.文件系统的制作过程 (8) 6.交叉编译器的搭建和环境变量的设置 (9) 7.驱动程序的编写过程与关键点 (11) 7.1Linux网络驱动程序的结构 (11) 7.2网络驱动程序的基本方法 (12) 7.3网络驱动程序中用到的数据结构 (12) 7.4常用的系统支持 (14) 7.5编写Linux网络驱动程序中需要注意的问题 (18) 8.参考文献 (20)

嵌入式系统是以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序4部分组成,用于实现对其它设备的控制、监视或管理等功能。其广泛应用于控制领域、消费电子产品等行业,已成为现代电子领域的重要研究方向之一。嵌入式Linux的研究已经成为当前信息技术研究的热点,它的应用蕴含着巨大的商业价值,并且己经广泛的应用于各种信息家电、通讯产品、工业控制中。论文首先介绍了ARM和嵌入式Linux操作系统的特点和当前的发展概况。然后阐述了嵌入式Linux 开发流程以及移植到具体硬件平台需要完成的工作,如U-Boot的移植、Linux内核的编译与裁剪、文件系统的制作、驱动程序的编写等。 关键字:嵌入式;ARM;嵌入式Linux;Linux内核;驱动程序

02--基于ARM9的Linux2.6内核移植

基于ARM9的Linux2.6内核移植 姓名 系别、专业 导师姓名、职称 完成时间

目录 摘要................................................... I ABSTARCT................................................ II 1 绪论.. (1) 1.1课题研究的背景、目的和意义 (1) 1.2嵌入式系统现状及发展趋势 (1) 1.3论文的主要工作 (4) 2 嵌入式 Linux系统构成和软件开发环境 (5) 2.1嵌入式Linux系统的体系结构 (5) 2.2嵌入式Linux系统硬件平台 (5) 2.3嵌入式Linux开发软件平台建立 (7) 2.4本章小结 (11) 3 嵌入式Linux的引导BootLoader程序 (12) 3.1 BootLoader概述 (12) 3.2 NAND Flash和NOR Flash的区别 (13) 3.3本章小结 (19) 4 Linux内核的编译、移植 (20) 4.1 Linux2.6内核的新特性简介 (20) 4.2 Linux内核启动流程 (20) 4.3内核移植的实现 (21) 4.4 MTD内核分区 (23) 4.5配置、编译内核 (24) 4.6本章小结 (26) 5 文件系统制作 (27) 5.1 yaffs文件系统简介 (27) 5.2 内核支持YAFFS文件系统 (27) 5.3本章小结 (30) 6测试 (31) 6.1简单测试方法的介绍 (31) 6.2编写简单C程序测试移植的系统 (31) 6.3在开发板执行测试程序 (32)

Linux内核移植开发手册

江苏中科龙梦科技有限公司 Linux内核移植开发手册 修 订 记 录 项 次 修订日期 版 本修订內容修订者审 核 1 2009‐02‐04 0.1 初版发行陶宏亮, 胡洪兵 2 2009‐11‐20 0.2 删除一些 多余文字 陶宏亮, 胡洪兵

DISCLAIMER THIS DOCUMENTATION IS PROVIDED FOR USE WITH LEMOTE PRODUCTS. NO LICENSE TO LEMOTE PROPERTY RIGHTS IS GRANTED. LEMOTE ASSUMES NO LIABILITY, PROVIDES NO WARRANTY EITHER EXPRESSED OR IMPLIED RELATING TO THE USAGE, OR INTELLECTUAL PROPERTY RIGHT INFRINGEMENT EXCEPT AS PROVIDED FOR BY LEMOTE TERMS AND CONDITIONS OF SALE. LEMOTE PRODUCTS ARE NOT DESIGNED FOR AND SHOULD NOT BE USED IN ANY MEDICAL OR LIFE SUSTAINING OR SUPPORTING EQUIPMENT. ALL INFORMATION IN THIS DOCUMENT SHOULD BE TREATED AS PRELIMINARY. LEMOTE MAY MAKE CHANGES TO THIS DOCUMENT WITHOUT NOTICE. ANYONE RELYING ON THIS DOCUMENTATION SHOULD CONTACT LEMOTE FOR THE CURRENT DOCUMENTATION AND ERRATA. JIANGSU LEMOTE TECHNOLOGY CORPORATION LIMITED MENGLAN INDUSTRIAL PARK,YUSHAN,CHANGSHU CITY,JIANGSU PROVINCE,CHINA Tel: 0512‐52308661 Fax: 0512‐52308688 Http: //https://www.doczj.com/doc/105946536.html,

嵌入式Linux系统期末考试简答题、运用题

简答题与应用题 什么是嵌入式系统?主要有什么特点? 以应用为中心,以计算机技术为基础的, 并且软件硬件是可剪裁的, 能满足应用系统对功能、 可靠性、成本、 体积、功耗等指标的严格要求的专用计算机系统。他可以实现对其他设备的控制、监视或者管理等功能。 与通用的 计算机系统相比,特点为: (1) (2) (5) 嵌入式系统通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。 4、什么是Linux ?什么是嵌入式 Linux ? 答:严格来讲,Linux 是指由Linux 本人维护并不断更新的内核 。 一个嵌入式Linux 系统指的是一个基于 Linux 内核的,但不包含有关这个内核的任何专业的库或是用户工具 的嵌入式系统。 Linux 内核构建嵌入式操作系统有什么优势(优良特性)? 程度代码是可以获取的,可靠度高; 有完整的源码,软件丰富并且免费; 得到众多硬件生产家的广泛支持;包括 cpu 、计算机外 围设备 完善的通信协议、软件标准和文件管理机制; 提供完全免费且优秀的开发工具; 广泛的社群支持 无需购买lice nee ,是免费的; 不依赖特定厂商、供应商; 成本相对低廉。 6、 RTOS (嵌入式操作系统)强调的实时是什么概念?与中断的关系? 答:实时指的是特定操作所消耗的时间(以及空间)的上限是可预知的。操作系统能够在规定响应时间内完成客 户服务程序。中断程序响应中断并完成 是在固定时间内。 7、什么是实时LinUX ?涉及到哪些软硬件内容? 答:实时LinUX ( RT-Linux )通过在Linux 内核与硬件中断之间增加一个精巧的可抢先的实时内核 ,把标准的Linux 内核作为实时内核的一个进程与用户进程一起调度 ,标准的Linux 内核的优先级最低,可以被实时进程抢断。 正 常的Linux 进程仍可以在Linux 内核上运行,这样既可以使用标准分时操作系统即 Linux 的各种服务,又能提 供低延时的实时环境。它在硬件上涉及到硬件中断,软件上涉及到对高优先级的实时硬件中断的快速响应。 能在规定的时间内完成对突发事件的处理的 Linux 系统; 软件:中断服务程序、进程调度程序,硬件:嵌入式系统所采用的中断管理硬件。 8、试简要说明Linux 内核构成,并简要说明各部分的功能? 答: MMU :内存管理单元,完成地址映射(应用虚拟地址方式) VFS :虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方 1、 答: 面向特定应用,一般都有实时要求; 集先进性的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集 成系统; 嵌入式系统是和具体应用对象有机结合在一起,因而其升级换代也是和具体的产品同步进行的。 嵌入式系统的软 硬件设计着重于高效率性。在最大限度满足应用需求的前提下,降低成本是必须要 考虑的主要问题。 嵌入式系统软件一般都固化在存储器芯片中。 (3) (4) 5、 用 答:( 1) (2) (3) (4) (5) (6) (7) (8) () 2、 答: 3、嵌入式操作系统的作用是什么?

基于ARM的嵌入式linux内核的裁剪与移植.

基于ARM的嵌入式linux内核的裁剪与 移植 0引言微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Neculeus和WindowsCE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linu 0 引言 微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Nec uleus和Windows CE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linux 非常适合多数Intemet设备。Linux操作系统可以支持不同的设备和不同的配置。Linux对厂商不偏不倚,而且成本极低,因而很快成为用于各种设备的操作系统。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 1 嵌入式linux操作系统 Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix 相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA 等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己的系统。文章以将linux移植到ARM920T内核的 s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植过程,文中介绍的基本原理与方法技巧也可用于其它芯片。 2 内核移植过程 2.1 建立交叉编译环境 交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。不同的CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同的CPU对应语言。 交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。其中,binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm—linux—gcc交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。 自行搭建交叉编译环境通常比较复杂,而且很容易出错。本文使用的是

嵌入式Linux系统

10-1 嵌入式Linux系统概述 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。 Linux在所有的操作系统中,Linux 是一个发展最快、应用最为广泛的操作系统。 所谓嵌入式Linux,是指Linux 在嵌入式系统中应用,而不是什么嵌入式功能。实际上,嵌入式Linux 和Linux 是同一件事。 10-2 Linux启动过程综述 一. Bootloader 二.Kernel引导入口 三.核心数据结构初始化--内核引导第一部分 四.外设初始化--内核引导第二部分 五.init进程和inittab引导指令 六.rc启动脚本 七.getty和login 八.bash 附:XDM方式登录 Bootloader 简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。 在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引导,另一种是由Firmware直接引导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等),firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导的设置;而SRM

我来说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的移植、配置,具体移植、配置步骤我另写,呵呵。最后是构建我们自己的文件系统,到此我们已经完成了内核移植和文件系统的制作。准备移植,呵呵。今天先写到这里,累了。

如何构建嵌入式LINUX的NFS

如何构建嵌入式LINUX的NFS 准备工作:一台装有REDHAT9.0的PC机,一套LJD2410-I开发板,PC机上装有LJD2410的软件包,假如我们通过NFS要加载的文件系统为/LJD2410/root_dir/root_china,Ifconfig eth0 192.168.1.100 //设置PC机linux的IP:192.168.1.100,Ifconfig eth0 192.168.1.10 //开发板IP:192.168.1.10 我们需要重新配置编译内核,开启开发板NFS文件系统功能,具体步骤如下:1、修改kernel/arch/arm/def-configs/smdk2410配置文件把CONFIG_CMDLINE="root=/dev/mtdblock2 noinitrd init=/linuxrc console=ttyS0"这一行改为CONFIG_CMDLINE="root=/dev/nfs rw nfsroot=192.168.1.100:/LJD2410/root_dir/root_china noinitrd init=linuxrc console=ttys0 ip=192.168.1.10"运行make menuconfig进入配置菜单,装载配置文件SMDK2410 选择Load an Alternate Configuration File输入配置文件的路径和文件名添加内核对NFS的支持:选中networking opTIons-》IP:kernel level auloconfiguralion项选中file systems-》network file systems-》下的root file system on nfs和nfs file system support 重新编译内核下载bootloader和kernel到开发板上,至此,开发板设置已经完成。PC 机设置:我们必须开启PC机的NFS服务,具体设置如下:1、在LINUX命令符下运行setup,在system services里面选中nfs服务,然后保存退出。2、设置PC机上的共享目录执行vi /etc/exports,在里面添加一行:/LJD2410/root_dir/root_china (rw),然后保存退出,/和rw要有空格(/LJD2410/root_dir/root_china为共享目录,rw为读写权限)。3、执行/etc/rc.d/init.d/nfs restart重启nfs服务。4、为了不必每次开机都要启动nfs服务,我们把/etc/rc.d/init.d/nfs restart 添加到/etc/rc.d/rc.local中,以后PC启动的时候就会执行此文件开启nfs服务。5、测试NFS服务:设置完成后可以在本机上进行测试,如果本机IP为192.168.1.100,则可以用mount 192.168.1.100:/LJD2410/root_dir/root_china /mnt,如果mount成功,则在/mnt的目录就可以看到root_china下面的东西了。6、修改root_china/usr/etc/rc.local文件,设置开发板IP地址为192.168.1.10 至此,开发板和PC

基于ARM的嵌入式linux 内核的裁剪与移植.

基于ARM的嵌入式linux 内核的裁剪 与移植 摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte 0 引言 微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Neculeus和Windows CE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linux 非常适合多数Intemet设备。Linux操作系统可以支持不同的设备和不同的配置。Linux对厂商不偏不倚,而且成本极低,因而很快成为用于各种设备的操作系统。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 1 嵌入式linux操作系统 Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix 相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA 等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己的系统。文章以将linux移植到ARM920T内核的 s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植过程,文中介绍的基本原理与方法技巧也可用于其它芯片。 2 内核移植过程 2.1 建立交叉编译环境 交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。不同的CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同的CPU对应语言。 交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。其中,binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm—linux—gcc交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。 自行搭建交叉编译环境通常比较复杂,而且很容易出错。本文使用的是

嵌入式LINUX系统的实现

嵌入式LI N UX系统的实现 检修厂 王小康 摘 要 嵌入式系统正变得越来越流行。被广泛地应用在各种网络设备、控制设备以及个人的数字工具如PDA中。文章论述了作者在嵌入式操作系统领域里所做的研究和实践工作,主要的工作围绕着将L i nux改造成嵌入式操作系统所进行的具体工作展开,包括单板配置代码,系统的引导与修改,核心映象定制与修改和调试工作。 1 引言 在当今数字信息技术、网络技术高速发展与发达的后PC时代,嵌入式系统无处不在,并将不断涌现出新的嵌入式应用系统。传统的操作系统软件[1][2]很难有效地支持嵌入式应用系统的快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有重大意义,是十分必要的。L i n ux正在向嵌入式领域的各个方面进军,在不久的将来,我们可以发现嵌入式L i n ux的广泛的应用:各种车载嵌入式设备(GPS,电子地图)、消费电子设备、手持电脑(H PC,PDA)、蜂窝电话、Internet接入设备、工控设备以及各种网络的基础设施(网管设备,路由,网关,交换器,HUB等)[3]。 本文是围绕着嵌入式L i n ux系统的实现展开的。首先介绍嵌入式L i n ux系统的硬件结构和软件结构;然后对基于L i n ux的嵌入式实时操作系统的实现过程进行详细的阐述;最后是简短的总结。 2 嵌入式L inux系统的硬件结构 嵌入式L i n ux系统硬件系统是个微形化的专用PC,它包括系统主机扳、通讯接口板、图象处理和显示板、输入控制板以及存储板等。主机板可采用嵌入式X86CPU系列,图象处理和显示板能支持MPEG数字解压缩和电视终端显示,输入控制包括遥控键盘、遥控器和其他一些输入设备接口,存储板主要 要求。 7 设计报警和连锁保护系统 报警系统的作用在于及时提醒操作人员密切注意监视生产状况,以便采取措施减少事故的发生,连锁保护系统是指当生产出现严重事故时,为保证设备和人身的安全,使各个设备按一定次序紧急停下来。在焙烧炉的炉顶温度控制中,根据工艺要求,一个高限报警温度为480度;三个连锁保护温度设定,一个超高限报警温度自动连锁烧嘴,引起烧嘴自动熄火,从而立即引起调节阀的自动关闭,防止煤气流入焙烧炉,一个低限位报警温度用来连锁模式的切换,使模式从酸模式自动切换到水模式,另一个超低限位报警温度用来连锁三个喷枪,使得三个喷枪自动从焙烧炉提升出来,从而保护喷枪。 8 控制系统的调试和运行状况 控制系统安装完成后,应随生产过程进行试运行,按控制要求检查和调整各控制仪表和设备的工作状况,包括调节器的P、I等参数整定,依次将全部控制系统投入运行,在从投入运行到现在有半年多的时间了,发现焙烧炉的炉顶温度控制效果好,系统运行比较稳定。 20

华清远见嵌入式Linux课程

课程名称:嵌入式学院—嵌入式LINUX工程师就业培训班 上课时间为:上午9:00—12:00 下午13:30—17:30 (每天7小时正式上课时间)晚自习18:00—21:00 第一阶段:嵌入式Linux软件工程师 ?职场定位:Linux Development Engineer for Software Engineering ?本期目标:嵌入式系统是现在最热门的计算机应用领域之一,嵌入式C语言在其中起着至关重要的作用。一个精通C语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks等嵌入式操作系统下的软件开发工作。本阶段学习目标是掌握C语言基本知识、C编程语法基础和 Linux操作系统的使用,并熟练掌握嵌入式Linux的开发环境,为将来的编程工作打基础。

第二阶段:嵌入式Linux系统工程师 ?职场定位:Linux Development Engineer for Embedded Systems ?证书:微软嵌入式工程师认证证书(认证费500元),红帽公司《Linux应用开发工程师证书》(认证费500元) ?本期目标:参加本期培训的学员应该掌握嵌入式C语言编程技巧。嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。本期学习的主要目标是精通嵌入式Linux下的程序设计,熟悉嵌入式Linux开发流程,强化学员对Linux应用开发的理解和编码调试的能力,同时掌握bootloader和kernel的移植技能,了解ARM体系结构和编程,具备ARM硬件接口的基础知识,并了解Linux内核开发相关内容,初步掌握Linux下的驱动程序开发方法。另外,本期课程还会让学员了解另外一个比较重要的嵌入式操作系统:Windows CE,使学员在掌握嵌入式Linux的同时,也了解Windows CE的开发方法,拓展学员的知识面,丰富学员的知识结构。最后通过几个典型的企业全真案例,进一步巩固本期课程内容,使学员真正学以致用。

嵌入式LINUX试题

一、单项选择题 1.在宿主机上开启tftp服务时,所要修改的配置文件为()A./etc/exports B./etc/xinetd.d C.以上都不对 D./etc/xinetd.d/tftp 答案:D 2.内核在配置结束后,会将用户的选择结果保存在文件()中A.defconfig B.config C.default D..config 答案:D 3.u-boot指令中,下载文件的命令是() A.setenv B.reset C.tftp D.ping 答案:C 4.Kconfig文件中生成新的配置菜单使用() A.menu B.help C.default D.config 答案:A 5.在内核解压缩目录的Makefile文件中修改的ARCH变量实际是在指定()A.优化参数 B.目标系统架构 C.交叉编译器 D.编译参数 答案:B 6.在构建嵌入式linux平台过程中,具备开发能力的计算机我们称之为()A.计算机 B.宿主机 C.服务器 D.目标系统 答案:B 7.内核在编译时所依赖的编译规则文件是() A..config B.Makefile C.Make D.File 答案:B 8.linux下所使用的串口调试工具是()

B.nfs C.minicom D.tftp 答案:C 9.内核配置菜单生成时所依赖的文件是() A.config B.Kconfig C.Makefile D.kconfig 答案:B 10.U-Boot下tftp下载文件到目标系统的内存当中,在内存当中默认的地址是()A.0x30000000 B.0x30008000 C.0x30000100 D.0x30080000 答案:B 11.在操作过程中,内核编译所生成的内核压缩可执行文件是()A.s3c2440 B.linux-2.6.32.2 C.zImage D.选项均不真确 答案:C 12.系统环境变量中用来作为可执行文件搜索路径的变量是(); A.PWD B.HISTORY_SIZE C.LD_LIBRARY_PATH D.PATH 答案:D 13.创建设备文件有手动创建与自动创建之分,那么手动创建时标示设备所属种类时是用()来区分的。 A.次设备号 B.num C.-m D.主设备号 答案:D 14.嵌入式系统是面向()、实现特定功能的、软硬件可裁剪的计算机控制系统; A.家庭 B.特定领域 C.工厂 D.学校 答案:B 15.在Linux下,打补丁时所使用的命令是() A.patch

linux_内核移植方法及错误

出现问题: ## Starting application at 0x30008000 ... Uncompressing Linux............................................................. 解决方案: setenv bootargs console=ttySAC0,115200 mem=64M ;console明令在哪暂时还没解决??? setenv TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 Root-NFS: No NFS server available, giving up. VFS: Unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "" or unknown-block(2,0) Please append a correct "root=" boot option Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) 解决方法:把 08.05.11、<*> RAM disk support 09.27.07、<*> Compressed ROM file system support (cramfs) 1. 问题一 下载内核到flash中,运行到如下即停止没有下文: Uncompressing Linux……………………done,booting the kernel 卡在这里不动了 原因分析:可能是内核的启动参数传递时没有填写正确, 也可能是在linux内核中没对flash分区, 还有另一可能原因是在内核编译配置时没将串口驱动勾选。 解决办法: 如果是命令参数问题,则作如下修改:注释掉arch/arm/kernel/setup.c文件中的parse_tag_cmdline()函数中的strlcpy()函数,这样就可以使用默认的CONFIG_CMDLINE了,在.config文件中它被定义为"root=/dev/mtdblock2 ro init=/linuxrc console=ttySAC0,115200"(视具体情况而定),在内核配置文件的Boot options中填入也可。 如果是内核NAND flash分区的问题,则作如下修改:

嵌入式linux学习心得(多篇范文)

嵌入式linux学习心得 知识结构 1. 嵌入式处理器与裸机程序开发 2. linux系统管理 3. linux应用程序开发 4. linux驱动程序开发 5. linux内核开发与系统移植 一、处理器 1. arm处理器工作模式 2. arm系统寄存器 3. arm寻址方式 4. arm 汇编指令集 5. arm环境c语言编程 6. arm中断与异常 7. ads集成开发环境 8. 裸机程序开发(串口、lcd、时钟、led、按键……) 二、系统管理 1. linux定制安装 2. linux命令详解 3. samba、nfs、tftp、wireshark使用 4. shell编程 三、应用程序开发 1. gcc、gdb、makefile 2. 文件、时间编程 3. 多进程、多线程程序设计 4. 进程间通讯 5. 网络编程 6. qt图形化应用程序开发 7. android图形化应用程序开发 四、内核开发 1. linux内核配置与裁剪 2. linux内核模块开发 3. 根文件系统制作 4. 进程子系统 5. 内存子系统 6. proc文件系统 7. 系统调用 8. 内核定时器 9. 内核异常分析 五、驱动程序开发

1. 字符设备驱动程序 2. 总线、设备、驱动模型 3. 硬件访问技术 4. 中断处理 5. input设备驱动 6. platform驱动程序 7. pci、usb驱动程序 8. 网卡驱动程序 9. 触摸屏驱动程序 10. 串口驱动程序 学习顺序 1. 嵌入式处理器与裸机程序开发 2. linux系统管理 3. linux应用程序开发 4. linux内核开发基础 5. 嵌入式linux环境搭建 6. linux驱动程序开发 7. 深入学习linux内核 第二篇:嵌入式linux学习步骤 嵌入式linux学习步骤 作者:phantom 时间:XX-8-6 文章来源:来自网络 1、linux 基础 安装linux操作系统 linux文件系统 linux常用命令 linux启动过程详解熟悉linux服务能够独立安装linux操作系统能够熟练使用linux系统的基本命令认识linux系统的常用服务安装linux操作系统 linux基本命令实践设置linux环境变量定制linux的服务 shell 编程基础使用vi编辑文件使用emacs编辑文件使用其他编辑器 2、shell 编程基础 shell简介认识后台程序bash编程熟悉linux系统下的编辑环境熟悉linux下的各种shell 熟练进行shell编程熟悉vi基本操作熟悉emacs 的基本操作比较不同shell的区别编写一个测试服务器是否连通的shell

嵌入式Linux系统期末考试简答题运用题

简答题与应用题: 1、什么是嵌入式系统?主要有什么特点? 答:以应用为中心,以计算机技术为基础的,并且软件硬件是可剪裁的,能满足应用系统对功能、可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。他可以实现对其他设备的控制、监视或者管理等功能。 与通用的计算机系统相比,特点为: (1)面向特定应用,一般都有实时要求; (2)集先进性的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集成系统; (3)嵌入式系统是和具体应用对象有机结合在一起,因而其升级换代也是和具体的产品同步进行的。 (4)嵌入式系统的软硬件设计着重于高效率性。在最大限度满足应用需求的前提下,降低成本是必须要考虑的主要问题。 (5)嵌入式系统软件一般都固化在存储器芯片中。 2、嵌入式系统有哪几个部分? 答:嵌入式系统通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。3、嵌入式操作系统的作用是什么? *实际是一组软件模块集合 满足多任务处理、稳定运行、安全可靠、占用系统资源少、特有的实时事件处理、便于维护和管理、简洁良好的用户界面 4、什么是Linux?什么是嵌入式Linux? 答:严格来讲,Linux是指由Linux本人维护并不断更新的内核。 一个嵌入式Linux系统指的是一个基于Linux内核的,但不包含有关这个内核的任何专业的库或是用户工具的嵌入式系统。 5、用Linux内核构建嵌入式操作系统有什么优势(优良特性)? 答:(1)程度代码是可以获取的,可靠度高; (2)有完整的源码,软件丰富并且免费; (3)得到众多硬件生产家的广泛支持;包括cpu、计算机外围设备 (4)完善的通信协议、软件标准和文件管理机制; (5)提供完全免费且优秀的开发工具; (6)广泛的社群支持 (7)无需购买licence,是免费的; (8)不依赖特定厂商、供应商; (9)成本相对低廉。 6、RTOS(嵌入式操作系统)强调的实时是什么概念?与中断的关系? 答:实时指的是特定操作所消耗的时间(以及空间)的上限是可预知的。操作系统能够在规定响应时间内完成客户服务程序。中断程序响应中断并完成是在固定时间内。 7、什么是实时Linux?涉及到哪些软硬件内容? 答:实时Linux(RT-Linux)通过在Linux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux 内核作为实时内核的一个进程与用户进程一起调度,标准的Linux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行,这样既可以使用标准分时操作系统即Linux的各种服务, 又能提供低延时的实时环境。它在硬件上涉及到硬件中断,软件上涉及到对高优先级的实时硬件中断的快速响应。能在规定的时间内完成对突发事件的处理的Linux系统; 软件:中断服务程序、进程调度程序,硬件:嵌入式系统所采用的中断管理硬件。 8、试简要说明Linux内核构成,并简要说明各部分的功能? 答: MMU:内存管理单元,完成地址映射(应用虚拟地址方式) VFS:虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方

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