嵌入式Linux系统设计报告

合集下载

Linux嵌入式系统实验报告一

Linux嵌入式系统实验报告一

Linux嵌入式系统实验报告一一、实验目的通过编写fork和exec等系统调用的程序,加深对系统进程及其控制的了解。

二、实验原理fork后父子进程会同步运行,但父子进程的返回顺序是不确定的。

设两个变量global 和test来检测父子进程共享资源的情况。

同时在进程退出时对exit和_exit的区别进行测试和说明;exec函数族可以让启动一个外部程序。

三、实验内容1.编译执行,并分析结果:执行结果:the test content!fork test!global=24 test=2 Parent,my PID is 3236global=23 test=1 Child,my PID is 3237分析:pid = fork(); 之后,pid == 0 的话,就是子进程,子进程才执行:global++;test++;printf("global=%d test=%d Child,my PID is %d\n",global,test,getpid());所以输出:global=23 test=1 Child,my PID is 3237主进程执行:global+=2;test+=2;printf("global=%d test=%d Parent,my PID is %d\n",global,test,getpid());exit(0)所以输出:global=24 test=2 Parent,my PID is 32362.将上述代码最后的两行代码替换为注释掉替换为printf("global=%dtest=%d Parent,my PID is %d",global,test,getpid());_exit(0);重新编译,查看结果,解释原因。

输出:the test content!fork test!global=23 test=1 Child,my PID is 3278输出结果少了之前的第四行原因:exit()在结束调用它的进程之前,要进行如下步骤:1.调用atexit()注册的函数(出口函数);按A TEXIT注册时相反的顺序调用所有由它注册的函数,这使得我们可以指定在程序终止时执行自己的清理动作.例如,保存程序状态信息于某个文件,解开对共享数据库上的锁等.2.cleanup();关闭所有打开的流,这将导致写所有被缓冲的输出,删除用TMPFILE函数建立的所有临时文件.3.最后调用_exit()函数终止进程。

嵌入式linux系统实验报告

嵌入式linux系统实验报告

嵌入式系统实验报告课程名称:嵌入式系统班级:姓名:学号:实验一. ARM 实验板卡资源及程序调试1.实验目的熟悉嵌入式Linux 开发环境,学会基于IMX6UL 教学平台的Linux 开发环境的配置和使用;利用arm-poky-linux-gnueabi-gcc 交叉编译器编译程序,使用基于NFS 的挂载方式进行实验,了解嵌入式开发的基本过程2. 实验内容本次实验使用ubuntu 操作系统环境,创建一个新目录,并在其中编写hello.c 和Makefile 文件。

学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。

将已经编译好的文件通过NFS 方式挂载到目标开发板上运行2.实验环境硬件:IMX6 教学平台,PC 机酷睿i3 以上, 硬盘120G 以上,内存2G 以上软件:Vmware Workstation +Yocto 项目3硬件接线:电源线接到“12V电源线”,网线接到网口,串口线接到com1,4.实验原理4.1 嵌入式开发方式嵌入式开发当中通常会使用2 种方式来运行应用程序:1、下载;2、挂载。

4.2下载的方式:使用FTP、TFTP 等软件,利用宿主机与目标机的网络硬件进行,此种方法通常是将宿主机端编译好的目标机可执行的二进制文件通过网线或串口线下载固化到目标机的存储器(FLASH)中。

在目标机嵌入式设备存储资源有限的情况下受到存储容量的限制,因此,在调试阶段通常的嵌入式开发经常使用NFS 挂载的方式进行。

而在发布产品阶段才使用下载方式。

4.3 NFS 挂载方式:利用宿主机端NFS 服务,在宿主机端创建一定权限的NFS 共享目录,在目标机端使用NFS 文件系统挂载该目录,从而达到网络共享服务的目的。

这样做的好处是不占用目标机存储资源,可以对大容量文件进行访问。

缺点是由于实际并没有将宿主端文件存储到目标机存储设备上,因此掉电不保存共享文件内容。

通常在嵌入式开发调试阶段,采NFS 挂载方式进行。

实验一 嵌入式Linux系统的制作

实验一 嵌入式Linux系统的制作

Linux与嵌入式实验报告嵌入式Linux系统的制作学院电子与信息学院专业信息工程(3)班学生姓名叶志成实验台号指导教师秦华标、官权升实验日期2016年6月9日作为嵌入式系统,使用环境通常比较恶劣,而应用又比较简单,因此在很多嵌入式系统中经常会使用 u 盘之类的存储设备来代替硬盘,本实验的要求就是基于 u 盘制作一个 linux 运行系统。

目前新出的主板 BIOS 都支持 USB 软盘和硬盘的启动方式,在优盘上建立Linux 启动盘,可以加深对 linux 系统的理解,你可以使用 Linux 建立小巧的内核,建立网络环境,快速地判断和排除网络故障与传送文件。

一、实验目的1.了解 linux 系统内核的基本工作原理。

2.掌握系统内核的裁减方法,了解 linux 内核裁减过程,裁减系统内核并编译。

3、学会基于 busybox 的根文件系统的制作。

4、学会制作一个基于 U 盘的 linux 运行系统。

验收标准:成功从 U 盘启动自己裁剪编译并带有个人信息的 linux 系统二、实验原理1、LINUX 操作系统启动过程分析:当用户打开 PC 的电源,BIOS 开机自检,按 BIOS 中设置的启动设备启动,接着启动设备上安装的引导程序 lilo 或grub开始引导 Linux,Linux 首先进行内核的引导,接下来执行 init 程序,init 程序调用了 rc.sysinit 和 rc 等程序,rc.sysinit 和 rc 当完成系统初始化和运行服务的任务后,返回 init;init 启动了 mingetty 后,打开了终端供用户登录系统,用户登录成功后进入了 Shell,这样就完成了从开机到登录的整个启动过程。

下面就将逐一介绍其中几个关键的部分:Ubuntu 可以使用 lilo 或 grub 等 boot loader 开始引导 Linux 系统,当引导程序成功完成引导任务后,Linux 从它们手中接管了 CPU 的控制权,然后 CPU就开始执行 Linux 的核心映象代码,开始了 Linux 启动过程。

Linux嵌入式系统实验报告

Linux嵌入式系统实验报告

嵌入式操作系统实验报告一.在VMware Player 下安装Redhat Linux根据学习需要我将Redhat Linux 分为四个主分区,总大小12G /boot按常理分了100M,/home因为需要今后练习多用户登录,管理分了5000M,swap可交换空间按常理内存的2倍分了1000M,根目录给予剩余的空间。

按老师的安装步骤(如下图):调试了网络,安装了虚拟光驱,完成了windows与Linux 的分享文件夹的建立,Redhat Linux在虚拟机上的安装基本完成。

二.常用的命令和VIM1.为自己方便我对bash的环境配置进行了设置:先以普通用户身份登入RedHatLinux,开启终端输入su –root 再输入密码切换成root 身份,LoginShell只会读两个配置文件,我要修改的~/.bash_profile文件,它是属于用户个人设置的文件。

用vim(程序编辑器)修改~/.bash_profile文件内容输入PS1=’[\# \u@\h \w]\$’,对提示符进行修改,在原本[root@localhost ~]前面加上命令执行过的条数,方便我自己记录。

改好后在一般模式下输入:wq保存退出。

我不想在注销重新登入后看到提示符的改变,所以我用source命令(读取环境配置文件的命令),将主文件夹的~/.bash_profile的设置读入目前的bash环境。

(改后如图)2.新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel 用useradd完全参考默认值新建一个用户3.用passwd命令修改账号密码(2012.3.22)以root身份可以给账号设置各种各样的密码,给Sky账号设置密码可以用Sky账号登入,修改自己的密码需要先输入自己账号的旧密码,相对root的更为严格4.job control的管理直接将命令丢到后台中“执行”的&将目前的工作丢到后台中“暂停”:[ctrl]+z直接输入fg去“+”的工作执行输入fg %工作号码取对应的工作执行, +和-的顺序改变管理后台当中的工作:kill立即强制删除工作号码为2的任务,参数为“-9”以正常方式结束程序的方式参数“-15”三.调试编译工具和内核编译1.串口调试工具minicom的使用2.编译器文件Makefile的使用练习用vim编写hello.c源代码用vim编写编译器make的调用执行规则文件Makefile3.编译器gcc的使用练习4.调试器gdb的使用练习5.内核的定制编译用命令wget下载Linux-2.6.30.3的内核压缩文件,解压缩到/usr/src/kernels/目录下。

嵌入式linux实验报告

嵌入式linux实验报告

嵌入式linux实验报告嵌入式Linux实验报告一、引言嵌入式系统是指嵌入在各种设备中的计算机系统,它通常包括硬件和软件两部分。

而Linux作为一种开源的操作系统,被广泛应用于嵌入式系统中。

本实验报告将介绍嵌入式Linux的相关实验内容和实验结果,以及对实验过程中遇到的问题的解决方法。

二、实验目的本次实验旨在通过搭建嵌入式Linux系统,了解Linux在嵌入式领域的应用,并掌握相关的配置和调试技巧。

具体目标如下:1. 理解嵌入式系统的基本概念和原理;2. 掌握Linux内核的编译和配置方法;3. 熟悉交叉编译环境的搭建和使用;4. 实现简单的应用程序开发和调试。

三、实验环境1. 硬件环境:嵌入式开发板、计算机;2. 软件环境:Ubuntu操作系统、交叉编译工具链、嵌入式Linux内核源码。

四、实验步骤与结果1. 内核编译与配置通过下载嵌入式Linux内核源码,使用交叉编译工具链进行编译和配置。

在编译过程中,需要根据实际需求选择合适的内核配置选项。

编译完成后,生成内核镜像文件。

2. 系统烧录与启动将生成的内核镜像文件烧录到嵌入式开发板中,并通过串口连接进行启动。

在启动过程中,可以观察到Linux内核的启动信息,并通过串口终端进行交互。

3. 应用程序开发与调试在嵌入式Linux系统中,可以通过交叉编译工具链进行应用程序的开发。

开发过程中,需要注意与目标平台的兼容性和调试方法。

通过调试工具,可以实时监测应用程序的运行状态和调试信息。

五、实验结果与分析在本次实验中,我们成功搭建了嵌入式Linux系统,并实现了简单的应用程序开发和调试。

通过观察实验结果,我们可以得出以下结论:1. 嵌入式Linux系统的搭建需要一定的配置和编译知识,但通过合理的配置选项和编译参数,可以实现系统的定制化;2. 应用程序的开发过程中,需要注意与目标平台的兼容性和调试方法,以确保程序的正确运行和调试的有效性;3. 嵌入式Linux系统的稳定性和性能受到硬件和软件的综合影响,需要进行系统级的优化和调试。

linux嵌入式实验报告

linux嵌入式实验报告

大连理工大学本科实验报告实验名称:嵌入式操作系统学院(系):计算机学院实验专业:计算机系班级:0703学号:学生姓名: mqlz2010年 12 月 6 日实验一:linux内核裁剪预习报告一、实验目的:1、了解Linux内核源代码的目录结构及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文件的作用4、握Linux内核的编译过程5、掌握将新增内核代码加入到Linux内核结构中的方法二、实验原理Linux对于计算机硬件、网络和文件系统等部件的驱动程序支持既可以放在系统内核中,也可以作为一个可加载的模块(modules)使用。

当驱动程序放在系统内核中时,Linux 假定该硬件是存在于系统中的;而作为可加载模块使用时,只有在知道该硬件存在于系统时才会作为系统内核的一部分,当 Linux 检测到硬件时,该模块才被加入到系统内核中。

三、实验步骤1、检查编译器的版本用低版本的编译器去编译高版本的内核有可能不能编译或使内核不能使用。

要查看编译器版本,可以执行命令:#gcc –v进入系统内核源代码目录。

一般系统内核的源代码放在 /usr/src/ 目录下。

用 ls –l 命令查看可能显示如下:#ls –l /usr/srcTotal 3lrwxrwxrwx 1 root root 12 May 4 14:36 >linux-2.4.20-8drwxr-xr-x 15 root root 1024 May 14 11:37drwxr-xr-x 3 root root 1024 May 4 14:38 sendmail其中、是一个链接文件,它的链接目标是指向目录,因此、cd 就是进入目录。

2、删除过时的目标文件进入 /usr/src/linux-2.4.20-8 目录,运行 make mrproper 命令以清除过时、旧的目标文件。

这是因为经过多次编译后系统会留下部分目标文件,如果没有清除干净可能造成本次编译出错。

PXA270嵌入式实验开发系统LINUX实验报告

PXA270嵌入式实验开发系统LINUX实验报告

PXA270嵌入式实验开发系统LINUX实验报告一、实验目的1、了解嵌入式系统及其相关基础知识。

2、了解宿主PC机与PXA270目标版,能正确连接宿主PC机与PXA270目标版。

3、学会在宿主机上安装Linux操作系统——RedHat9.0。

4、学会建立宿主PC机端的开发环境。

5、学会配置宿主PC机端的超级终端。

6、配置宿主PC机端的TFTP服务,并开通此服务。

7、配置宿主PC机端的NFS服务,并开通此服务。

8、学会简单Linux驱动程序的设计。

二、实验内容(1)基本实验:LINUX开发环境的搭建、通讯配置实验一到七为基础实验,前六个主要是为了在熟悉实验操作平台的同时为后续实验搭建好软、硬件环境,配置好相关的协议、服务。

实验七让我们第一次正面接触嵌入式Linux的开发,第一次编写嵌入式系统的应用程序,亲身实践开发步骤,熟悉开发流程,为之后的实验打下基础。

实验一:建立硬件实验平台即各个硬件的互联,搭建好实验的硬件环境。

实验二:Linux操作系统RedHat9的安装即在宿主PC端安装虚拟机,提供实验需要的Linux操作系统。

实验三:建立主机软件开发环境即宿主PC端开发环境的安装与配置。

在终端窗口Terminal输入指令:mount /dev/cdrom /mnt/cdrom /*挂载光盘*/cd /mnt/cdrom /*进入光盘*/./install /*执行开发环境自动安装脚本*/如果光盘挂载不上,用umount命令卸载光盘:umount /mnt/cdrom /*卸载光盘*/实验四:配置超级终端或配置minicom即配置宿主PC机端的超级终端,使PC机与PXA270目标板之间可以通过串口通讯。

在每次重启宿主PC机时,都需要重新将超级终端挂载到虚拟机上,挂载之前须通过ifconfig命令查看该机的IP地址,若其已经复位,须用命令:ifconfig eth0 192.168.0.100 up重置宿主PC机的IP地址。

Linux嵌入式系统原理及应用设计报告

Linux嵌入式系统原理及应用设计报告

密级公开《嵌入式系统原理及应用》实验报告学院:黔南民族师范学院系(部):计算机科学系专业:计算机科学与技术姓名:唐益龙学号:2008081205年级:2008级指导教师:张仁宽目录一.虚拟机下安装小红帽Linux9.0 (3)二.安装VMware Tools (7)三.配置SAMBA 服务器 (8)五.在linux操作系统下安装ar m-linux-gcc-4.3.2.tgz软件 (12)1.在linux 操作系统安装软件遵循四个步骤 (12)2.现在我按照上述四个步骤安装arm-linux-gcc-4.3.2.tgz软件 (12)六.配置U-BOOT (13)1.准备源代码 (13)2. 编译uboot (13)七.linux核心的配置移植 (14)1、下载新内核的源代码 (14)2、释放内核源代码 (14)a、用tar命令释放内核源代码 (14)b、将/usr/include/asm、/usr/inlude/连接 (14)c、删除源代码目录中残留的.o文件和其它从属文件。

(14)3、配置内核 (15)a、启动内核配置程序。

(15)b、配置内核 (15)4、编译内核 (16)(1)、建立编译时所需的从属文件 (16)(2)、清除内核编译的目标文件 (16)(3)、编译内核 (16)(4)、编译可加载模块 (16)5、启动新内核 (17)(1)、将新内核和System.map文件拷贝到/boot目录下 (17)(2)、配置/etc/lilo.conf文件。

在该文件中加入下面几行: (17)(3)、使新配置生效 (17)(4)、重新启动系统 (17)八、后记 (17)一.虚拟机下安装小红帽Linux9.0图解详1.要用的软件:①VMware虚拟机②Red Hat Linux9.0注意:必须要知道的快捷键:ALT+CTRL 从WINDOWS系统切换到正在运行的虚拟机操作系统里。

2.新建一个虚拟机,步骤如下:文件->新建->虚拟机->下一步->典型->选择“Linux”,在版本里选择“Red Hat Linux”->下一步-->点击“浏览”,选择要保存的位置E:\linux9.0->下一步->下一步->磁盘小可以设置一下,在这里我使用的是默认的8GB,不要选择“立即分配所有磁盘空间”,点击完成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式Linux系统设计报告一、硬件设备介绍此次实验用的板子是韦东山的JZ2440V2,JZ2440V2是一款基于ARM9的开发板,采用Samsung S3C2440 芯片,并采用专业稳定的CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。

在进行器件地址说明之前,有一点需要注意,nGCS0 片选的空间在不同的启动模式下,映射的器件是不一样的。

在NAND Flash启动模式下,内部的4KBytes BootSram被映射到nGCS0 片选的空间;在Nor Flash启动模式下( 非Nand Flash 启动模式) ,与nGCS0 相连的外部存储器Nor Flash 就被映射到nGCS0 片选的空间SDRAM 地址空间:0x30000000 ~ 0x34000000。

嵌入式Linux系统的移植主要有U-Boot、Linux内核、文件系统这三部分。

Uboot是在系统上电时开始执行,初始化硬件设备,准备好软件环境,然后才调用Linux操作系统内核。

文件系统是Linux操作系统中用来管理用户文件的内核软件层。

文件系统包括根文件系统和建立于Flash内存设备之上文件系统。

根文件系统包括系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。

二、Linux系统移植步骤1. 准备工作,包括下载源码、建立交叉编译环境等。

交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。

2. 配置和编bootloader(引导装载程序)。

通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。

3.配置和编译Linux内核,对其进行相应的裁剪,修改内核以支持相关的硬件设备。

4. 为大容量NAND Flash移植YAFFS文件系统,并将该文件系统加入Linux 内核中。

5.制作RAMdisk来挂载根文件系统。

Linux系统中的文件和设备是通过文件系统来组织的。

文件系统的存在使得数据和设备可以被有效而透明地存取访问。

一个linux的最简根文件系统应该包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有用来为用户提供基本支持的架构和指令。

6. 烧写、调试系统;如果调试出错,则需要重新配置,返回上述步骤(2)。

三、U-Boot移植3.1.U-Boot简介U-Boot全称Universal Boot Loader,是遵循GPL条款的开放源码项目。

从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。

其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。

其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。

这是U-Boot 中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。

这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。

就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。

其它系列的处理器和操作系统基本是在2002年11月PPCBOOT改名为U-Boot后逐步扩充的。

从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。

当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。

3.2. U-Boot移植的方法U-Boot移植方法当前,对于U-Boot的移植方法,大致分为两种。

一种是先用BDI2000创建目标板初始运行环境,将U-Boot镜像文件u-boot.bin下载到目标板RAM中的指定位置,然后,用BDI2000进行跟踪调试。

其好处是不用将U-Boot镜像文件烧写到FLASH中去。

但弊端在于对移植开发人员的移植调试技能要求较高,BDI2000的配置文件较为复杂。

另外一种方法是用BDI2000先将U-Boot镜像文件烧写到FLASH中去,然后利用GDB和BDI2000进行调试。

这种方法所用BDI2000的配置文件较为简单,调试过程与U-Boot移植后运行过程相吻合,即U-Boot先从FLASH中运行,再重载至RAM中相应位置,并从那里正式投入运行。

唯一感到有些麻烦的就是需要不断烧写FLASH。

但考虑到FLASH 常规擦写次数基本为10万次左右,作为移植U-Boot,不会占用太多的次数,应该不会为FLASH烧写有什么担忧!U-Boot移植要点①BDI2000的配置文件。

如果采用第二种移植方法,即先烧入FLASH的方法,配置项只需很少几个,就可以进行U-Boot的烧写与调试了。

对PPC 8xx系列的主板,可参考DULG文档中TQM8xx的配置文件进行相应的修改。

3.3. 移植U-Boot的常见问题在移植U-Boot的过程中会遇到很多问题,最主要的是一开始无法启动U-Boot。

代码中很多地方设置有误都会导致无法启动,对于Stage1的代码来说,系统的出错信息是无法打印到串口或者其他设备的,此时可以使用JTag调试器调试目标开发板。

对于汇编编写的代码,一般都与系统硬件息息相关,在编写的时候需要非常仔细。

最好准备好ARM体系结构手册和S3C2440A芯片手册,并且认真阅读编程模型相关的章节,对硬件的初始化流程要细心分析。

四、Linux内核移植4.1.内核简介Linux 内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。

进程调度模块用来负责控制进程对CPU资源的使用。

所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。

内存管理模块用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存容量。

并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。

文件系统模块用于支持对外部设备的驱动和存储。

虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。

从而提供并支持与其他操作系统兼容的多种文件系统格式。

进程间通信模块子系统用于支持多种进程间的信息交换方式。

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

4.2. 内核移植要点Linux的代码完全开放以及其良好的结构设计非常适于嵌入式系统。

移植Linux系统包括内核、程序库和应用程序,其中最主要的就是内核移植。

由于Linux 内核的开放性,出现了许多针对嵌入式硬件系统的内核版本,其中著名的包括μcLinux、RT-Linux等。

Linux本身对内存管理(MMU)有很好的支持。

因此,在移植的时候首先要考虑到目标硬件平台是否支持MMU。

以ARM平台为例,ARM7内核的CPU不支持MMU,无法直接把Linux内核代码移植到ARM7核的硬件平台上。

μcLinux是专门针对ARM7这类没有MMU的硬件平台上设计的,它精简了MMU部分代码。

本实验的目标平台是S3C2440A,该处理器基于ARM9核,支持MMU,可以直接移植Linux 2.6版本的内核代码。

4.3.移植Linux内核对硬件的要求1.目标平台目标平台包括了嵌入式处理器和周围器件,处理器可能整合了一些周围器件,如中断控制器、定时器、总线控制器等。

在移植之前需要确定被移植系统对外部设备和总线的支持情况。

本书的ARM开发板采用JZ2440V2平台,在S3C2440A外围连接了许多外围设备,包括NOR Flash存储器、NAND Flash存储器、网络接口芯片、USB控制器等。

在S3C2440A处理器内部集成了许多常用的控制器以及嵌入式领域常用的总线控制器。

对于移植Linux内核来说,操作处理器内部的控制器要比外部的设备容易得多。

2.内存管理单元(MMU)前面提到过MMU,对于现代计算机来说,MMU负责内存地址保护、虚拟地址和物理地址相互转换工作。

在使用MMU的硬件平台上,操作系统通过MMU 可以向应用程序提供大于实际物理内存的地址空间,使应用程序获得更高性能。

Linux的虚拟内存管理功能就是借助MMU实现的。

在移植的时候要考虑目标平台的MMU操作机制,这部分代码是较难理解的,最好能在相似代码基础上修改,降低开发难度。

3. 内存映射嵌入式系统大多都没有配备硬盘,外部存储器只有Flash,并且系统内存也非常有限。

内存控制器(Memory Controller)负责内部和外部存储器在处理器地址空间的映射,由于硬件预设的地址不同导致每种平台内存映射的地址也不同。

在移植时需要参考硬件的用户手册,得到内存地址的映射方法。

4.存储器由于嵌入式系统多用Flash存储器作为存储装置。

对于文件系统来说,在PC 流行的ext2、ext3文件系统在嵌入式系统无法发挥作用。

幸好Linux支持许多文件系统,针对Flash存储器可以使用JFFS2文件系统。

在移植的时候,不必要的文件系统都可以裁剪掉。

五、文件系统移植5.1. 文件系统简介文件系统是Linux操作系统的重要组成部分,Linux文件具有强大的功能。

文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

Linux和Windows文件类型最显着的区别就是Linux对目录和设备都当着文件来进行处理,这样就简化了对各种不同类型设备的处理,提高了效率。

Linux 文件类型最主要的有四种:(1)普通文件:包括文本文件,Shell脚本,二进制可执行程序和各类型的数据(2)目录文件:在Linux中,目录也是文件,它们包含文件名和子目录名以及指向那些文件和子目录的指针。

相关文档
最新文档