基于S3C2410处理器目标板的Linux移植
基于S3C2410X的Linux移植研究

基于S3C2410X 的Linux 移植研究①张维维 逄凌滨 刘忠富(大连民族学院机电信息工程学院,辽宁大连 116605)摘 要:为了充分利用S3C2410X 丰富的外围资源,实现多任务同时进行,需要嵌入一个小的操作系统1介绍了移植Linux 操作系统到S3C2410X 的过程,包括建立交叉编译环境、裁减和编译启动代码(Boot Loader )、Linux 内核、制作文件系统1关键词:嵌入式系统开发;S3C2410X;Linux 移植中图分类号:TP316文献标识码:A 文章编号:1009-315X (2007)05-0102-02 随着科学技术的不断发展,电子控制技术已经应用到生活中的每一个角落1S3C2410X 作为AR M9主流处理器,具有丰富的外围资源,主频可以达到200MH z ,在电子信息产业中应用极其广泛1一般没有嵌入操作系统的S3C2410X 只能当作普通的单任务处理器使用,极大地浪费了系统资源1如果在S3C2410X 上嵌入操作系统,使之能够同时处理多个任务,即可解决这一问题1本研究在S3C2410X 上嵌入Linux 操作系统,利用Linux 操作系统对S3C2410X 的资源进行实时调度,实现多个任务“同时”进行,提高了系统资源的利用率11 建立交叉编译环境首先,在H ost (主机)上要有一个Linux 环境1有两种办法:一种是在PC 机上安装Linux 操作系统,在Linux 操作系统中编译内核和模块之后把镜象文件下载到Object (目标机)中;另外一种就是在Windows 操作系统下安装软件Cyg win ,Cyg 2win 软件能在Windows 操作系统下提供一个模拟的Linux 运行环境,这样就省去了在两个系统之间来回切换的不便1其次,是要建立或安装一个交叉编译工具链1Linux 的交叉编译环境主要包括以下几个部分:(1)Binutils 1用于操作二进制文件的实用程序集合1包括诸如ar 、as 、objdum p 、objcopy 这样的实用程序1(2)G CC 1G NUC 编译器1(3)G libc 1所有用户应用程序都将链接到的C库1避免使用任何C 库函数的内核和其他应用程序在没有该库的情况下进行编译1(4)Header Files Link 1头文件链接1交叉编译工具链建立过程中正确的编译、安装顺序是Binutils →Header files link →G CC →G libc 1工具链包括下载源代码、修补补丁、配置、编译、设置头文件、安装等操作1为了减少工作量也可以直接下载已有的工具链,不需要自己编译1工具链安装不需要人为考虑安装顺序,安装无误后就可以使用交叉编译工具链了1但是有些应用软件对交叉编译工具链的要求比较高,开发人员必须自己编译交叉编译工具链12 裁减和编译启动代码系统引导程序通常称为Boot Loader 1BootLoader 首先完成系统硬件的初始化,包括时钟的设置、存储区的映射等,设置堆栈指针,然后跳转到操作系统内核的入口,将系统控制权交给操作系统,在此之后系统的运行和Boot Loader 再无任何关系1Boot Loader 的实现高度依赖于硬件,包括处理器的体系结构、具体型号、电路板的设计1在S3C2410X 上移植Linux 常用的Boot Loader 是由韩国Mizi 公司提供的vivi 1编译vivi 必须修改vivi 根目录下或者更下层文件夹中的Makefile 文件,可以借助Ultra Edit 软件打开、修改和保存Makefile 文件,然后进入真正裁减和编译vivi 的阶段1在Cyg win 命令窗口运行如下命令:#cd vivi①收稿日期:2006-11-231作者简介:张维维(1981-),女,辽宁庄河人,大连民族学院机电信息工程学院助教1研究方向:嵌入式、单片机、通信技术.学报大连民族学院Number 5(G eneral N o 140)JOURNA L OF DA LIAN NATIONA LITIES UNIVERSITYSeptember ,2007#make menucon fig自动弹出如图1所示界面,使用键盘对vivi进行配置1按下右向箭头(→)进入下一级目录,按下左向箭头(←)进入上一级目录1按下空格键对目录下的选项选择或取消选择1配置结束后把光标移到<Exit >后按下“Enter ”,并选择save 保存配置1图1 vivi 配置界面配置结束后运行如下命令:#make编译vivi ,如果编译无误就在vivi 目录下生成名为“vivi ”的镜象文件,至此对vivi 的裁减和编译过程结束13 裁减和编译Linux 内核通过裁减和编译Linux 内核可以去掉冗余的部分,也可以根据系统要求来增加适当的内容,为自己的系统量身订做一个满意的内核配置1本文采用的是比较成熟的Linux2.4.18版本1在Cyg win 窗口中依次运行如下命令来完成裁减和编译Linux 1#make mrproper #make xcon fig #make dep #make clean#make zImage 或makebzImage(1)make mrproper 命令1用于把解压缩的软件包中前人编译生成的冗余文件删除掉1(2)make xcon fig 命令1用于对Linux 命令进行界面式配置,使用该命令可以直接使用鼠标选择或取消选择,去掉不需要的m odule (模块),加上自己的硬件系统必需的m odule 或驱动程序1界面如图2所示,配置结束后点击“Save and Exit ”按钮,保存配置并退出1图2 Linux 内核配置界面(3)make dep 命令1用于读取配置过程中生成的配置文件,并创建对应的依赖关系树1(4)make clean 命令1用于删除前面步骤留下的不需要的文件1(5)make zImage 或make bzImage 命令1二者生成的内核都是使用gzip 压缩的,只要使用一个就够了,区别在于使用“make bzImage ”可以生成更小一点的内核1镜像编译过程中会遇到很多问题,要根据开发人员的具体项目对内核作相应的改动1最后在Πusr Πsrc Πlinux Πarch Πarm 目录下生成bzImage 文件,就是Linux 的内核镜象文件14 制作文件系统目前常用的文件系统主要有yaffs 、ext2、ext3、cram fs 等1生成文件系统通常都有一定的工具,例如编译busybox 就可以给你的文件系统加上或者去掉某些命令,运行命令“make cram fs root root.cram fs ”就可以把你的“root ”文件夹作成一个新的文件系统,且根目录是Πroot 1配置和编译busybox 的过程、界面与配置和编译内核的过程、界面类似,这里就不再赘述了1做好以上工作后,把Boot Loader 、内核镜象文件和文件系统镜象文件烧到Flash 中的相应地址空间,就成功地将嵌入式操作系统移植到目标板上,要用到的工具有Windows 自带的超级终端、DNW 、Flash 烧写工具等1当然,如果硬件系统有LC D ,还可以移植一个图形用户界面(G UI )如Qt 等,这样移植之后的操作系统就更像人们所熟知的可视系统了15 结束语介绍了嵌入式系统移植的关键环节,并指出每个环节应该注意的问题1在S3C2410X 上成功地移植了Linux 操作系统.系统目前运行稳定,处理速度快1(下转第107页)2007年第5期(总第40期)张维维,等:基于S3C2410X 的Linux 移植研究9月15日出版Free Vibration of the Bending Beam about Different Tensile -compressive ModulusLIU Xiang -bin SONG H ong -w ei(School of Architecture &Civil Engineering ,Dalian Nationalities University ,Dalian Liaoning 116605,China )Abstract :This article has studied the free vibration problem of the bending beam with different tensile -com pres 2sive m odulus.In the classic elasticity theories ,the main vibration m ode function of the bending beam is continuous sine function.When the quantity of different tensile -com pressive m odulus about material has been led into it ,its inherent frequency and main vibration m ode function will both change ,the inherent frequency will change with the variety of the bending rigidity De.And the main vibration m ode function will change into cent segment function via the revulsion of the neutral axis when it vibrates.The m ore different the m odulus quantity is ,the m ore it changes.When the elastic m odulus E +equals to E -,the cent segment function will come back to the classic elasticity theo 2ry.K ey w ords :different m odulus ;bending beam ;free vibrations(责任编辑邹永红)(上接第103页)参考文献:[1]杜春雷.ARM 体系结构与编程[M].北京:清华大学出版社,2003.[2]英蓓特公司.Embest ARM EduK it II 用户手册[Z].深圳,2005.[3]倪继利.Linux 内核分析与编程[M].北京:电子工业出版社,2005.[4]三星公司.um -S3C2410X.pd f [E B ΠO L ].http :ΠΠw w w..R esearch on the Transplant B ased on S 3C 2410XZHANG Wei -w ei PANG Ling -bin LIU Zhong -fu(C ollege of E lectromechanical &In formation Engineering ,Dalian Nationalities University ,Dalian Liaoning ,116605,China )Abstract :An operating system should be transplanted into S3C2410X to distribute its res ources in order to makefull use of the abundant peripheral res ources of S3C2410X ,and to realize “multi -task ”.The whole process of transplanting is introduced based on the practice ,including setup the across com piling environment ,tailoring and com piling Boot Loader ,Linux and making file system.K ey w ords :development of embedded system ;S3C2410X;Linux transplant(责任编辑刘 敏)2007年第5期(总第40期)刘相斌,等:不同模量弯曲梁的自由振动9月15日出版。
Linux_2_6内核在S3C2410上的移植分析和实现

福建电脑2010年第2期Linux-2.6内核在S3C2410上的移植分析和实现陶华良(浙江工商大学计算机与信息工程学院浙江杭州310018)【摘要】:嵌入式Linux是使用最广泛、最有发展前景的嵌入式操作系统。
对Linux内核进行配置、剪裁和移植是嵌入式系统开发的重要工作之一。
本文详细阐述了Linux-2.6内核在S3C2410上的移植方法,给出了具体实现的代码,并对重点步骤进行了分析。
【关键词】:嵌入式系统Linux内核移植S3C24101.引言嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统[1]。
它包括硬件系统和软件系统两个部分,前者一般是指嵌入式微处理器和外围硬件设备,后者一般包括嵌入式操作系统和用户应用程序。
基于自身的特点,嵌入式系统要求嵌入式操作系统拥有简洁的代码、合理的大小、可靠的质量,并具有低成本、多任务、易开发、易剪裁的特性。
目前,全世界有两百多种嵌入式操作系统,其中著名的有:C/OS、Vx-Works、Neculeus、Linux和Windows CE等[1]。
Linux的种种特性,特别是免费使用和自由传播的特性,使嵌入式Linux成为发展最快、应用最广泛的嵌入式操作系统。
在嵌入式系统的开发过程中将涉及到嵌入式操作系统的移植,主要包括Bootloader移植、内核移植和文件系统移植三个方面。
本文详细描述了Linux-2.6内核在以S3C2410为处理器的实验平台上的移植过程。
2.分析和实现2.1交叉编译环境的建立在一种计算机环境下运行编译程序,生成能在另一种计算机环境下运行的目标程序的过程,叫做交叉编译。
在嵌入式系统开发的过程中,考虑到具体运行平台(一般称为目标平台)的资源和运算能力的局限性,我们往往使用功能强大的PC机(一般称为宿主机)来开发和调试源程序,然后通过交叉编译,生成能够运行在嵌入式系统上的目标代码,最后下载或烧写到目标平台中,完成开发工作。
转在s3c2410板上移植2.6kernel_mmeelv

转在s3c2410板上移植2.6kernel_mmeelv最近这几天的晚上我在移植2.6的kernel。
因为水平很菜,所以不太顺利。
我用的是kernel是2.6.14.2, 这个内核直接支持S3C2410的板子,不必打任何补丁。
从下载了内核。
然后找来了3.4.1的GCC交叉编译器(经典的2.95.3编译2.6内核会出错)。
解开内核开始修改。
(该部分转贴自:/blog/1391393.html 感谢superlp)1. 增加nand分区信息打开arch/arm/mach-s3c2410/devs.c增加头文件#include <linux/mtd/partitions.h>#include <asm/arch/nand.h>#include <linux/mtd/nand.h>增加分区数据/*****************************addhere***************************/static struct mtd_partition partition_info[] ={{name: "loader",size: 0x00020000,offset: 0,}, {name: "param",size: 0x00010000,offset: 0x00020000,}, {name: "kernel",size: 0x001c0000,offset: 0x00030000,}, {name: "root",size: 0x00200000,offset: 0x00200000,mask_flags: MTD_WRITEABLE,}, {name: "user",size: 0x03af8000,offset: 0x00400000,}};struct s3c2410_nand_set nandset ={nr_partitions: 5 ,partitions: partition_info ,};struct s3c2410_platform_nand superlpplatform={ tacls:0,twrph0:30,twrph1:0,sets: &nandset,nr_sets: 1,};/********************************endadd****************************/struct platform_device s3c_device_nand = {.name = "s3c2410-nand",.id = 0xec,.num_resources = ARRAY_SIZE(s3c_nand_resource),.resource = s3c_nand_resource,.dev = {.platform_data = &superlpplatform //***********add here*****}};(分区部分根据实际情况修改)2. 打开arch/arm/mach-s3c2410/mach-smdk2410.c把"&s3c_device_nand"添加到__initdata3. 打开drivers/mtd/nand/s3c2410.c把chip->eccmode = NAND_ECC_SOFT;改成chip->eccmode = NAND_ECC_NONE;4. 修改Makefile, 把设定SUBARCH := arm CROSS_COMPILE ?= arm-linux-(事先得安装交叉编译器)接着开始make menuconfig,并且载入arch/arm/configs/def_s3c2410config,保存后就make,如果编译器没有问题得话,应该一次就能编译成功。
基于S3C2410处理器的Linux移植

内核启 动参数 , 内核 (e e 和根 文件系统 四个 部 km 1 )
分 , Fah中存 储 的示 意 图如 图 1 示 。 在 l s 所
长足 的发展 。嵌 入式 Lnx 按 照嵌 入 式 操 作 系统 i 是 u 的要 求设计 的一 种小 型操 作系统 。 由一个 内核 以及
一
些 根据需 要 进行 定 制 的系统模 块组 成 。其 内核很
主要面 向手 持式 设备 以及高 性 价 比 , 低功 耗 的应用 , 内部集 成 L D, S C U B等 控 制 器 。Lnx内核采 用 26 i u . 版本 的 内核 , 吸 收 了一 些 新 技 术 , 它 在性 能 , 可靠 性 和 可扩展 性 方面 有较 大 提高 。
1 嵌 入 式 Lnx移 植 方 法 i u
维普资讯
2 0 年第8 07 期
中图分类号 :P 1 T 36 文献标识码 : A 文 章编号 :0 9 52 20 )8 O7 4 10 — ¥ 2 1 理 器 的 Lnx移 植 3 4 0处 C iu
杨建伟 ,杨 燕翔
图 l lah中存 储 的 示 意 图  ̄s l
小 , 般 只有几 百 k ,即使 加 上其他 必 要 的模 块 和 一 b 应用 程序 ,所需 的存 储 空问 也很 小 。非 常 适合 于移 植到 嵌 入式 系统 中去 ,同时 它还 具有 多 任 务 多进 程
b s d o e p o e s ro 3 2 1 F rt t a st e t n p a t to f mb d e i u te t e cie a e n t rc so f¥ C 4 0. i y r s l e me d o e d d L n x, n i d s r s h s is h a n d h e h b h w t u l p a n i n n rt s l t, c s g o e f me r d f n t n l y o o f a e d o o b i u n e vr me tf a p a d o o r n n f u i n t r wok a u ci ai fB o o d r a o n h a n o t l n r p a n x k me . hi t s l t f iu e 1 1 sme o rv sh g f c i .t e t s l td L n x i e e e d d s s m n a n o L td p e ih e e t e h r p a e i u n t mb d e y t h o v n a n h e
基于S3C2410的嵌入式Linux系统构建

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

.name = "kernel",
.size = 0x00180000,
.offset = 0x00180000,
}, {
.name = "root",
flag: 0
}, {
name: "param",
offset: 0x00030000,
size: 0x00150000,
.resource = s3c_nand_resource,
.dev = {
.platform_data = &superlpplatform //***********add here*****
}
};
2.在arch/arm/mach-s3c2410/mach-smdk2410.c中找到__initdata
flag: 0
}, {
name: "kernel",
offset: 0x00180000,
size: 0x00180000,
[*] MTD partitioning support
……
--- User Modules And Translation Layers
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
老是说缺了几个文件的,结果还是比较笨办法下下来的文件,复制那边没有的文件过去才搞好。
首先是将内核解压缩,再打补丁。我也不知道打补丁有什么具体的作用,只不过看别人做了,我也跟着做
2440_Linux系统移植

IT_2440Linux系统开发移植一.软硬件配置(1)目标板硬件环境CPU:S3C2440ALSDRAM:SamSung K4S561632HNand flash:K9F1208(64MB)以太网芯片:DM9000LCD:Toshiba LPM084P3638.4’接口:USB;PWM控制蜂鸣器;网络接口;UART;键盘(2)目标板软件环境Linux操作系统内核版本:Linux2.6.12Bootloader:优龙viviQtopia版本:1.7.0Qt版本:2.3.7内核交叉编译工具:ARM-Linux-GCC3.4.1Qtopia交叉编译工具:ARM-Linux–Gcc3.3.2Busybox编译版本:1.1.3二.开发流程B ootloader启动代码移植使用优龙的vivi启动代码操作步骤如下:1)将优龙的源代码拷贝到指定目录;C:\桌面\开发镜像\it24402)打开ADS v1.2编译软件,点击file→打开IT2440A_bios.mcp→打开nand.c3)修改Nand Flash的分配系统空间大小,如图(1)所示,找到结构体函数,static struck partition NandPart修改如下。
注意:修改后需要保存。
图(1)4)Nand flash映射到SDRAM中需要修改SDRAM导入的地址空间大小和载入的初始地址。
修改如下:(1)打开ADS v1.2编译软件,点击file→打开IT2440A_bios.mcp→打开u2440mon.c 修改如下:(2)打开ADS v1.2编译软件,点击file→打开IT2440A_bios.mcp→打开nand.c修改如下:对于NAND FLASH修改不光只是修改NAND FLASH对整个系统空间的分配大小,还要修改载入到SDRAM的地址和空间大小,大小要与NAND FLASH大小分配相匹配。
修改后才能载入nand flash分配空间大小。
ARM Linux在S3C2410上的移植

中图法分类号 : P 2 (08 1.180 10.04 2 0) 64 3.3
P rigARM n x t ¥ C2 0 o tn Liu o 3 41
S ONG i YAN ipn , GAN a , HUANG a —h n Ka, L — i g Ln Xio s e g
板 , 统 框 图如 图 l 示 。主 要 包 括 : 储 系 统 、 统接 口、 系 所 存 系 用
户 接 口( 示 L D 与 键 盘 ) 个 部 分 。 显 C 3 ¥ C 40把 外 部 复 位 信 号 作 为 一 个 中 断 处 理 ,在 系 统 复 321
2 硬 件 平 台
本 文 的 移 植 平 台 是 以 ¥ C 4 0 核 心 的 H A M9开发 3 21 为 H R
将 AR Ln x 植 到 该处 理 器 平 台 对 于 构 建 高 性 能 通 用 嵌 入 M i 移 u 式 开 发 平 台具 有 很 大 的 实 际 意 义 。
●
具 有 很 好 的移 植性 。
码 稳 定 性 和 低 成 本 等 特 性 ,非 常适 合 于 嵌 入 式 系 统 的开 、高
发 ,成 为 了嵌 入 式 领 域 里 发 展 最 快 的 操 作 系 统 。而 ¥ C 40 3 2 1 是 三 星 公 司一 款 基 于 A M9 0 的优 秀 嵌 入 式 通 用 处 理 器 。 R 2T
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文描述了将Linux移植到基于S3C2410处理器目标板上的方法与过程。
介绍了目标平台和Linux,并说明了如何搭建移植环境,着重介绍了Bootloader 的架构和功能以及Linux内核的移植。
结果证明该方法是可行的。
移植后Linux 在嵌入式系统中运行良好。
关键词:嵌入式系统;移植;Linux内核;S3C2410处理器引言嵌人式系统就是以应用为中心、以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
ARM 嵌人式芯片是一种高性能、低功耗的RISC芯片。
它由英国ARM公司设计,世界上几乎所有的主要半导体生产商都生产基于ARM体系机构的通用芯片,或在其专用芯片中应用相关ARM技术。
在2001年基于arm内核的处理器占市场份额的75%,成为业界的龙头。
Linux是免费发行的、快速高效的操作系统,Linux的出现在计算机世界引发了一场革命。
Linux操作系统以代码开放、功能强大又易于移植成为嵌入式操作新兴力量。
嵌人式Linux是按照嵌人式操作系统的要求设计的一种小型操作系统,由一个内核以及一些根据需要进行定制的系统模块组成。
其内核很小,一般只有几百kb,即使加上其他必要的模块和应用程序,所需的存储空间也很小。
它非常适合于移植到嵌入式系统中去,同时它具有多任务多进程的系统特征,有些还具有实时特征。
1 目标平台介绍文中使用的目标平台S3C2410是SAMSUNG公司使用920T处理器内核开发的一款嵌入式处理器。
S3C2410是Samsung公司专门为PDA、Intenet设备和手持设备等专门开发的微处理器。
该芯片还包含有16kB一体化的Cache/MMU,这一特性使开发人员能够将Linux和VXwork移植到基于该处理器的目标系统中。
该目标板的系统资源如下:(1)CPU:S3C2410微处理器,工作频率为200MHz。
(2)Flash:16MB。
(3)SDRAM:64MB SDRAM。
(4)UART:RS-232串行接口。
(5)其他:14针arm JTAG接口等。
2 交叉编译环境的建立基于Linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。
目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译)。
双方之间一般通过串口、并口或以太网接口建立连接关系。
单独拿出一台PC机,在该PC上安装桌面的Linux操作系统(如RedHatLinux9.0),可以采用默认的安装选项(注意要包含FTP服务),这台PC作为Linux服务器,除管理员以外,一般不直接让其他人去操作。
将该Linux服务器接入局域网,并新建一些合法用户,以便其他的PC机(在此将其称为工作站)的合法用户能访问到Linux服务器。
而其他的PC机(工作站)仍然使用Windows操作系统。
需要的软件工具包括:(1)ftp客户端程序。
(2)Telnet工具。
(3)移植到某一特定arm平台的Linux操作系统内核源码。
(4)GNU编译工具,可由相关网站下载。
在某工作站PC上安装ftp客户端程序和Telnet工具,安装完毕后应该可以在该工站PC和Linux服务器之间进行文件的传输,并在工作站PC可以通过Telnet登陆到Linux服务器(可能需要将Linux服务器的防火墙服务关闭才能完成)。
Linux服务器的安装:将工作站PC上的Linux操作系统内核源码压缩包和GNU编译工具通过ftp传送到Linux服务器的某个目录(如合法的用户目录),然后在该目录下解压,并将GNU编译工具安装到默认的工作目录即可,以上工作通过在工作站PC使用Telnet工具完成,而不需要在Linux服务器上进行。
Linux 操作系统内核的编译一般有一个比较固定的步骤,会根据MakeFile文件的不同而略有差异,可参考相关文档,编译的工作在工作站PC使用Telnet工具完成。
按固定的步骤编译内核完成以后,会在相应目录生成可执行的二进制文件,通过ftp将该可执行的二进制文件传回工作站PC,然后通过ADS或SDT下的烧写工具写入开发板的Flash即可。
3 Bootloader的架构和功能Bootloader引导程序是嵌入式开发很重要的组成部分。
它是嵌入式系统上电后执行的第一个程序,并由它最终将操作系统启动起来并将控制权交给操作系统。
Bootloader引导程序最基本的功能是对硬件系统的初始化和内核启动参数设置并启动内核。
Bootloader的主要功能有:(1)初始化CPU 的主频、SDRAM、中断、串口等硬件;(2)启动Linux内核并提供一个RAMDISK;(3)通过串口下载内核或RAMDISK到目标板上;(4)将修改过的内核或RAMDISK写入到Flash内;(5)为用户提供一个命令接口。
在嵌入式系统开发过程中,Bootloader还与主机通信,不断检测从主机传来的控制信息和数据信息,完成相应的操作。
Linux运行在保护模式下,但是当机器启动复位的时候却处于实模式下。
所以写Bootloader的工作也是在实模式之下的。
Botloader的实现除了依赖于CPU的体系结构,还依赖于目标板的设置,本系统的Bootloader引导程序分为stagel和stage2两个阶段。
依赖于CPU的体系机构的代码,比如设备初始化等,放在stagel中,采用arm汇编语言来实现,这样可以达到短小精悍的目的。
stage2用C语言来实现,可以实现复杂的功能,同时代码具有更好的可读性和可移植性。
●Bootloader的stage1stage1是Bootloader一开始就执行的操作,其目的是为了stage2的执行以及随后的内核的执行,设置好一些基本的硬件环境。
包括以下步骤:①屏蔽所有的中断。
为中断提供服务的通常是操作系统,因此在执行Bootloader的过程中可以不响应任何中断。
中断屏蔽通过写CPU的中断屏蔽寄存器来完成。
②设置CPU的时钟频率和速度。
③初始化RAM设置系统的内存控制器的功能寄存器和各内存库控制寄存器等。
④为加载stage2准备RAM空间。
⑤拷贝stage2到RAM中。
⑥跳转到stage2的入口点。
●Bootloader的stage2stage2的主要的功能是通过串口下载Linux内核到目标板上。
包括以下几个步骤:①初始化本阶段要使用到的硬件设备。
这通常包括:初始化至少一个串口,以便和终端用户进行I/O输出信息;初始化计时器等。
②检测系统的内存映射。
所谓内存映射就是指在整个4GB物理地址空间中有哪些地址范围被分配用来寻址系统的RAM单元。
③加载内核映像和根文件系统从Flash读入到Rom中。
这里包括两个方面:a.内核映像所占用的内存范围;b.根文件系统所占用的内存范围。
在规划内存占用的布局时,主要考虑基地址和映像的大小两个方面。
④设置内核的启动参数。
⑤调用内核。
Bootloader调用Linux内核的方法是直接跳转到内核的第一条指令处。
4 Linux内核的构建和移植1)设置软件开发环境。
为了和目标板进行通讯,必须要在主机上终端运行仿真程序DNW。
建议在宿主机上安装REDHATLinux9.0版本。
以下以在SHELL模式下安装编译器和源代码为例介绍安装过程:首先以ROOT身份进入系统。
把REDHATLinux90的安装光盘放入光驱中,执行装载光驱命令:如果系统不能识别/mnt/cdrom,可以使用如下命令(假设cdrom为/dev/had),则用mount -t iso9660 /dev/hdb/mnt。
如果在安装REDHATLinux9.0的时候已经默认安装了CDROM,以上命令不需执行,直接进入CDROM所在目录。
程序执行完后,Linux源代码和编译环境都已建立起来了。
2)Linux内核编译。
首先以ROOT身份进入系统。
然后完成下列步骤,就可以在/arch/arm/boot/得到内核的映像文件zImage。
在shell命令下输入命令进行内核配置:make menuconfig该命令执行之后生成文件.config。
它保存这个配置信息,下一次再执行make menuconfig的时候将生成新的.config文件。
输入命令:make dep输入命令:make clean输入命令:make zImage通过各个目录的Makefile进行,将会在各个目录下生成一系列目标文件,上述步骤完成后,就完成了对Linux的编译工作。
Linux内核的编译、修改、移植实际上与上层的应用程序,如命令解释器shell、登陆程序login相关。
这些程序应根据需要重新定制。
利用终端仿真程序DNW和Bootloader引导程序通过串口就可以把Linux内核移植到目标系统板。
移植完成后,Linux就可以在目标系统板上运行了。
5 结束语讨论了Linux向目标系统S3C2410移植的过程中的关键技术及其实现。
移植后的Linux保留了原有的工作稳定的特点。
并可以根据需要,在该系统中编写应用程序和运行应用程序。