当前位置:文档之家› linux嵌入式实验2

linux嵌入式实验2

linux嵌入式实验2
linux嵌入式实验2

嵌入式实验报告(二) 姓名:董辰辰 学号:111180031 专业:电子信息与科学

一、 实验目的

1、 了解Linux 内核源代码的目录结构以及各个目录的相关内容。

2、 了解Linux 内核各配置选项内容和作用。

3、 掌握Linux 内核的编译过程。

4、 了解嵌入式操作系统中文件系统的类型和作用。

5、 了解JFFS2文件系统的优点以及在嵌入式系统中的作用。

6、 掌握利用busybox 软件制作嵌入式文件系统的方法。

7、 掌握嵌入式Linux 文件系统的挂载过程。

二、实验内容和要求

1、配置完整的内核,尽可能理解配置选项在操作系统中的作用。

2、以 Busybox 为基础,构建一个合适的文件系统。

3、制作ramdiak 文件系统映像。

4、将自己编译生成的内核和文件系统下载进开发板。

5、讨论自己的嵌入式系统所具备的的功能。

6、比较romfs 、ext2fs/ext3fs 、JFFS2等文件系统的优缺点。

三、实验设计和分析

实验分为两个部分:Linux 内核配置编译和文件系统构建。本次实验的目的

就是自己搞一个内核和文件系统。当然自己编写代码是不太可能啦,而是根据

linux 提供的源代码自己配置编译出一个自己的内核,在构建一个自己需要的文

件系统。实验室用的内核版本是2.6.35.7 实验室的开发板有了内核和文件系统

才能够对其进行开发。内核是操作系统最基本的部分,可以说是一个软件,实验

室的开发板有处理器、内存、Flash 闪存等硬件组成,可以说内核是调度它们的

软件,有了内核各种应用程序才能够调用硬件资源,总的来说内核文件是操作系

统的核心,负责系统的进程管理,内存管理,设备和文件管理等,决定着系统的

性能和稳定性。文件系统是操作系统的一个重要组成部分,通过对操作系统所管

理的存储空间的抽象,向用户提供统一的、对象化的访问接口,屏蔽对物理设备

的直接操作和资源管理。我觉得内核的本质其实是程序,而文件系统是设置一些

规则来用来管理存储的,在一个完整的操作系统中两者都是不可或缺的,内核在

加载的时候需要有很多的挂载指令,应该挂载的就是文件系统的文件夹,比如将

proc 文件系统挂载到proc 文件夹,这就是为什么在开发板启动时内核和文件系

本页已使用福昕阅读器进行编辑。福昕软件(C)2005-2009,版权所有,仅供试用。

统任何一个有问题都不会正常启动的一个原因之一吧,我觉得内核是执行单元,而文件系统是储存单元,内核通过文件系统访问数据来进行处理。

编译内核之前需要了解下内核源代码的目录,实验室用的内核源代码的文件包一开始在系统文件中需要拷贝到自己的目录下才可以进行编译,在文件系统的目录之下使用make命令编译很有可能发生不必要的错误,也可能是没有权限,将kernel_x210v3文件夹拷贝到自己的目录111180031下,可以看到最外面的文件夹里面有个Makefile,当编译执行make命令的时候就是按照这个Makefile的规则执行的,当然各个子文件夹也有对应的Makefile,这个最外层的Makefile可以调用里面子文件的Makefile,从而完成整个内核的编译。当然内核源代码的编译规则非常的复杂,因为内核源码必须保证不同编译设置生成不同的内核以便在不同需要,不同配置的环境中运行,对于本实验来说是针对arm 体系编译的内核,其中在arch目录下包括与体系有关的内核代码,也包括本实验中用到的S5Pv210处理器。init文件夹根据名字也可以看出来是初始化使用的,其中的main.c和version.c是研究内核起点的c文件,后面的文件系统也可以看出,包括在屏幕上写出嵌入式系统的基本系统,挂载proc文件夹,在屏幕上显示一个logo等等也就是内核加载之后载入的第一段程序应该就是这个文件夹中的代码编译出来的吧,mm包括的是内存管理的代码,这个就比较复杂了,内存的分配管理想当年我也是听得云里雾里的,kernel文件夹不必多说,自然包括的是实现linux内核主要的代码,还有包含驱动程序的文件夹driver,还有比较重要的fs文件夹它包含着所有文件系统的代码和各种类型的文件操作代码。这些目录的内容作用其实就是摘抄书上啦,但是实验报告还是应该写上的,这也是编译内核之前所应该了解的基本内容吧。

实验的内容是配置一个自己的内核,自己的,这个很关键,因为linux源代码支持太多的功能,太多的平台,太多的环境了,但是对于实验室的开发板来说用到的或者说可能用到功能又是十分有限的,因此没有必要将那些根本不可能用到,或者很少用到的功能编译到内核中,那样不仅增加了内核的大小占用了系统不必要的空间,而且还会成为系统的负担,所以根据自己用到的功能,配置一个适合自己的内核是很有必要的。向着老师配置的内核大小努力O(∩_∩)O哈哈~。

进入放着内核源码的文件夹,执行make menuconfig,这个命令提供基于Ncurses 的是图形化选择窗口,所以配置起来更加方便,还有make config和make xconfig 命令分别对应配置命令解释器(对配置脚本中的配置命令进行解释,配置非常繁琐)和基于xwindows的图形界面的用户配置界面,实验中用的就是menuconfig。一般的配置变量可以选择不编译,静态编译,或者编译成模块,对于不可能在系统板上实现和很少用到的功能不编译,可能会用到的功能编译成模块能够有效的减小内核的大小。

实验中内核配置的选项是非常的多的,可精简的部分也着实有很多,但是有些很多时候并不理解如果不编译进内核会有什么弊端,有些配置是不能省略的,

因为自己配置不恰当(video设备支持错误)引发的无法编译通过的情况出现了很多次,最终也算配置出自己的内核了。修改的配置见实验过程。最后精简完的zImage大小为:2.4M,并且并不影响系统的正常启动。我一开始错误的认为生成的zImage中并不只有内核,还应该有模块,因为我将内核配置中的一些选项改为模块以后并不影响zImage的大小,这说明模块也在zImage中,我觉得应该是加载内核的时候会将zImage解压,然后加载其中的编译到内核中的部分,但是模块并不会加载进去,而是在需要的时候可以通过命令进行加载,所以如果准备减小zImage的大小,只有减小模块和编译进内核的选项才可以。但是询问老师后得知zImage就是只有内核,模块在另外的文件夹中,如果要使用需要传输到开发板中进行加载,之所以改了几个模块以后大小没有变化,很可能是这几个模块本身比较小,编译成模块和编译进内核的不会对内核大小有明显的影响。另外我觉得自己的内核不一定非要做到最小,因为开发板是需要用的,而不是仅仅可以启动起来就可以,如果仅仅为了启动起来,那样的话开发板好多可以实现的功能就浪费了,这并不是好的事情,所以根据需要编译出自己的内核是最好的,大小没有那么重要吧。

在编译的时候,顶层Makefile完成产生核心文件和内核模块两个任务,在执行顶层Makefile读取.config中的配置选项,在做实验的时候发现make命令不能执行,提示交叉编译器找不到,有三种方法解决这个问题,第一,找到顶层Makefile文件中的交叉编译选项,将编译器的地址改正,第二在make menuconfig 中选择交叉编译器的路径,第三直接修改.config文件(虽然没有试过)。因为前两种方法的本质就是改变.config文件。

内核和文件系统加载之后,可以看到屏幕上出现了一个?QT?的logo,但是老师编写的内核的logo是一只小企鹅,我就有一个疑惑,这个logo是在文件系统中还是在内核中呢,因为加载的logo肯定是在某个源文件中,根据构建文件系统的过程并没有发现有加载logo的过程,而且寻找到logo的位置是drivers/video/logo 所以应该是编译内核的时候将这个logo图片的信息静态编译到内核中的,根据这个原理,就可以改变开机logo。但是图片的大小是有限制的因为屏幕的分辨率是有限的,通过后面的实验可以知道系统板的屏幕分辨率是640*480,每个像素用32位数据显示那么所能显示的图片大小为9830400b,所以图片大小不能大于这个数取整也就是900k左右。这一点是需要注意的。

文件系统的构建是本实验另一个内容,从本质上来讲,文件系统是特殊的数据分层存储结构,它包含文件、目录和相关的控制信息。

既然要构建文件系统,必须要了解下都有哪些文件系统,都各有什么特点。以便决定到底用哪个文件系统。(以下为抄书内容 = =)

1. ext2fs/ext3fs可以实现快速符号链接,类似于windovs文件系统的快捷方式,可将目标名称直接存储在索引节点表中,提高了访问速度;支持内存达4TB,文件名称很长,可达1024个字符;管理者在创建系统文件时根据需要选择存储逻辑块的大小。这种文件系统稳定,可靠,健壮,在台式机、服务器、工作

站中普遍使用。

2.jffs2支持数据压缩,多种文件节点类型,是一种基FLASH的日志文件系统,提高了对闪存的利用率,降低了内存的损耗。通过jffs2,可以通过flash 来存储数据,将flash当作硬盘来使用,而且系统运行的参数可以实时保存在flash中,在系统断电后数据不会丢失。它在嵌入式系统中很受欢迎。但是也有一定的缺点:JFFS2在挂载(mount)时会扫描整个flash 所有的数据,再将文件系统目录存储在system memory, 会线性倍数成长,消耗很多时间;JFFS2没有write-back机制,不能将数据暂存于缓存(cache), 以致于flash I/O的动作频繁;JFFS2设计机制过于复杂,代码不易阅读。

3.Ramdisk文件系统:使用内存的一部份空间来模拟一个硬盘分区这样构成的文件系统就是ramdisk将ramdisk用作根文件系统在嵌入式Linux中是种常用的方法。因为在ram上运行,读写速度快二用grip算法进行压缩,可节省存储空问。但它也有缺点:由于将内存的一部分用作rarndisk,这部分内存不能再作其它用途;此外系统运行是更新的内容无法保存,系统关机后内容将丢失。(抄书结束)因为我做的实验只涉及这三种实验,所以其他的文件系统特点限于篇幅不写在这里了。

对于本实验中的flash分区做简要的介绍,flash中数据的存储是以块为单位进行存储的,实验中的开发板的flash扇区是512个字节,并不是常见的2k 字节,这也是比较奇葩的地方,flash中的数据擦出和烧写只能以块为单位进行,老师帮助查阅相关的资料,此flash分区中从地址0x00000000开始,u-boot占1M,misc占5M(包括u-boot拓展空间和bootloader参数区,kernel区占5M,ramdisk区占3M,system区占512M,再接下来是cache区和data区,实验中通过movi指令借助内存将文件系统和内核烧写到flash指定的分区中,并设置相关的环境变量,可以让内核自启动的过程中自己加载内核和文件系统,解决了每次都需要手动加载内核和文件系统的问题。另外需要注意的是,无论是磁盘,硬盘,flash存储等,必须包含有文件系统才能够进行文件的读写操作,通过上述方式以内存作为媒介在flash中烧写文件系统是不现实的,因为内存只有512M,而flash有4G,所以是通过flash编程,将flash格式化为相应的文件系统,当然也是需要借助内存完成的,这个不在本实验讨论的范围内。另外简单介绍下linux下对存储设备的管理方式,一块存储设备(或其中一个分区)首先应该挂载到内核的根目录上,然后由根目录中制作根文件系统,然后其他的存储设备(或分区)又可以挂载到这个根文件系统的枝节上,这样来完成整个存储设备的管理,这种方式和windows下的磁盘管理方式还是有很大区别的,最明显的就是没有盘符这个说法,这种管理方式也减少了文件碎片的产生。

实验中采用busybox制作文件系统。首先要理解busybox的作用。busybox 是一个集成的应用程序。文件系统中需要许许多多的程序,这些程序如果独立编译,会显得相当繁琐,并且其规模在嵌入式文件系统中难以承受。busybody具有很多的应用程序利用busybox对应用程序进行裁剪,使其生成文件系统需要的

应用程序。通俗地说busybox是帮助构建文件系统的,但是它并不能决定文件系统的类型。换句话说,也就是在制作其他类型的文件系统的时候其内容也是相同的,只是文件调度存储的方式可能不同。

实验中有几个地方需要说明下,在配置文件系统的时候可以看到,在etc 文件夹下面有inittab,rc,motd三个文件,根据名字也可以猜测出,inittab 这个脚本文件是内核加载以后由系统启动程序init开始执行的命令。可以看到有这么一行::sysinint:/etc/init.d/rcS ,又可以看到可执行文件rc中,有命令mount –t proc proc /proc这个指令就是将/proc文件系统挂载到proc文件夹上。proc文件系统是一个虚拟的文件系统,是内核和内核模块用来向进程发送信息的机制。这个伪文件系统让你可以和内核内部数据结构进行交互,获取有关进程的有用信息,在运行中改变设置 (通过改变内核参数)。与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。proc 由内核控制,没有承载 /proc 的设备,因为 /proc 主要存放由内核控制的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存,对 /proc 进行一次?ls –l?可以看到大部分文件都是 0 字节的,不过察看这些文件的时候,确实可以看到一些信息。这就是比较神奇的地方了。这是因为 /proc 文件系统和其他常规的文件系统一样把自己注册到虚拟文件系统层 (VFS) 了。然而,直到当 VFS 调用它,请求文件、目录的 i-node 的时候,/proc 文件系统才根据内核中的信息建立相应的文件和目录,所以说它是一个伪文件系统。因为每次加载完内核和文件系统之后都需要重新设置开发板的ip并且配置nfs挂载mnt文件夹,为了省去这个麻烦,在文件系统的这个脚本中,写上自己想要的初始化命令,减少每次都要重复操作的麻烦。

在实验的过程中,制作好文件系统和内核之后,将内核和文件系统通过内存烧写到flash中,这样每次启动自动加载内核和文件系统,减少了每次都用tftp 下载内核和文件系统的麻烦。通过movi这个命令可以将制作好的ramdisk镜像烧写到flash中的ramdisk分区,将zImage烧写到kernel分区,设置好环境变量,这样开发板启动时会将内核和文件系统加载到内存相对应的位置,然后启动,自己制作的jffs2文件系统是烧写到system分区,需要根据flash扇区的大小计算出system相对应的分区号,这样可以将对应的文件系统烧写的system分区中,重新设置环境变量,把根文件系统放在flash的第二分区中,内核加载的时候不在将文件系统加载到内存中,而是直接在flash中展开,这样在文件系统中做的改变就会保存在flash中。但是可能速度会慢很多,这也是可以理解的。

四、实验记录和分析

1、在student文件夹中创建文件夹111180031将内核和busybox拷贝到此文件夹下。

2、在内核的目录下打开终端,执行make menuconfig命令。进入配置界面。对

以下配置选项进行修改:

1.general setup 下的设置

1.Prompt for development and/or incomplete code/drivers是否提示

使用不成熟的代码或者设备,不作为开发人员所以不是特别需要所以不

2.(/usr/local/arm-2009q3/bin/arm-none-linux-gnueabi-)

Cross-compiler tool prefix

设置好环境变量,防止出现编译错误

3.System V IPC 板间进程通信,不需要的。

4. Initial RAM filesystem and RAM disk (initramfs/initrd) support

需要选择,做ramdisk文件系统必须选择此项。

5.Configure standard kernel features (for small systems) 采用标准

内核的特征,可以减少内核的大小,所以选上

2.Enable loadable module support支持模块的加载,因为需要将某些设备

等做成模块,用来减少内核的大小,需要的时候再加载,所以选上。里面的具

体的强迫模块加载什么的选项就不需要选了。

3.Enable the block layer块层支持,选上,

1.Support for large (2TB+) block devices and files 不选,自己做的实

验中根本不可能设计到2TB的块设备和文件。

4.Floating point emulation 浮点运算,需要选上,因为本身板子的cpu并

没有浮点处理能力。

1.NWFPE math emulation

2.FastFPE math emulation (EXPERIMENTAL)

3.VFP-format floating point maths

4.Advanced SIMD (NEON) Extension support

四种处理方式中最少选一种。

https://www.doczj.com/doc/2612727647.html,working support 网络支持必选

1. Amateur Radio support

2.Can bus subsystem support

3.IrDA (infrared) subsystem support

4.Bluetooth subsystem support

5.RxRPC session sockets

6.Wireless

7.WiMAX Wireless Broadband support

8.RF switch subsystem support

9.Plan 9 Resource Sharing Support (9P2000) (Experimental)

10.CAIF support

只在网络选项中选中一些基本的网络支持就可以了包括ipv4等等,只用于上述中的蓝牙,无线网络,射频网络什么的都不要支持,因为实在是用不到。

6.Device Drivers 设备驱动啊,怎能不选?

1.Memory Technology Device (MTD) support 存储技术设备支持,选上,这

样对存储的管理更加方便,比如选中其中的Command line partition table parsing,就可以在flash烧写命令中直接指定分区的名字进行烧写,而不需要使用地址,是的操作更加的方便。

2.Block devices 块设备支持。

3. Misc devices 其他设备支持其中关于安卓的都不选

4. Network device support 网络设备支持

1.Ethernet (10 or 100Mbit)

2.Ethernet (1000 Mbit)

3.Ethernet (10000 Mbit)

实验板中用到的网卡是第一个里面的DM9000 其他的都可以不选。

4.Wireless LAN

5.WiMAX Wireless Broadband devices

以上两个无线网支持设备都不选。没啥用

https://www.doczj.com/doc/2612727647.html,B support 当然要选中,但是其中一些什么关于一些用不到的USB

设备比如某些相机设备什么的就不需要支持

7.HID Device 包括键盘鼠标啥的,不需要就不支持了。

8.MMC/SD/SDIO card support 存储卡支持还是需要的。

9.LED 不需要用到Led灯,不需要支持。

10.Sound card support 声卡支持还是需要的,因为以后可能要做音频

接口。

7.File systems

选中可能用到的文件系统,我选择了支持ext2/3/4 和jffs2 和yaffs2 、nfs 等文件系统的支持其他的比如windows下的fat文件系统,包括什么gfs2文件系统等,因为没有用到过,所以没有支持。

其他的保持默认即可,因为包括.System Type、电源管理等系统选项都是默认的比较好吧。有些是根据板子配置的,也是不能修改的,比如.System Type 中的cpu选择。

3、make clean 清除以前生成的内核相关文件,但不清除配置文件。(make mrproper 删除以前构核所有文件,包括配置文件等,用了一次,配置全都回到

最原始了,连板子类型都需要重新配置,所以不要用)

4、make 编译内核,要等上五分钟,生成vmlinux核心文件。和system.map镜

像文件。

5、make zImage 将核心文件压缩。生成的zImage文件目录在arch/arm/boot

中。重命名为zImage31.

6、在busybox文件夹中打开终端

7、输入make menuconfig 设置交叉编译器/usr/local/arm-2009q3/ bin

/arm-none-linux-gnueabi-和自定义安装路径(不填默认在_install文件夹中。

8、选择文件系统的功能

1. Busybox Settings

1.General Configuration

2.Build Options

3. Debugging Options

4.Installation Options ("make install" behavior)

5.Busybox Library Tuning

以上是busybox配置的一些设置选项,通常配置中选中支持的文件类型,

是否支持长选项等等,安装选项不必多说,debug选项我里面没有选,因

为我只是简单的应用这个文件系统,发生的错误页比较简单,debug应该

不需要的。安装选项根据喜好设置就好最后一个选项里面包括设置密码长

度什么的,保存历史文件的大小等等,我都保持了默认。

2.Editors

编辑器里面,包括常用的vi,patch还可以设置最大的屏幕宽度在vi中。

保持默认

3. Init Utilities

配置初始化指令,init必选否则否则无法正常进入命令行界面的系统,其

他选项如:reboot, poweroff等都选上。因为在/etc/init. d中用到了。

4. Login/Password Management Utilities

配置对用户登录/密码管理的配置.其中getty必选,因为在inittab文件

中要用到该指令

5. Linux System Utilities

为了使用NFS文件系统,需要将mount;Support mount NFS file systems

此外umount,为了制作ext2文件系统,还需要将mkfs_ext2 选上。

https://www.doczj.com/doc/2612727647.html,working Utilities

配置和网络有关的命令,为了使用网络连接,其中ping和ifconfig,tftp 必选。因为实验中需要用到,还有什么常用的包括telnet也要选上,其中很多没有见过的命令其实可以不选了。

7. Shells

命令行界面配置,包括基本的ash,sh等都需要选上,否则无法配置命令行界面也就没有办法进行开发了。

9、make 对BusyBox进行编译

10、make install 在_install目录下可以看到bin usr sbin在这些目录中可以看到许多应用程序的链接,这些符号链接都指向busybox

11、在我们的安装目录下创建etc目录,并在该目录下创建三个文件inittab、rc、motd。并分别编辑他们。Inittab文件为linux初始化文件系统时init初始化程序用到的配置文件。 inittab:

# /etc/inittab

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

::once:/usr/sbin/telnetd -l /bin/login

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

rc:

#!/bin/sh 不是注释

hostname x210

mount -t proc proc /proc 挂载proc文件系统已做解释。

/bin/cat /etc/motd

ifconfig eth0 192.168.207.144

mount 192.168.207.44:/exp /mnt –o nolock –o proto=tcp

可执行脚本文件,用chmod +x rc修改属性为了在加载开发板启动时自动设置本机ip并通过配置nfs 挂载好主机相应的文件夹在脚本中多加了几行。

motd:

HELLO

===============================

hahahhahhahahah

===============================

x210v3 @ S5PV210/Cortex-A8

ported by dcc

随便写,用于开机显示的。由etc/rc调用

由inittab这个文件下的::sysinit:/etc/init.d/rcS可以看出我们加载内核后第一个执行的是rcS就是rc中的内容,所以要在etc目录下创建init.d目录,并将etc/rc向etc/init.d/rcS做符号链接:

mkdir init.d

cd init.d

ln -s ../rc rcS

在安装目录中创建mnt目录,供架设nfs服务器

在安装目录创建dev目录,并在该目录下创建必要的设备:

$ mknod console c 5 1

$ mknod dsp c 14 3

$ mknod audio c 14 4

$ mknod fb0 c 29 0

$ ln -s fb0 fb

$ mknod hda b 3 0

$ mknod hda1 b 3 1

$ mknod mtdblock0 b 31 0

$ mknod mtdblock1 b 31 1

$ mknod mtdblock2 b 31 2

$ mknod mtdblock3 b 31 3

$ mknod null c 1 3

$ mknod zero c 1 5

$ mknod ram0 b 1 0

$ mknod ram1 b 1 1

$ ln -s ram0 root

$ mknod rom0 b 31 0

$ mknod rom1 b 31 1

$ mknod rtc c 250 0

$ mknod sda b 8 0

$ mknod sda1 b 8 1

$ mknod tty c 5 0

$ mknod tty0 c 4 0

$ mknod tty1 c 4 1

$ mknod tty2 c 4 2

mknod语法 mknod 设备名块设备b/字符设备c 主设备号此设备号比如其中的fb就是对应Frame Buffer的设备,其实在后来拷贝的时候这些设备都会丢掉的,而且没有这些设备也不会影响开发板的正常启动。我是直接在挂载的文件夹里面建立这些设备的。

再在安装目录下创建proc空目录用于proc伪文件系统的挂载。

创建lib目录,找到交叉编译器中如下的几个库,并做符号链接:

ld-2.10.1.so,libc-2.10.1-so,libm-2.10.1.so

ln –s ld-2.10.1.so ld-linux.so.3

ln –s libc-2.10.1.so libc.so.6

ln –s libm-2.10.1.so libm.so.6

做符号链接的目的是为了升级库文件的时候不会改变原来函数调用库的名字,这样更加的方便。

包括c语言库,数学函数库等,用于基本的动态链接的程序运行使用

至此,安装目录中应当有一下几个目录:

bin dev etc lib mnt proc sbin usr lost+found

文件系统中的内容到这里就构建完毕了,下面就是做不同的文件系统的事情了。

构造e2fs文件系统

在自己的文件夹中创建一个空文件,并格式化成ext2fs格式,执行以下命令:dd if=/dev/zero of=ramdisk_img bs=1k count=8192

构造一个8M的文件并通过zero设备把内容全部写成0

/sbin/mke2fs ramdisk_img

mount ramdisk_img

实验室已经设定好这个8M的文件可以挂载到/mnt/ramdisk下

下面将上述的几个目录,即bin、sbin等拷贝至根目录下的/mnt/ramdisk目录内。dev目录中的设备文件是无法拷贝过去的,因此在/mnt/ramdisk/dev目录下创建设备文件

umount /mnt/ramdisk

压缩ramdisk_img,并将压缩得到的ramdisk_img.gz重命名为ramdisk_img_dcc.gz拷贝至tftp目录下。

这样e2fs文件系统构建完毕。

把内核和文件系统下载到板子就跟第一个实验一样了,我这里做的是将其烧写到flash中。

tftp 0xc0008000 zImage31

movi write kernel 0xc0008000

tftp 0x40000000 ramdisk_img_dcc.gz

movi write rootfs 0x40000000 300000

设置好环境变量

setenv ramdisk root=/dev/ram rw initrd=0x40000000,8M

setnev bootargs console=ttySAC2,115200 $ramdis

setenv bootcmd ‘movi read kernel 0xc0008000;movi read rootfs 0x40000000 300000;bootm 0xc0008000’

这样板子上电自己加载好文件系统和内核,并架设好nfs服务器,省去了很多的麻烦。

构建jffs2文件系统,从老师给的资料中找到mkfs.jffs2这个命令,然后采用如下命令:

mkfs.jffs2 -s 0x1000 -e 0x200 -p 0x500000 –d ~/student/111180031/busybox/_install/ -o jffs2.img

说明:

1. -d :指定要做成image的源文件名.

2. -o : 指定输出image档案的文件名.

3 .-e : 每一块要抹除的block size,预设是512b.要注意,不同的flash, 其block size会不一样。

4.--pad (-p): 用16进制来表示所要输出文件的大小,也就是root.jffs2的size。很重要的是, 为了不浪费, 这个值最好符合flash driver所规定区块的大小。.这里用的是5M也就是格式化5M的空间,文件做好之后为2.3M。

文件系统做好之后就是要刷写到flash中了,思路很清晰,刷写到flash中的过程和前面是一样的,设置的环境变量如下:

setenv bootargs console=ttySAC2,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 init=/linuxrc

setenv bootcmd ‘movi read kernel 0xc0008000; bootm 0xc0008000’

然后保存,启动运行之后是无法挂载文件系统,后来请教方元老师,发现u-boot 中的分区设置和内核中的分区设置是不一样的。所以内核无法找到文件系统,具体体现如下图;

内核中的分区设置如下:

而u-boot的分区设置如下:

可以发现两者的分区设置不仅大小不同,甚至连顺序也不同,这就导致了挂载根文件系统的失败,但是我修改了内核中关于分区的设置重新编译内核,但是出现了和很多的警告还是无法完成文件系统的挂载,实验到这里没有了思路,不得不说是一个遗憾,但是我还是会花时间去研究的,但是由于还要做别的实验,所以这个实验就暂且告一段落吧。花课下的时间来研究好了。

五、实验体会,小结和建议

这次的实验报告真的是写了挺长的时间的,因为部分的实验实在涉及的内容和知识点实在是太多了,尽管我花了很多的时间,但是我发现其中我还是有一些的问题不是特别的懂,足以见这部分实验室多么的复杂,的确文件系统和内核可以说是一个系统最基本的东西,然而往往是最基本的东西却是最难得,曾经在配置内核的时候发现因为一个设备配置错误直接导致编译不过去了,而且配置文件又只能保留一次,所以修改保存之后就没有办法回去了,只能重新覆盖下原来的配置文件重新做,这样折腾了几次才发现是某个video设备必须要支持才可以通过,我理解的就是这个开发板必须要这个设备的支持才能够正常的运行吧,或者说是和前面的配置相冲突了,其实我之前觉得就算我全不选也应该能编译通过的,大不了内核的功能少一点,事实证明却不是这样的,所以内核的配置还是很重要的,只有了解了内核相关配置,你才能知道,你的内核能干些什么,不能干什么,比如无线网络功能压根就不会用到,配置到内核中毫无意义空占内存,造成运行压力。文件系统配置也是类似的。而且这个实验最后还是有一点点小遗憾没有完成jffs2文件系统的构建,还需要自己学更多的东西,才能够完成这部分,自己会在课下的时候慢慢的钻研的。其实实验做完验收并不难,关键是搞懂实验在干什么,由其中一个点散开出去就可以学到很多很多的知识,只不过确实是很费时间,很可能耽误后面实验知识的学习,这也是很矛盾的时间,但是我觉得学的杂不如学的精,加油吧。另外老师说不用提那些假大空的话,但是我真心要感谢老师,我不是为了拿分什么的,我觉得老师的耐心解答我真的很是受用,在这里谢谢了。嵌入式学问太深了。。。。由衷的感叹。。。

六、参考文献

1、谷歌文献

2、中国知网文献

3、实验书

嵌入式linux基本操作实验一的实验报告

实验一linux基本操作实验的实验报告 一实验目的 1、熟悉嵌入式开发平台部件,了解宿主机/目标机开发模式; 2、熟悉和掌握常用Linux的命令和工具。 二实验步骤 1、连接主机和目标板;(三根线,网线直接连接实验箱和PC机,实验箱UART2连接主机的UART口)。 2、Linux命令的熟悉与操作 PC端:在PC机的桌面上打开虚拟机,并启动Linux系统,打开命令终端,操作Linux基本命令,如:查看:ls,进入目录:cd,创建文件:mkdir,删除文件:rmdir,配置网络:ifconfig,挂载:mount,设置权限:chmod,编辑器:vi,拷贝:cp等命令,要求能熟练操作。 使用方法: 1.查看:ls Ls列出文件和目录 Ls–a 显示隐藏文件 Ls–l 显示长列格式ls–al 其中:蓝:目录;绿:可执行文件;红:压缩文件;浅蓝:链接文件;灰:其他文件;红底白字:错误的链接文件 2.进入目录:cd 改变当前目录:cd 目录名(进入用户home目录:cd ~;进入上一级目录:cd -) 3.创建文件:mkdir 建立文件/目录:touch 文件名/mkdir目录名 4.删除文件:rmdir 删除空目录:rmdir目录名 5.配置网络:ifconfig 网络- (以太网和WIFI无线) ifconfig eth0 显示一个以太网卡的配置 6.挂载:mount mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘- 确定目录'/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2的盘- 先从挂载点'/ mnt/hda2' 退出fuser -km /mnt/hda2 当设备繁忙时强制卸载 umount -n /mnt/hda2 运行卸载操作而不写入/etc/mtab文件- 当文件为只读或当磁盘写满时非常有用 mount /dev/fd0 /mnt/floppy 挂载一个软盘 mount /dev/cdrom /mnt/cdrom挂载一个cdrom或dvdrom mount /dev/hdc /mnt/cdrecorder挂载一个cdrw或dvdrom mount /dev/hdb /mnt/cdrecorder挂载一个cdrw或dvdrom mount -o loop file.iso /mnt/cdrom挂载一个文件或ISO镜像文件

什么是嵌入式linux系统

什么是嵌入式linux系统? 一、什么是嵌入式linux? Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。嵌入式Linux既继承了intelnet上无限的开放原代码资源,又具有嵌入式操作系统的特性。 二、嵌入式Linux的特点版权费:免费; 购买费用:媒介成本; 技术支持:全世界的自由软件开发者提供支持; 网络特性:免费而且性能优异; 软件移植:容易,代码开放,有许多应用软件支持; 应用产品开发周期:短,新产品上市迅速,因为有许多公开的代码可以参考和移植; 实时性能:RT_Linux,hardhat Linux 等嵌入式Linux支持实时性能; 稳定性:好; 安全性:好。 三、嵌入式Linux的市场前景和商业机会 嵌入式Linux有巨大的市场前景和商业机会,出现了大量的专业公司和产品,如Montavista、Lineo、Emi等。有行业协会,如Embedded Linux Consortum等。得到世界著名计算机公司和oem板级厂商的支持,例如IBM、Motorola、Intel等。传统的嵌入式系统厂商也采用了Linux策略如Lynxworks 、Windriver、QNX等。还有intelnet上的大量嵌入式Linux 爱好者的支持。嵌入式Linux支持几乎所有的嵌入式cpu和被移植到几乎所有的嵌入式oem板。 四、嵌入式Linux的应用领域嵌入式Linux的应用领域非常广泛,主要的应用领域有,信息家电:PDA,STB-Set-stopbox,Digital Telephone,Answering Machine,Screen Phone、数据网络:Ethernet switches,Router,Bridge,Hub,Remote access servers,ATM,Frame relay、远程通信、医疗电子、交通运输、计算机外设、工业控制、航空领域等。 五、嵌入式linux的优势嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其

《嵌入式系统与开发》构建嵌入式Linux系统-实验报告

《嵌入式数据库sqlite移植及使用》 实验报告 学生姓名:陈彤 学号:13004405 专业班级:130044 指导教师:孙国梓 完成时间:2016.5.31 实验3 嵌入式数据库sqlite移植及使用 一.实验目的 理解嵌入式软件移植的基本方法,掌握sqlite数据库软件移植的步骤,掌握sqlite开发的两种方式—命令模式和C代码开发模式的使用方法,并编程实现简单通讯录查询实验。 二.实验内容 实验3.1 移植嵌入式数据库sqlite 实验3.2 简单通讯录查询实例设计和测试 三.预备知识 Linux使用、数据库相关知识等 四.实验设备及工具(包括软件调试工具) 硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。 软件:WinXP或UBUNTU开发环境。 五.实验步骤 5.1 移植嵌入式数据库sqlite 步骤【参看教材103页】: 第一步,解压缩sqlite源码,命令tar zxvf sqlite-autoconf-3080900.tar.gz,在解压后的文件夹下,可以看到源码文件有shell.c 和sqlite3.c文件,生成Makefile的配置脚本文件configure.ac ,并检查当前文件夹下__A__(A.存在 B.不存在)Makefile文件。 第二步利用configure脚本文件生成基于ARM实验台的Makefile,具体命令为./configure CC=arm-linux-gcc –prefix=/opt/sqlite –host=arm-linux(假设安装目录为/opt/sqlite),并检查当前文件夹下___A__(A.存在 B.不存在)Makefile文件。 第三步,编译sqlite,命令为_make_,编译过程中使用的编译器为_ arm-linux-gcc _。 第四步,安装sqlit,命令为_make install_。安装完成后到_/opt/sqlite_文件夹下去查看相关文件,可以看到该文件夹下有_bin_、_include_、__lib__和share文件夹,其中可执行文件sqlite3位于_./bin_文件夹,库位于_./lib_文件夹。 第五步,将sqlite3拷贝到开发板bin目录下,将库下的文件拷贝到开发板的lib目录下【注意链接文件的创建】 第六步,数据库的使用 方式1:命令操纵数据库 在超级终端环境下创建数据库stucomm.db,命令为_sqlite3 stucomm.db_; 创建数据表stutable,字段包括id 整型,name 字符型,phoneNum 字符型,具体命令为_sqlite> create table stutable (id int(20),name char(20),phoneNum char(20));_; 插入2条记录,记录信息如下 001,zhangsan,10086 002,lisi,10000

嵌入式Linux实验三

实验三:文件、目录及其操作命令 1实验目的 通过实验掌握如Linux操作系统的基本操作 2实验设备 硬件:PC机一台 软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 3实验内容 (1)文件的复制、删除和移动命令:cp, rm, mv (2)Linux文件与目录 (3)目录命令:mkdir, rmdir, cd, pwd, ls (4)链接文件与ln (5)文件与目录的权限 4实验预习要求 仔细阅读参考书: 【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥 【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心关于Linux文件与目录的部分。 5实验步骤 (1)熟悉Red Hat Enterprise Linux系统。 (2)根据实验重点内容测试。 6实验重点: (1)文件的复制、删除与移动:cp, rm, mv 要复制文件,请使用cp (copy) 这个命令即可。不过,cp 这个命令的用途不仅仅于此。除了单纯的复制之外,还可以建立连结文件(就是快捷方式),比对两文件的新旧而予以更新,以及复制整个目录等等的功能。至于移动目录与文件,则使用mv (move),这个命令也可以直接拿来作重命名(rename) 的操作!至于(移除)删除文件,使用rm (remove) 这个命令。

cp (复制文件或目录) [root@localhost ~]# cp [-adfilprsu] 源文件(source) 目标文件(destination) [root@localhost ~]# cp [options] source1 source2 source3 .... directory 选项与参数: -a:相当于-pdr 的意思,至于pdr 请参考下列说明;(常用) -d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身; -f :为强制(force)的意思,若目标文件已经存在则无法开启,则移除后再尝试一次; -i :若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用) -l :进行硬式连结(hard link)的连结文件建立,而非复制文件本身; -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用); -r :递归持续复制,用于目录的复制行为;(常用) -s :复制成为符号链接文件(symbolic link),亦即快捷方式文件; -u :若destination 比source 旧,才更新destination ! 最后需要注意的,如果源文件有两个以上,则最后一个目标文件一定要是目录才行! 范例一:用root身份,将主目录下的.bashrc 复制到/temp 下,并更名为bashrc (~代表目前用户身份所在的主文件夹) [root@localhost ~]# cp ~/.bashrc /temp/bashrc [root@localhost ~]# cp -i ~/.bashrc /temp/bashrc cp: overwrite `/temp/bashrc'? n <==n不覆盖,y为覆盖 说明:重复作两次操作,由于/temp 下已经存在bashrc 了,加上-i 选项后,则在覆盖前会询问使用者是否确定!可以按下n 或者y 来二次确认。 范例二:将主目录下的.bashrc和.bash_history 复制到/temp下。 [root@localhost ~]cp ~/.bashrc ~/.bash_history /temp 可以将多个数据一次复制到同一目录中去,最后面一定是目录。 范例三:复制/etc/ 这个目录下的所有内容到/tmp 下 [root@www tmp]# cp /etc/ /tmp cp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上-r 的选项 [root@www tmp]# cp -r /etc/ /tmp -r 是可以复制目录,但是,文件与目录的权限可能会被改变。所以,也可以利用cp –a /etc /tmp 来下执行!尤其是在备份的情况下! rm (移除文件或目录) [root@localhost ~]# rm [-fir] 文件或目录 选项与参数:

嵌入式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、嵌入式操作系统的作用是什么?

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

建立嵌入式linux开发环境实验

嵌入式linux开发环境的建立 一、创建文件:vi hello.c如下: 二、安装交叉编译器: arm-linux-gcc-3.4.6-glibc-2.3.6.tar 步骤1、把交叉编译链考贝到任意目录下,并解压:tar zxvf arm-linux-gcc-3.4.6-glibc-2.3.6.tar –C / 2、把以上路径添加到/etc/profile文件的最后:export PATH=$PATH:/gcc-3.4.6-glibc-2.3.6/arm-linux/bin 3、输入命令使环境变量立即生效:source /tec/profile 4、测试是否安装成功:arm-linux-gcc–v 如果显示版本号,则安装成功。 5、编译C文件:arm-linux-gcc hello.c–o hello 三、配置tftp服务步骤

1、检查系统有无安装包:用命令:rpm –aq | grep tftp,如有安装包的版本号,说明系统已有相应的安装包; 2、配置服务器,打开文件:vi /etc/xinetd.d/tftp,显示如下桌面service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = yes } 然后编辑将disable改为no,其他不变 3、重启xinetd服务:service xinetd restart, 停止 xinetd: [ 确定 ] 启动 xinetd: [ 确定 ] 4、输入如下命令:netstat –a | grep tftp,如果出现如下画面

嵌入式程序设计实验报告

实验一开发环境的搭建与配置 【实验目的】 1)熟悉嵌入式Linux开发平台。 2)掌握嵌入式Linux开发平台的开发环境搭建与配置。 3)了解minicom配置串口通信参数的过程。 4)了解嵌入式Linux的启动过程。 5)掌握程序交叉编译运行及调试的一般方法。 【实验内容】 1)连接实验开发板与宿主机。 2)在虚拟机中的CentOS(宿主机)搭建开发环境。 3)在宿主机中配置minicom。 4)分析嵌入式Linux的启动过程。 5)在宿主机上编写简单的C语言程序并用交叉编译工具进行编译,然后传输到目标机上运行。 6)在宿主机上编写简单的C语言程序并用交叉编译工具进行编译,用gdbserver进行远程调试。 【实验步骤】 连接实验开发板,对虚拟机进行设置 1)首先把实验开发板打开,用网线和串口线连接宿主机,并连接电源(注意这时不要拨动实验 开发板的开关按钮)。 2)在桌面上点击打开vmware 软件,选择“编辑虚拟机设置”,如下图所示:

图1 3)进入虚拟机配置界面后把网络连接方式设置为“桥接方式”,如图2所示: 图2

4)添加串口,如下图所示: 图3 5)完成串口的添加后,选择“OK”,完成对虚拟机的设置。如下图所示:

图4 6)选择虚拟机的“Edit”、“Virtual Network Editor...”,如下图所示:

图5 7)进入虚拟机网络参数设置界面后对VMnet0进行设置(注意这里桥接的网卡应选择与实验开 发板相连接的那块儿网卡),然后点击“Apply”、“OK”如下图所示:

图6 8)上述设置完成后启动CentOS(CentOS的用户名为“root”,密码为“xidianembed”)。 工具链的配置 1)在CentOS的根目录下创建一个名为“EELiod”的目录,把实验中要用到的文件(主要是一 些rpm包)拷贝到该目录下。(可以用U盘、WinSCP等工具进行,此处不再做详细说明)。 2)交叉编译工具链位于/opt/buildroot-2011.02/output/host/usr目录下,进入工具链的bin目录下, 可以看到一些编译工具,这些工具将会在之后的交叉编译过程中使用到。

嵌入式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实验指导书 实验一:arm裸机实验 实验条件: pc ADS开发环境FL2440开发套件SecureCRT串口超级终端 实验目的: 熟悉arm裸机开发基本步骤,掌握ADS集成开发环境的使用,能够编写简单的裸机程序并下载到开发板运行测试。 实验原理: ADS 全称为ARM Developer Suite ,是ARM 公司推出的新一代ARM 集成开发工具。ADS 由命令行开发工具、ARM 实时库、GUI 开发环境(Code Warrior 和AXD) 、实用程序和支持软件组成。有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己开发的应用程序了。本次实验利用ADS集成开发环境建立基于arm9 S3C2440的实验工程,完成工程搭建、代码编写和编译,生成可执行文件并下载到开发板进行运行测试。 实验步骤: 1、首先打开ADS软件CodeWarrior,点击File 菜单下的New 来创建新工程。Project 对话框中选择ARM Executable Image 。在Project name 中输入工程名,例:2440_led,点击“Location:”文本框的“Set...”按钮,选择要将工程保存的路径,然后点击确定即可建立一个新的工程。工程建立之后会出现一个24 40_led.mcp 窗口。 2、创建源文件,点击File 菜单下的New,选择标签页File,在File name 中输入要建立的文件名,如:Init.s (.s 文件为arm 中的汇编文件),若此时选上了Add to Project,创建的文件会自动添加到工程中,选择target方式为DebugRel,点击确定关闭窗口,文件创建完成后编写代码。(可将arm_linux文件夹下的裸机例程代码复制到工程中进行修改,如:复制裸机程序中的led程序init.s led.c 到建立的工程文件目录中,点击Project 菜单下的Add Fils 将源文件添加到工程中)

嵌入式系统实验报告

郑州航空工业管理学院 嵌入式系统实验报告 (修订版) 20 – 20第学期 赵成,张克新 院系: 姓名: 专业: 学号: 电子通信工程系 2014年3月制

实验一ARM体系结构与编程方法 一、实验目的 了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。 二、实验内容 1.ADS1.2 IDE的安装、环境配置及工程项目的建立; 2.ARM汇编语言程序设计(参考附录A): (1)两个寄存器值相加; (2)LDR、STR指令操作; (3)使用多寄存器传送指令进行数据复制; (4)使用查表法实现程序跳转; (5)使用BX指令切换处理器状态; (6)微处理器工作模式切换; 三、预备知识 了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:ARM Developer Suite (ADS) 1.2。 五、实验分析 1.安装的ADS1.2 IDE中包括和两个软件组件。在ADS1.2中建立类型的工程,工程目标配置为;接着,还需要对工程进行、及链接器设置;最后,配置仿真环境为仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名:

嵌入式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开发环境的搭建 一、实验目的 1、了解嵌入式Linux开发环境的作用 2、掌握相关服务器的安装 二、实验准备 硬件:JXARM9-2410教学实验箱,PC机 软件:Windows XP操作系统,ADS集成开发工具 三、实验过程 1、tftp网络配置 (1) 虚拟机网络配置 a. 点击虚拟机-设置,将网络适配器设置为自定义,并 指定虚拟网络为VMnet0。 b. 点击编辑-虚拟机网络参数-主机虚拟网络映射,并 且指定其桥接的网卡

c. Red Hat IP配置 ●点击系统设置-网络,双击eth0配置IP信息如下: 地址:172.20.11.243 子网掩码:255.255.255.0 默认网关地址:172.20.11.254 DNS: 210.29.152.4 ●点击激活,在弹出的对话框点击是按钮 ●

测试网络连接是否正常 方法一:在linux下,点击系统工具-终端,输入命令ping 172.20.11.243 方法二:在主系统中打开命令提示符,输入ping 172.20.11.243 (2)修改tftp的配置文件 a.在终端下输入gedit /etc/xinetd.d/tftp b.修改”disable=yes”为”=no”,点击保存,关闭gedit

c.重启xinetd服务,使刚才的更改生效,在终端里输入, /etc/init.d/xinetd restart d.进入tftpboot文件夹创建一个测试文件testfile e.取得tftpboot文件夹的所有权限,命令chmod 777 /tftpboot f.启动tftp测试上传和下载 2配置NFS服务器 a.设置:开始->系统设置->服务器设置->NFS服务器打开配置对话 框 第一步:点击添加nfs共享 第二步:输入目录/tftpboot 第三步:输入主机172.20.11.243 第四步:基本权限为读/写

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

嵌入式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 [在此处键入]

嵌入式linux实验指导书

目录 实验一 linux常用指令练习 (3) 1、在线帮助指令 (3) 2、linux开关机及注销指令。 (3) 重启指令: (3) 1)、reboot命令 (3) 2)、init 6命令 (3) 关机指令: (3) 1)、halt命令 (3) 2)、poweroff命令 (4) 3)、init 0命令 (4) 4)、shutdown命令 (4) 注销指令: (4) 3、用户管理命令 (4) 1)、用户切换su命令 (4) 2)、添加用户命令adduser/useradd (5) 3)、删除用户及更改用户属性 (5) 4)、设置用户密码 (6) 5)、查看用户信息 (6) 4、文件目录操作指令 (7) 1)、改变当前工作目录命令(cd) (7) 2)、显示当前路径pwd (7) 3)、查看当前目录下的文件命令ls (7) 4)、新建目录指令mkdir (8) 5)、删除目录命令rmdir (8) 6)、新建文件命令touch (8) 7)、删除文件指令rm (8) 8)、文件和目录的复制命令cp (8) 9)、文件和目录的移动命令mv (9) 10)、更改文件或目录的使用权限chmod (9) 11)、查看文件的命令cat (9) 12)、文件链接命令ln (9) 13)、文件压缩解压命令 (10) 5、网络相关命令 (11) 6、磁盘管理命令 (11) 7、挂载文件命令mount (12) 8、其他系统命令 (12) 练习1: (13) 练习2: (15) 练习3: (16) 练习4: (21) 实验二 VI文本编辑器的使用 (24) 1、练习使用VI指令 (24) 2、利用VI编写一个hello.c文件 (24)

嵌入式基础实验报告

嵌入式基础实验报告 ——Linux下编译环境的设置 姓名:张耀丹 学号:131012692 班级:13级网络工程二班

一、实验目的 1、熟悉嵌入式Linux 开发环境,学会基于UP-CUP IOT-4412-II 型网关部分平台的Linux 开 发环境的配置和使用 2、利用arm-none-linux-gnueabi-gcc 交叉编译器编译程序,使用基于NFS 的挂载方式进行 实验,了解嵌入式开发的基本过程 二、实验环境 1、硬件:UP-CUP IOT-4412-II 型网关部分嵌入式实验平台,PC 机Pentium 500 以上, 硬盘 40G 以上,内存大于256M 2、软件:Vmware Workstation + Fedora Core 14 + 超级终端/Xshell + ARM-LINUX 交叉编译开 发环境 三、实验内容 1、本次实验使用Fedora14 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新 目录,并在其中编写hello.c 和Makefile 文件。 2、学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。将已 经编译好的文件通过NFS 方式挂载到目标开发板上运行 四、实验步骤 实验目录:/UP-CUP4412/SRC/exp/basic/Cortex/ 1、编译源程序 (1)在宿主机端任意目录下建立工作目录CortexA9,实际光盘目录中已经给出本次实验所需全面文件及代码,存放在Cortex目录下。 [root@localhost ~]# mkdir CortexA9 [root@localhost ~]# cd CortexA9 (2)编写程序源代码 在Linux 下的文本编辑器有许多,常用的是vim 和Xwindow 界面下的gedit 等,我们在开发过程中推荐使用vim,用户需要学习vim 的操作方法,请参考相关书籍中的关于vim 的操作指南。Kdevelope、anjuta 软件的界面与vc6.0 类似,使用它们对于熟悉windows 环境下开发的用户更容易上手。 实际的CortexA9.c 源代码较简单,如下: #include main() { printf(“**********\n” ); printf(“CortexA9 \n”); printf(“**********\n” ); return 0; }

嵌入式Linux系统开发教程答案

1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力 、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用 、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。4、嵌入式处理器目前主要有 PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32 操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:嵌入式处理器、存储器(SDRAM、ROM等)、设备I/O接口等。2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为实时多任务操作系统,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是VxWorks 。4、嵌入式系统设计过程中一般需要考虑的因素不包括:(大小)5、在嵌入式系统中比较流行的主流程序有:(Angel、Blob、Red Boot )1、Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在:开放性、多用户、多任务、友好的用户界面、设备独立性、丰富的网络功能、文件传输、远程访问、可靠的安全性、良好的可移植性、X Window系统、内存保护模式。2、Linux 作环境)、文件结构(File Structure)和实用工具。3、目前几乎所有的Linux ;查看当前路径应使用命令:pwd;的作用是:使linux.tar.gz文件 Linux内核主要由:进程调度,内存管理,虚拟文件系统,网络接口,进程间 (Red Flag)2、启动shell环境时,屏幕上显示“[arm@www home]$”,其中的arm 命令时,如果想对文件名中的不可显示字符用八进制逃逸字符显示,则应该选用的参数是(-b)。4、解 Linux用的文件系统是(ntfs)。1、ARM9系列微处理器在高性能和 5级整数流水线,指令执行效率更高;提供1.1MIPS/MHz的哈佛总线结构;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口。2、ARM芯片的内核一般包括以下几个单元:ARM9TDMI32RISC处理器、数据 本质上是内存中一段连续的地址,对其最常见的操作为“压栈”( 出)。1、在arm/thumb汇编语言程序中,程序是以程序段的形式呈现的。程序段是具有特有名称的相对独立的指令或数据序号。程序段有两大类型代码段、数据段。2、基于linux下GCC汇编语言,代码表号必须在一行的顶端,后面要加上:,注视的内容可以在前面加上@。 3、符号定义伪指令()、数据定义伪指令(Data Definition 4、linux下的嵌入式程序开发,主要需要的代码编辑器,如vi和gedit,另外还需要编译器gcc、调试器Vi编辑器基本上有三种基本状态,分别是:命令模式(command mode)、插入模式(insert mode)和底行模式(gcc编译文件生成可执行文件要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。1.假如使用伪指令定义一个局部的数据量,变量名为temp,然后给其赋值为8,汇编代码为(GBLA temp;temp SET A 0x08;)2、在vi处于命令行模式时,如果需要对文本进行修改,欲在光标所在位置的下一个位置开始输入文字,则(按下字母“a”进入插入模式)3、当前vi 处于插入模式,先放弃对文本的修改,即不保存退出vi,则(先按下“ESC”后,再使用“:q!”命令)。4、经过汇编之后,生成的目标文件的后缀名为(.o)。 5、对代码文件code.c进行调试的命令为($gcc –g code.c –o code)。1、SMDK2440平台的开发板采用的处理器是S3C2440,其主频一般为400M。2、windows软件环境的设置一般包括以下几部分:超级终端的设置、DNW设置、GIVEIO驱动的设置和USB驱动3、在windows系统上建立基于linux嵌入式开发环境一般有三种方案可以选择分别是Windows系统下安装虚拟机Vmware、Windows+Linux双系统安装、基于Windows操作系统下的Cygwin4、UBUNTU的网络设置可以采用命令行方式、也可以采用图形界面操作方式来配置。5、开发板硬件平台是基于三星S3C2440的SMDK2440平台的目标板,使用的刻录软件为SJF2440。1、为了通过PC的串口和开发板进行交互,需要使用(超级终端)。2、在嵌入式linux的开发中,能实现上传下载文件、刻录文件、运行映像等功能工具是(DNW)。 3、由普通用户账户转为管理员账户登录,使用的命令为($su root)。 4、安装FTP服务器时,在终端输入的命令为($sudo apt-get install vsftpd)。 5、安装Telnet服务时,在终端输入的命令为($sudo apt-get install telnetd)1、交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码执行工具链软件,通过带有不同的参数,可以实现编译、链接、处理、调试等不同的功能。2、linux经常使用的工具链软件有Binutils、Gcc、Glibc和Gdb。3、分布构建交叉编译工具链的制作过程需要以下几步编译binutils、编译辅助gcc编译器、编译glibc库、重新编译完整的gcc。4、使用crosstool构建交叉编译工具链的制作过程需要以下几步:准备工作、建立脚本文件、建立配置文件、执行脚本文件和编译gdb调试器。5、使用crosstool构建交叉编译工具链的制作过程中需要的配置文件,其主要作用是定义配置文件、定义生成编译工具链的名称、定义编译选项等。1.(binutils)十二进制程序处理工具,包括连接器,汇编器等目标程序处理的工具。2.构建交叉编译器的第一个步骤是(下载工具)。3、分析以下代码#export PRJROOT=/home/arm/armlinux #export TARGET=arm-linux #export PREFIX=$PRJROOT/$TARGET其中,变量PREFIX代表的路径为(/home/arm/armlinux)。4. Binutils是gnu工具之一,他包括连接器、汇编器和其他用于目标文件和档案的工具,特使二进制代码的处理维护工具。其中包括(ld)命令,他是把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。5.分布构建交叉编译链的过程有两次变异gcc,其中第二次进行编译的作用是(获得glibc库的支持) 。1、Bootloader,亦称引导加载程序,是系统加电后运行的第一段软件代码。2、一般Bootloader包含两种不同的操作模式:启动加载模式 的主要功能是引导操作系统启动,它的启动方式有网络启动、磁盘启动和Flash 运行的第一阶段主要完成以下工作:屏蔽所有中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED和关闭 cache。1、在Bootloader的启动方式中,Flash启动方式通常有两种,一种是可以直接从Flash启动,另一种时可以将压缩的内存映像文件从Flash中复制、解压到RAM ,再从中启动。2、在各种Bootloader中,U-boot 是以PPCBoot和ARMBoot为基础的通用加载程序,并且在ARM、PowerPC以及MIPS等多种平台上运行。3、在编译Vivi之前将Vivi里所有的“*.o”和“*.o.flag”文件删除,以确保文件编译时没有错误或者警告发生,使用的命令格式为(make distclean)。4、编译Vivi时,如果编译成功,在/vivi里面会生成三个vivi文件,其中不包括文件(vivi.exe)。5、把二进制文件载入Flash或RAM使用的命令是(load)。1、ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile、配置文件和配置工具。2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于X Window图形界面的用户配置界面。3、Makefile文件主要包含注释、编译目标定义和适配段。4、Linux内核常用的配置命令有make oldconfig、make config、make menuconfig 和make xconfig。其中以字符界面配置的命令是make config。5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。1.linux内核中的makefile以及与makefile直接相关的文件不包括(后缀名为.in)。2.用户通过make config 配置后,产生了后缀名为(in.config)。3.rules.make文件定义了许多变量,最重要的是那些编译、连接列表变量,但不包括(O-OBJS)。4.在内核配置过程中,如果需要设置networking support这个选项,进入的菜单项是(General setup)。5.在linux系统中,我们既需要标记变量的符号,有需要变量的物理地址,两者同时需要的时候可以采用符号表的方式,其对应的文件为(System.map)。1、Linux下的文件系统主要分为三个层次:上层用户的应用程序对文件系统的系统调用、虚拟文件系统和挂载到VFS中的各种实际文件系统。2、三种常用的块驱动程序分别是Blkmem驱动层、RAMdisk驱动层、MTD驱动层JFFS2、Yaffs、Romfs和Cramfs。 4、基于RAM的文件系统常见的有Ramdisk和Ramfs/Tmp fs。 5、System V init、Busybox init1、(MTD驱动层)也支持在一块Flash上建立多个Flash分区,没一个分区作为一个MTD block设备,可以把系统软件数据等分配到不同的

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