文档库 最新最全的文档下载
当前位置:文档库 › Linux内核在ARM上的裁减与移植

Linux内核在ARM上的裁减与移植

Linux内核在ARM上的裁减与移植
Linux内核在ARM上的裁减与移植

总第237期

2009年第7期

计算机与数字工程

Computer &Digital Engineering Vol.37No.7

81

 Linux 内核在A RM 上的裁减与移植

3

赵明鑫

(鞍山师范学院计算中心 鞍山 114005)

摘 要 主要介绍Linux 内核以及其在ARM 平台下的裁减、编译与移植过程。操作系统的移植主要分为配置、裁减源代码、交差编译等步骤。文章对以上的步骤进行了较为详尽的描述,并描述了具体实现裁减与编译的过程。操作系统移植是嵌入式系统开发的前提和基础,对嵌入式系统的开发具有重要意义。

关键词 Linux 内核 裁减 交叉编译 系统移植中图分类号 TP311

Tailor a nd Tra nspla ntation of L i nux Ker nel Based on A R M

Zhao Mingxin

(Comp uter Ce nter ,A nshan N or mal Collge ,A nsha n 114005)

Abs t rac t Mainly int roduces

p rune and t ransplantation of t he L inux ker nel at t he platf or m of A RM.Transplantation

of op erating syste m can be done in t he f ollowing steps :configuration ,tailor of source code ,cross 2compilation.This p ap er make a detailed descrip tion about items above ,a nd t he realization of it.Tra nspla ntation of operating syste m is t he base of embedded syste m ,so has a imp orta nt significa nce on develop ment of embedded system.

Ke y w ords

linux ker nel ,tailor ,cross 2compilation ,t ransplantation Class Nu m ber TP 311

图1 一个系统的组成1 Linux 系统及Linux 内核简介

一个完整的系统主要5部分组成:硬件、Bootloader 、操作系统内核、操作系统服务和用户应用程序,如图1所示。用户应用程序是指那

些字处理程序、互联网应用

程序或其它用户自行编制的各种应用程序;操作系统服务程序是指向用户提供的系统调用等接口程序,Bootloader 主要完成硬件检测和系统引导。操作系统内核是操作系统的主要核心部分,是整个系统的灵魂。操作系统服务程序、操作系统内核及Bootloader 被看作是操作系统部分[1

]。

Linux 内核主要由进程调度模块、内存管理模

块、文件系统模块、进程间通信模块和网络接口模

块5个模块构成,如图2所示。

图2 Linux 内核系统模块结构及相互依赖关系

进程调度模块负责控制进程对CPU 资源的使用,所采用的调度策略使各进程能公平合理地访问CPU ,同时保证内核能及时执行硬件操作;内存管

理模块用于确保所有进程安全共享机器主内存区,它还支持虚拟内存管理方式,使Linux 的进程可以使用比实际内存更多的内存容量,并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要的时候再交换回来;文件系统模块用于支持对外部设备的驱动和存储;进程间通信模块用于支持多种进程间的信息交换方式;网络接口

3

收稿日期:2009年3月29日,修回日期:2009年4月28日

作者简介:赵明鑫,男,硕士,实验师,研究方向:网络安全与计算机体系结构。

82

 赵明鑫:Linux内核在ARM上的裁减与移植第37卷

模块提供对多种网络通信标准的访问并支持许多网络硬件[2]。

Linux是开放源代码的,Linux操作系统设计本身具有的不同平台之间的可移植性,而且所需的存储空间也很小。Linux内核是Linux最底层、最核心的部分,Linux操作系统就是在Linux内核上发展壮大起来的,而内核的移植则是任何嵌入式Linux开发中最关键部分。所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持[3];

在Linux2.6的内核里主要包含有以下目录:

/arch主要是和体系结构相关的代码,里面几乎包含了目前流行的多数处理器体系结构,如ARM、Alp ha、1386、Mlp S、M68K、powerpC等。

/block主要是块设备的驱动程序。

/drivers字符设备以及一些常用计算机外设的驱动程序,主要针对通用计算机,也有针对具体嵌入式处理器的外设驱动。

/f s文件系统相关代码,有些用于虚拟文件系统。

/include主要包含各种CPU的头文件,也有一些通用的.h文件。

/init Linux内核的初始化代码,有main函数以及init线程的代码。

/incLinux进程通信机制相关代码。

/kemel通用的内核文件,包含内核基本功能部分的实现,如进程、时间等。

/mm内存管理部分。

/net网络设备的驱动程序。

2 Linux内核移植概述

所谓Linux移植就是把Linux操作系统源码针对具体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。在Linux移植的过程中可以通过裁减、修改源码等达到增强新系统的实时性或者减小新系统的体积等目的[4]。不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,因此在嵌入式开发中具有重要的意义。

其基本内容是:获取某一版本的Linux内核源码,根据我们的具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于我们目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC 机)的新操作系统[5]。由于开发过程大多是在In2 tel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为A RM、MIPS、Power PC、DragonBa等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接,然后生成一个内核映象文件,最后通过一些手段把该映象文件烧写(安装)到我们目标平台中。

ARM公司在32位RISC(Reduced Inst ruc2 tion Set Comp uter)CPU开发领域不断取得突破,其结构已经从V3发展到V6。ARM公司设计的芯核具有功耗低、成本低等显著优点,获得众多的半导体厂家的大力支持。到目前为止,A RM微处理器及技术的应用几乎已经深入到各个领域,包括工业控制领域、无线通讯领域、网络应用、消费类电子产品、成像和安全产品,手机中的32位SIM智能卡也采用了A RM技术,目前已经占有75%以上的32位RISC嵌入式产品市场,在嵌入式应用领域确立了市场领导地位[6]。

通常对Linux源码的改写工作难度较大,它要求你不仅对Linux内核结构要非常熟悉,还要求你对目标平台的硬件结构要非常熟悉,并且精通汇编语言,这部分工作通常由平台开发商提供。综上所述,Linux内核移植通常分为如下的步骤:

1)从网络上下载Linux源码及ARM平台上的补丁;

2)给Linux打补丁,使其源码符合A RM的系统结构;

3)对Linux进行配置与裁减;

4)建立交叉编译环境;

5)交叉编译和链接;

6)最后通过一些手段把生成的映象文件烧写(安装)到我们目标平台中。

3 Linux内核配置与裁减

到ARM公司网站ftp://https://www.wendangku.net/doc/c88359918.html,. uk上下载Linux内核和关于A RM平台的补丁。下载到Linux的usr/src目录下,一般文件名称为Patch2x.x.x2rmkx.gz(如:Patch22.6.24.gz)给Linux2.6.24打补丁:使用命令zcat../ patch22.6.24.gz|patch2p1(前面../表示补丁文件放在内核文件上一层目录)。

Linux内核裁减的配置菜单命令有好几个版本,运行:

第37卷(2009)第7期计算机与数字工程83

 

1)make config:基于文本的最为传统的配置界面,进入命令行,可以一行一行的配置,这不好使用,并且很烦琐;

2)make menuconfig:基于文本菜单的配置界面,是字符终端下常用的方式;

3)make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。

这三个命令中,make xconfig的界面最为友好,如果机器可以使用Xwindow,推荐使用这个命令,如果不能使用Xwin2dow,那么就可以使用make menuconfig。界面虽然比上面一个差点,总比make config的要好多了。所有内核配置菜单都是通过Config.in经由不同脚本解释器产生.con2 fig,在内核配置完成后就就会在当前目录下产生一个.config的配置文件,当然也可以直接修改此文件来配置内核。

选择相应的配置时,有三种选择,它们分别代表的含义如下:

Y为将该功能编译进内核;

N为不将该功能编译进内核;

M为将该功能编译成可以在需要时动态插入到内核中的模块。

在shell命令下输入命令进行内核配置:

cp arch/arm/configs/smdk2410_defconfig. config

$make menuconfig

在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的功能代码编译成为可加载模块,以减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选,与内核点紧密且经常使用的部分功能代码直接编译到内核中。主要是进行以下几项配置:选择处理器类型,板级支持,对RAM disk、设备驱动及文件系统的支持[7]。主要有:

1)配置M TD。

Memory Technology Device(M TD)support M TD支持

Direct char device access to M TD devices字符设备的支持

Caching block device access to M TD devices块设备支持

SMC Device Support

Simple Block Device for Nand Flash(BON FS)

SMC device on S3C2410SMD K

Use M TD From SMC

2)配置文件系统。

Kernel automounter version4support(also sup2 ports v3)文件系统自动挂载支持

DOS FA T f s supportt f s support对DOS/FA T 文件系统的支持

V FA T(Windows295)f s support对FA T32文件系统的支持

Yaff s filesystem on NAND对YA FFS文件系统的支持

Compressed ROM file system support对Cramf s 文件系统的支持

Simple RAM2based file system support对RAM 文件系统的支持

proc file system support对/proc和/dev设备文件系统的支持

/dev file system support(EXPERIM EN TAL)/ dev设备文件系统支持

Automatically mount at boot启动时自动挂载的支持

N FS file system support对N FS网络文件系统的支持

3)配置系统类型,主要是CPU类型。

S3C2410USB function support对USB功能的支持

ARM920T CPU idle设置处理器的类型

ARM920T I2Cache on

4 交叉编译环境的建立及内核的编译4.1 交叉编译环境的建立

无论编译器的功能有多么强大,但它的实质都是一样的,都是把某种以数字和符号为内容的高级编程语言转换成机器语言指令的集合。所谓的交叉编译就是:利用运行在某类机器上的编译器编译某个源程序生成在另一类机器上运行的目标代码的过程[8],如图3

:

图3 交叉编译开发模型

目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链(Toolschain),目前已经能够支持x86、ARM、M IPS、Power PC等多种处理器。商业的交叉开发环境主要有MetrowerksCodeWarrior、A RM Software Develop ment Toolkit、SDSCross

84

 赵明鑫:Linux内核在ARM上的裁减与移植第37卷

compiler、WindRiver Tornado、Microsoft Embed2 ded Visual C++等。

Linux使用GNU的工具,社区的开发者已经编译出了常用体系结构的交叉编译工具链。交叉编译环境工具链一般包括arm2gcc,binutils(含AS 汇编器,LD链接器等),glibc等。arm2linux2gcc 是交叉编译器,arm2linux2ld是交叉链接器。Glibc 是C语言库,它们既要运行于当前体系的系统下,又要能生成和处理目标体系的文件。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生成两种类型的可执行文件:用调试的可执行文件和用于固化的可执行文件。

笔者采用的编译工具为arm2linux2gcc3.4.1,它是gcc的arm改版。下载交叉编译工具arm2 linux2gcc3.4.1,将交叉编译器解压到相应的目录下,相应的命令为:

#tar jxf armlinuxgcc3. 4. 1.tar.bz2,要注意解压后的路径。

使用GNU编译程序,需要有Makefile文件。编译命令将根据Makefile文件的规则来决定如何编译和连接程序。Makefile文件的作用可想而知。

修改内核目录下的makefile文件,主要是以下几行:

注释掉ARC H:=$(shell uname2m|sed2e s/ i.86/i386/2e s/sun4u/sparc64/2e s/arm.〔/arm/2e s/sa110/arm/)这一行。

将A RCH:=改为ARC H:=arm

将CROSS_COM PIL E:=改为CROSS_COM2 PIL E:=交叉编译工具中arm2linux所在目录/ arm2linux2(如:CROSS_COMPIL E:=/usr/local/ arm/2.95.3/bin/arm2linux2)此后就可以进行编译。

4.2 交叉编译

配置完毕后用make命令编译内核,内核的编译就是一个非常简单的过程。执行:

1)#make clean

这条命令是在正式编译你的内核之前先把环境给清理干净,保证没有不正确的依赖文件存在。

2)#make dep

由于内核源码树中的大多数文件都与一些头文件有依赖关系,因此要将内核源码树中每个子目录产生的“depend”文件建立起依赖关系。

3)#make zImage

建立压缩的linux内核映像。编译完毕,在arch/arm/boot目录下将会生成A RM Linux内核映像文件zImage,这就是将要移植到目标机的内核映像文件

4)#make modules

这条命令是编译在配置时选择为模块的,即选项前为[M]的。如果内核配置选项中有选择编译为模块的,就需要此命令。

如果将来还要对内核重新进行编译,则需执行命令“makedistclean”,去除依赖关系并清除以前编译产生的文件,然后重复上述步骤即可。

内核映像分为压缩的内核映像和未压缩的内核映像,压缩的内核映像通常名为zImage,位于arch/arm/boot目录中。而未压缩的内核映像通常名为vmlinux,位于源码树的根目录中。把这个映像文件下载到开发板中,开发板提供了一套比较完整的通用系统的外围设备,配置bootloader的启动参数就能运行起来linux2.6的内核了。

参考文献

[1]魏忠,蔡勇,雷红卫.嵌入式开发详解[M].北京:电子工业出版社,2003

[2]刘峥嵘,张智超.嵌入式Linux应用开发详解[M].北京:机械工业出版社,2004

[3]邹球.基于ARM2410嵌入式Linux内核的编译与移植[J].计算机工程应用技术,2008,(3):1157~1159

[4]陈莉君.深入理解Linux内核[M].北京:中国电力出版社,2001

[5]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006,7

[6]马忠梅.ARM嵌入式处理器的结构与应用基础[M].北京:北京航空航天大学出版社,2002

[7]张晓林,崔迎炜.嵌入式系统设计与实践[M].北京:北京航空航天大学出版社,2006

[8]Atmel Company.ARM920T TM based Microcon2 troller A T91RM9200data sheet[EB/OL].2007-10-08. http://www.atme.l com/literature

实验四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

arm-linux下usb转串口移植手册

arm-linux下usb转串口移植手册: 讲述在嵌入式平台上,移植usb转串口的步骤: 1、配置Kernel 2、文件系统配置等。 Kernel:在配置内核时:加入usb转串口的支持、加入usb转串口器件的支持。 不同厂家的usb转串口工具需要的驱动可能不一样。 Device Drivers ---> USB support ---> --- USB port drivers USB Serial Converter support ---> <*> USB Serial Converter support [*] USB Serial Console device support [*] USB Generic Serial drivert < > USB AIRcable Bluetooth Dongle Driver (EXPERIMENTAL) <*> USB FTDI Single Port Serial Driver (EXPERIMENTAL) 本次实验才用的是FTDI的usb转串口工具 在配置Kernel时,还可以加入对其他厂家的驱动支持。 文件系统: 1、在/dev目录下建立设备文件/dev/ttyUSB0 mknod /dev/ttyUSB0 c 188 0 2、在运行/sbin/getty登陆命令之前要先设置好:usb转串口对应端口的波特率、停止位等。int usb_to_serial_init(viod) { iUSBTORS232 = open( "/dev/ttyUSB0", O_RDWR); if (iUSBTORS232 iRS232 < 0) { printf("Can't open device dev/ttyUSB00"); return -1; } set_speed(iUSBTORS232 iRS232,BAUDRA TE); set_Parity(iUSBTORS232 iRS232,8,1,'n'); close(iRS232); } 3、在/etc/inittab 加入如下命令。同时用consel和usb转串口工具登陆。 # Example of how to put a getty on a serial line (for a terminal) ::respawn:/sbin/getty -L ttyS0 115200 vt100 ::respawn:/sbin/getty -L ttyUSB0 115200 vt100

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

内核移植阶段 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。 内核和用户界面共同为用户提供了操作计算机的方便方式。也就是我们在windows下看到的操作系统了。由于内核的源码提供了非常广泛的硬件支持,通用性很好,所以移植起来就方便了许多,我们需要做的就是针对我们要移植的对象,对内核源码进行相应的配置,如果出现内核源码中不支持的硬件这时就需要我们自己添加相应的驱动程序了。 一.移植准备 1. 目标板 我们还是选用之前bootloader移植选用的开发板参数请参考上文的地址: https://www.wendangku.net/doc/c88359918.html,/thread-80832-5-1.html。bootloader移植准备。 2. 内核源码 这里我们选用比较新的内核源码版本linux-2.6.25.8,他的下载地址是 ftp://https://www.wendangku.net/doc/c88359918.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。

成功移植OpenSSH到ARM Linux开发板

成功移植OpenSSH到ARM Linux开发板 概述 如果是用到一些没有SSH的开发板,对于部分的应用开发来说,会受到影响,比如使用ARM DS-5进行RSE远程管理操作时,就会出现错误。下面就具体如何进行OPENSSH移植进行详细介绍。 步骤 1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包。 openssh ?本地下载:openssh-6.6p1.tar.gz(1.22 MB, 下载次数: 2470) ?官网下载:https://www.wendangku.net/doc/c88359918.html,/portable.html openssl ?本地下载:openssl-1.0.1h.tar.gz(4.27 MB, 下载次数: 2647) ?官方下载:https://www.wendangku.net/doc/c88359918.html,/source zlib ?本地下载:zlib-1.2.8.tar.gz(557.71 KB, 下载次数: 3499) ?官方下载:https://www.wendangku.net/doc/c88359918.html,/ 2.部署工作目录创建用户主目录下创建工作目录: 3.解压并编译

注意:openssh不需要make install 4.操作目标板 b)从PC机上将以下文件拷贝到目标板Linux系统中 PC机 /home/gary/work/openssh-6.6p1/ 目录下的 ?scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan 共8个文件拷

贝到目标板 /usr/local/bin ? moduli ssh_config sshd_config 共3个文件拷贝到目标板 /usr/local/etc ? sftp-server ssh-keysign 共2个文件拷贝到目标板 /usr/libexec c )生成Key 文件 将生成的 ssh_host_*_key 这4个文件copy 到目标板的 /usr/local/etc/ 目录下。其中 ssh_host_ed25519_key 是SSH 第二版协议用到的key ,放到开发板之后,要 d )修改目标板passwd 文件。 5.测试 如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否可以用 ps 命令查看sshd 是否在工作 如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接! OK !不出意外的话可以成功,

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)

ARMLinux移植基本概念

ARM的嵌入式Linux移植体验之基本概念 日前,笔者作为某嵌入式ARM(硬件)/Linux(软件)系统的项目负责人,带领项目组成员进行了下述工作: (1)基于ARM920T内核S3C2410A CPU的电路板设计; (2)ARM处理下底层软件平台搭建: a.Bootloader的移植; b.嵌入式Linux操作系统内核的移植; c.嵌入式Linux操作系统根文件系统的创建; d.电路板上外设Linux驱动程序的编写。 本文将真实地再现本项目开发过程中作者的心得,以便与广大读者共勉。第一章将简单地介绍本ARM开发板的硬件设计,第二章分析Bootloader的移植方法,第三章叙述嵌入式mizi Linux的移植及文件系统的构建方法,第四章讲解外设的驱动程序设计,第五章给出一个已构建好的软硬件平台上应用开发的实例。 如果您有嵌入式系统的开发基础,您将非常容易领会本文讲解地内容。即便是您从来没有嵌入式系统的开发经历,本文读起来也不会生涩。您可以通过如下email与作者联系:21cnbao@https://www.wendangku.net/doc/c88359918.html,。 2.ARM体系结构 作为一种RISC体系结构的微处理器,ARM微处理器具有RISC体系结构的典型特征。还具有如下增强特点:

(l)在每条数据处理指令当中,都控制算术逻辑单元(ALU)和移位器,以使ALU和移位器获得最大的利用率; (2)自动递增和自动递减的寻址模式,以优化程序中的循环; (3)同时Load和Store多条指令,以增加数据吞吐量; (4)所有指令都条件执行,以增大执行吞吐量。 ARM体系结构的字长为32位,它们都支持Byte(8位)、Halfword(16位)和Word(32位)3种数据类型。 ARM处理器支持7种处理器模式,如下表: 大部分应用程序都在User模式下运行。当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,也不能改变模式,否则就会导致一次异常。对系统资源的使用由操作系统来控制。 User模式之外的其它几种模式也称为特权模式,它们可以完全访问系统资源,可以自由地改变模式。其中的FIQ、IRQ、supervisor、Abort和undefined 5种模式也被称为异常模

Linux C语言 socket编程 聊天室 可移植到arm开发板

sockets聊天室 1.1介绍 包括一个客户端和一个服务器。可实现多人聊天和两人一对一单独聊天。 1.2开发环境和工具 Linux gcc 1.3程序设计 服务器: 1. 声明一个client结构体,包含用户自己的socket描述符mid,自己的用户名name以及 与自己聊天对象的Socket描述符fid(默认是-1,即公共聊天室)。并定义一个结构体数组。 2. 服务器新建一个socket设置默认的ip为自动获取,调用bind()函数绑定服务器socket 与ip。 3. 开启listen()监听客户端的连接请求。 4. 在while循环里,用accept()等待连接,连接成功后,把accept()返回的socket描述 符存入client结构体数组中。 5. 每成功新建一个连接,就创建一个对应的子线程,接收并转发消息。 6. 定义void rec_snd(int n)这个函数,用于接收和转发消息。可选择公共聊天室和私聊, 私聊需要正确输入对方的名字。连接建立以后就可以发送消息。当接收的消息为bye 时,断开当前连接,如果是一对一私聊,一方断开另一方自动转入公共聊天室。 客户端: 1.新建一个socket,并与ip,端口进行绑定。 2.调用connect连接服务器。连接成功后新建一个线程用于发送消息, 主线程在while中调用read()接收服务器消息。 3.Snd()函数用于向服务器发送消息。 4._select()函数用于选择功能。 1.4应用演示 服务器端成功开启等待连接:

当有客户端连接时,会显示ip端口,socket标识符信息。客户端成功连接上服务器时会收到提示输入用户名: 输入姓名后会提示选择功能:

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.wendangku.net/doc/c88359918.html,

linux arm 移植手册(分享)

Linux系统移植 目 录 第一部分 前言 (8) 1 硬件环境 (8) 1.1主机硬件环境 (8) 1.2 目标板硬件环境 (8) 1.3工具介绍 (8) 2软件环境 (8) 2.1主机软件环境 (8) 2.1.1 Windows 操作系统 (8) 2.1.2 Linux操作系统 (8) 2.1.3 目标板最后运行的环境 (9) 2.2 Linux下工作用户及环境 (9) 2.2.1 交叉工具的安装 (9) 2.2.2 u-boot移植工作目录 (9) 2.2.3 内核及应用程序移植工作 (9) 2.3 配置系统服务 (10) 2.3.1 tftp服务器的配置 (10) 2.4 工具使用 (12) 2.4.1 minicom的使用 (12) 3 作者介绍 (13) 3.1 策划, 组织, 指导, 发布者 (13) 3.2 ADS bootloader部分 (13) 3.3 交叉工具部分 (13) 3.4 uboot部分 (13) 3.5 内核部分 (13) 3.6 应用程序部分 (13) 3.7 网卡驱动部分 (13) 3.8 Nand Flash 驱动部分 (13) 第二部分 系统启动bootloader的编写(ADS) (14) 1 工具介绍 (14) 1.1 ADS 命令行命令介绍 (14) 1.1.1 armasm (14) 1.1.2 armcc, armcpp (14) 1.1.3 armlink (14) 2 基本原理 (15) 2.1 可执行文件组成及内存映射 (15) 2.1.1 可执行文件的组成 (15)

2.1.3 启动过程的汇编部分 (17) 2.1.4 启动过程的C部分 (17) 3 AXD的使用以及源代码说明 (18) 3.1 源代码说明 (18) 3.1.1 汇编源代码说明 (18) 3.1.2 C语言源代码说明 (23) 3.1.3 源代码下载 (23) 3.2 AXD的使用 (23) 3.2.1 配置仿真器 (23) 3.2.2 启动AXD 配置开发板 (23) 第三部分 GNU交叉工具链 (25) 1 设置环境变量,准备源码及相关补丁 (25) 1.1 设置环境变量 (25) 1. 2 准备源码包 (25) 1.2.1 binuils (25) 1.2.2 gcc (25) 1.2.3 glibc (25) 1.2.4 linux kernel (26) 1.3 准备补丁 (26) 1.3.1 ioperm.c.diff (26) 1.3.2 flow.c.diff (26) 1.3.3 t-linux.diff (26) 1.4 编译 GNU binutils (26) 1.5 准备内核头文件 (26) 1.5.1 使用当前平台的gcc编译内核头文件 (26) 1.5.2 复制内核头文件 (27) 1.6 译编glibc头文件 (27) 1.7 编译gcc第一阶段 (27) 1.8 编译完整的glibc (27) 1.9 编译完整的gcc (28) 2 GNU交叉工具链的下载 (28) 2.1 ARM官方网站 (28) 2.2 本文档提供的下载 (28) 3 GNU交叉工具链的介绍与使用 (29) 3.1 常用工具介绍 (29) 3.2.1 arm-linux-gcc的使用 (29) 3.2.2 arm-linux-ar 和 arm-linux-ranlib的使用 (30) 3.2.3 arm-linux-objdump的使用 (30) 3.2.4 arm-linux-readelf的使用 (31) 3.2.6 arm-linux-copydump的使用 (32) 4 ARM GNU常用汇编语言介绍 (32)

基于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移植过程

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

基于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主要是提供用户程序所使用的一些基本的函数库。 自行搭建交叉编译环境通常比较复杂,而且很容易出错。本文使用的是

如何向一块ARM裸板移植linux系统

11. How to port Linux to a raw ARM board This document provides a summary of the steps when porting Linux to a new ARM platform or a new processor. In this page we assume that the reader has a knowledge of C and assembly programming and is familiar with ARM and operating systems concepts such as interrupt handling, system calls and memory management. Some useful information can be found in the kernel documentation section on how to configure the kernel itself. It is probably best to familiarize with Linux on x86 before if you are not familiar with embedded platforms. In addition to Linux kernel source documentation, some notes maintained by community members are available on booting and setting up Linux for ARM platforms, you can consult the following kernel document and Vincent Sander?s documentation for additional information. Porting steps ?Install a cross-development environment. ?Setup the board and ensure that the serial port is working so we can print data through the serial port. ?Download and install the Linux kernel, most of the porting work will be done at this level. ?Add board specific code into the kernel tree. ?Build a kernel image to run on the board ?Test that early kernel printk is working ?Get the real printk working with the serial console. ?For a new board, a new board-specific directory should be added as well as support for interrupt handling, kernel timer services and mapping for memory areas. ?Ethernet drivers are usually the next drivers to focus on as they enable setup of NFS root file system to get access to user utilities and applications. ?Filesystem can be provided in different forms which are listed on LinuxFilesystem

华清远见嵌入式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_内核移植方法及错误

出现问题: ## 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

相关文档
相关文档 最新文档