第uClinux在UPNETARM平台上的移植.ppt

上传人:sccc 文档编号:5159959 上传时间:2023-06-09 格式:PPT 页数:162 大小:994.53KB
返回 下载 相关 举报
第uClinux在UPNETARM平台上的移植.ppt_第1页
第1页 / 共162页
第uClinux在UPNETARM平台上的移植.ppt_第2页
第2页 / 共162页
第uClinux在UPNETARM平台上的移植.ppt_第3页
第3页 / 共162页
第uClinux在UPNETARM平台上的移植.ppt_第4页
第4页 / 共162页
第uClinux在UPNETARM平台上的移植.ppt_第5页
第5页 / 共162页
点击查看更多>>
资源描述

《第uClinux在UPNETARM平台上的移植.ppt》由会员分享,可在线阅读,更多相关《第uClinux在UPNETARM平台上的移植.ppt(162页珍藏版)》请在三一办公上搜索。

1、第12章 uClinux在UP-NETARM3000平台上的移植,在Linux环境下,本章主要介绍了uClinux在UP-NETARM3000平台的移植过程。包括:uClinux源码下载方法和交叉编译工具的下载、生成方法。内核源码的修改、剪裁和编译过程。内核裁剪时的菜单选项的配置方法。内核及根文件系统的烧写过程。,12.1 UP-NETARM3000嵌入式教学开发平台介绍,UP-NETARM3000平台是博创兴业科技有限公司,依托北京航空航天大学开发的。适用于嵌入式教学和开发。目前已应用于清华大学、北京航空航天大学等多所高校。,该平台是基于S3C44B0X 处理器,可以运行uC/OS-II和u

2、Clinux的系统。它由核心模块和扩展模块组成。核心模块包括3C44B0 x嵌入式芯片、2MB线性引导Flash和8MB SDRAM;,扩展模块包括16MB非线性Flash、二个串口、一个USB口、一个JTAG通用接口、10M以太网口、触摸屏、17键键盘、320240STN彩色LCD、16M U盘、直流电机模块、步进电机模块、音频模块、CAN总线模块、A/D和D/A模块、LED显示器、IIC接口和FPGA模块。如图12-1所示。,图12-1 UPNETARM3000嵌入式教学开发平台,12.2 uClinux在UP-NETARM3000上的移植,所谓Linux移植就是把Linux操作系统针对具

3、体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。这个概念目前在嵌入式开发领域讲的比较多。,其基本内容是:获取某一版本的Linux内核源码,根据具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于自己目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC机)的新操作系统,对该系统进行针对目标平台的交叉编译,生成一个内核映象文件,最后把该映象文件烧写(安装)到目标平台中。,而通常对Linux源码的改写工作难度较大,它要求不仅对Linux内核结构要非常熟悉,还要求对目标平台的硬件结构要非常熟悉。同时还要求对相关版本的汇编语言较熟悉

4、,因为与体系结构相关的部分源码往往是用汇编写的,所以这部分工作一般由目标平台提供商来完成。,比如说针对目前嵌入式系统中最流行的ARM平台,它的这部分工作就是由英国ARM公司的工程师完成的,我们所要做的就是从其网站上下载相关版本Linux内核的补丁(Patch)。把它打到目标平台的Linux内核上,再进行交叉编译就行。其基本过程如下(以Linux2.6.0为例):,1到ftp:/ftp.arm.linux.org.uk上下载Linux2.6.0内核及其关于ARM平台的补丁(如:Patch-2.6.0-rmk1.gz)。2给Linux2.6.0打补丁:zcat./patch-2.6.0-rmk1.

5、gz|patch p1(前面./表示补丁文件放在内核文件上一层目录)。,3准备交叉编译环境。交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-gcc,glibc等。交叉编译环境的搭建也是个复杂的过程,后面我将做进一步介绍。有兴趣可以一起交流()。,4修改内核目录下的makefile文件,主要是以下几行:注释掉ARCH:=$(shell uname m|sed e s/i.86/i386/-e s/sun4u/sparc64/-e s/arm.*/arm/-e s/sa110/arm/)这一行;ARCH?改为 ARCH arm;,CROSS_COMPILE?=改为

6、 CROSS_COMPILE=你的交叉编译工具中arm-linux所在目录/arm-linux-。5此后就可以进行编译。,12.2.2 关于交叉编译环境,交叉编译环境的建立最重要的就是要有一个交叉编译器。所谓的交叉编译就是:利用运行在某机器上的编译器编译某个源程序生成在另一台机器上运行的目标代码的过程。编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译,所以这里有个“蛋和鸡”的关系。,这里主要用到的编译器是arm-gcc,它是gcc的arm改版。目前Linux操作系统主要是以GCC模式进行移植的。GCC输出的是汇编语言程序,如果我们想要进一步编译成我们想要的机器代码,则还需要汇编

7、器等的协助。,GNU工具链中通常包含GNU Binutils,GNU GCC,GNU GLibc。Binutils中主要包含链接器ld和汇编器as。GNU GLibc提供了一个C库,使得系统能完成基本的系统调用及其它的一些函数调用。下面介绍一下GCC交叉编译器的生成过程。步骤如下:,1取得Binutils、GCC、Glibc的源码 可以到相关网站去获得,并把这三个文件解压到你自己的目录如:/toolchain/gcc,/toolchain/bu,/toolchain/glibc,2配置并编译Binutils,得到汇编器和连接器 在配置Binutils之前先把Linux内核中GCC所必需的头文件

8、拷到GCC可以找到的目录。如下操作:cp dr include/asm-arm/toolchain/gcc/arm-linux/include/asmcp dr include/linux/toolchain/gcc/arm-linux/include/linux,然后进入Binutils目录:./configure-target=arm-linux-prefix=/toolchain/bumake LANGUAGES=”C”make install,3配置并编译GCC源代码,生成GCC编译器 编译之前先修改gcc 的t-linux 文件,t-linux文件在好几个地方都有,我们要修改文件放在

9、gcc/config/arm目录下。在t-linux文件中的TARGET_LIBGCC2_CFLAGS后加上_gthr_posix_h和inhibit_libc操作如下:,进入gcc/config/arm目录 mv t-linux t-linux-orig/备份原来的t-linux文件 修改t-linux文件 把TARGET_LIBGCC2_CFLAGS=-fomit-frame-pointer fPIC改为:TARGET_LIBGCC2_CFLAGS=-fomit-frame-pointer-fPIC-Dinhibit_libc-D_gthr_posix_h(是行连接符号),进入GCC安装目

10、录进行编译操作如下:./configure-target=arm-linux-prefix=/toolchain/gcc-enable-languages=c-with-local-prefix=/toolchain/gcc/arm-linux,-without-headers(不编译头文件)-with-newlib-disable-sharedmakemake install这里首先生成的是C编译器。,4配置Glibc编译生成Glibc的C函数库 编译Glibc之前先要把编译器改为新的交叉编译器arm-linux-gcc,同时要指定编译所需要的头文件。操作如下:CC=arm-linux-gc

11、c AR=arm-linux-ar RANLIB=arm-linux-ranlib 然后进入Glibc的安装目录,进行配置如下:,./configure-host=arm-linux-prefix=/toolchain/gcc/arm-linux-enable-add-ons-with-headers=/toolchain/gcc/arm-linux/includemakemake install,4再次配置并编译GCC源代码,生成其它语言的编译器如:C等。恢复t-linux 文件 用备份的t-linux-bak 覆盖改动后的t-linux,命令如下:cp/toolchian/gcc/conf

12、ig/arm/t-linux-orig/toolchian/gcc/config/arm/t-linux,当然你也可以直接修改t-linux文件,把刚才加上去的_gthr_posix_h和inhibit_libc删去。不过推荐的做法是使用备份文件。这是一种更好的习惯。,重新编译./configure-target=arm-linux-prefix=/toolchian/gcc-enable-languages=c,c+-with-local-prefix=/toolchian/gcc/arm-linuxmake make install,这部分工作如果从头自己做是比较复杂的,而且你必需对你的硬

13、件平台的体系结构非常熟悉,所以我们通常从网上直接下载相关工具包。,12.2.3 修改uClinux内核源码,在完成交叉编译环境的建立之后,进入下一阶段,对uClinux内核的移植修改。uClinux的移植是个繁重的工作,其主要主要包含启动代码的修改,内核的链接及装入,参数传递,内核引导几个部分。,uClinux内核分为体系结构相关部分和体系结构无关部分。在Linux启动的第一阶段,内核与体系结构相关部分(arch目录下)首先执行,它会完成硬件寄存器设置,内存映射等初始化工作。然后把控制权转给内核中与系统结构无关部分。而在移植工作中要改动的代码主要集中在与体系结构相关部分。,在arch目录中可以

14、看到有许多子目录,它们往往是用芯片命名的,表示是针对该芯片体系结构的代码。为arm系列芯片编译内核,就应修改ARM目录下的相关文件。在ARM的子目录下可以找到一个boot目录,在boot下有一个init.S的文件。,这里init.S是用ARM汇编写成的。这个init.S就是引导uCLinux内核在Arm平台上启动的初始化代码。它定义了一个全局符号_start(默认的起始地址)。同时它也是整体内核二进制镜像的起始标志。,init.S主要完成以下功能:定义数据段、代码段、bbs(未初始化数据段)起始地址变量并对bbs段进行初始化。设置寄存器以初始化系统硬件。关闭中断。,初始化LCD显示。将数据段数

15、据复制到内存。跳转到内核起始函数start_kernel继续执行。对主寄存器的修改。,其源代码读者自己可以进行分析,而至于初始化设置的寄存器则要根据你的平台,参考相应的芯片手册。一般要做修改的寄存器有:片选组基地址寄存器,DRAM存储配置寄存器,DRAM片选寄存器,中断屏蔽寄存器等。此后代码会进入到entry.S继续执行,它会继续完成对中断向量表配置等一系列动作。,第一阶段的启动过程除了以上所说的之外,还要进行内核的链接与装入等工作。内核可执行文件是由许多链接在一起的目标文件组成的。以ELF为例,ELF文件有text(文本段)、data(数据段)和bbs等组成。,这些段又由链接脚本(Linke

16、r description)负责链接装入。链接脚本又有输入文件和输出文件。输出文件中输出段告诉链接器如何分配存储器。而输入文件的输入段则描述如何把输入文件与存储器映射。其形式如下:(输出文件),/*linux/arch/arm/boot/compressed/vmlinux.lds.in*Copyright(C)2000 Russell King*This program is free software;you can redistribute it and/or modify*it under the terms of the GNU General Public License vers

17、ion 2 as*published by the Free Software Foundation.*/,OUTPUT_ARCH(arm)/输出为ARM格式ENTRY(_start)/定义入口点SECTIONS.=LOAD_ADDR;/“.”表示当前计数器 _load_addr=.;.=TEXT_START;/文本段起始 _text=.;,.text:/把各个输入文件中文本段合并到此 _start=.;*(.start)*(.text)*(.fixup)*(.gnu.warning)*(.rodata),*(.rodata.*)*(.glue_7)*(.glue_7t)input_data=

18、.;arch/arm/boot/compressed/piggy.o input_data_end=.;.=ALIGN(4);,_etext=.;/文本段结束(以下各段类似)_got_start=.;.got:*(.got)_got_end=.;.got.plt:*(.got.plt).data:*(.data)_edata=.;,.=BSS_START;_bss_start=.;.bss:*(.bss)_end=.;.stack(NOLOAD):*(.stack),.stab 0:*(.stab).stabstr 0:*(.stabstr).stab.excl 0:*(.stab.excl)

19、.stab.exclstr 0:*(.stab.exclstr).stab.index 0:*(.stab.index).stab.indexstr 0:*(.stab.indexstr).comment 0:*(.comment),经过以上两个步骤,接下来要向内核传递参数并引导内核启动。前面的工作已经完成了初始化硬件寄存器、标示根设备和内存映射等工作。,其中启动代码以参数形式把DRAM和Flash数量(指定系统中可用页面的数目和文件系统大小)等信息传给内核。接下来完成设置陷阱、初始化中断、初始化计时器和初始化控制台等一系列操作,并使内核正确启动。,Linux移植过程中内容非常多,涉及的知识量

20、也很大,而且由于平台的不同和内核版本的不同所涉及的内容往往也有很大不同。所以以上给出内容也仅作为读者参考之用。,具体操作时还应收集相关平台及内核版本的详细资料,才能展开相应工作。下面以已经改造好的uClinux,针对UP-NETARM3000平台来讲解内核的裁减。,12.2.4 Linux内核裁减,Linux内核的裁剪与编译看上去是个挺简单的过程,只是对配置菜单的简单选择。但是内核配置菜单本身结构庞大,内容复杂。现在结合内核裁剪过程,了解配置各选项的作用。Linux内核的编译菜单都是通过Config.in经由不同脚本解释器产生.config。,它包括“make config”、“make me

21、nuconfig”和“make xconfig”等版本。“make config”以命令行方式进行配置,“make menuconfig”以菜单方式进行配置,且配置稳定可靠;“make xconfig”以基于图形库菜单方式进行配置,基于目前2.4.X版本的xconfig比较成熟稳定;基于2.6.X的xconfig菜单结构清晰,界面友好,但不够稳定。,所以考虑最大众化角度,以界面不够友好,但比较稳定的menuconfig为主进行介绍。在选择相应的配置时,有三种选择方式,它们分别代表的含义如下:Y-将该功能编译进内核 N-不将该功能编译进内核 M-将该功能编译成可以在需要时动态插入到内核中的模块,

22、make xconfig使用鼠标选择对应的选项,make menuconfig使用空格键进行选取。在每一个选项前的括号,可以是中括号、尖括号和圆括号。中括号里要么是空,要么是*;而尖括号里可以是空、*和M;而圆括号的内容是在所提供的几个选项中选择一项。,其中空表示不将该功能编译进内核,*表示将该功能编译进内核,M表示将该功能编译成可以在需要时动态插入到内核中的模块(注:其中有不少选项是目标板开发人员加的,对于陌生选项,自己不知道该选什么时建议使用默认值)。,下面我们来看看具体配置菜单,进入内核所在目录,键入make menuconfig你就会看到选项配置菜单。1Code maturity le

23、vel options代码成熟度选项,它又有子项:,(1)prompt for development and/or incomplete code/drivers 该选项是对那些还在测试阶段的代码、驱动模块等的支持。一般应该选这个选项,除非只是想使用LINUX中已经完全稳定的东西。但这样有时对系统性能影响挺大。,(2)prompt for obsolete code/drivers 该项用于对那些已经陈旧的被现有文件替代了的驱动程序和代码的支持,可以不选;除非你的机器配置比较旧,但那也会有不少问题。所以该项以基本不用,在新的版本中已被替换。,2loadable module support

24、动态加载模块支持选项,其子项有:(1)enable module support 支持模块加载功能,应该选上。,(2)set version information on all module symbols 该项用来支持跨内核版本的模块支持。即为某个版本的内核编译的模块可以在另一个版本的内核下使用,我们一般用不上,所以不选。,(3)kernel module loader 如果你启用这个选项,你可以通过kerneld程序的帮助在需要的时候自动载入或卸载那些可载入式的模块,我们一般会选上。,3system type 系统类型,主要是CPU类型以及与此相关的内容。该项下的子项比较多,内容也比较复

25、杂,无法对每个CPU都加以说明,就以开发平台作相应介绍,其他平台与此类似。,如果你是进行交叉编译,该项下的内容往往是经过相应目标平台开发人员修改的。主要是针对该平台的体系结构定义,这样可以优化系统性能。正因为目标平台的多样性,所以该项定义也常常是五花八门。,但开发人员一般会考虑到这些,事先设定好默认值。作为初学者按给出的默认选项就行。当然你也许想用一个原始的版本内核来建构针对你的平台的新内核。如果你的内核版本支持你目标平台所用的CPU,那你就选上它。,但不要选同系列中高于你所用的CPU型号,否则不支持。你也可以在Config.in或KConfig中修改该项以支持你的目标平台。当然其中还有一些较

26、复杂的事情要处理。,在UP-NETARM300/3000平台上你在该项上看到的是s3c44b0的ARM系列CPU。在UP-NETARM2410上看到的是S3C2410的ARM系列CPU。其它选项是关于该芯片及平台的一些结构定义。,其他版本内核遇到的不会是这种情况,但一般包含processor family选项,它让我们选择CPU的类型,BIOS可以自检到,留意一下你的系统的启动信息。选上正确的CPU类型就行。,4.General setup(1)support hot-plugable devieces 对可热拔插的设备的支持,看情况选择。若要对U盘等USB设备进行控制,建议选上。(2)Net

27、working support 网络支持,用到网络设备当然要选上。,(3)System V IPC支持System V的进程间通讯,选上。(4)sysctl support 该项支持在不重启情况下直接改变内核的参数。启用该选项后内核大约会增大8K,如果你的内存太小,就别选。,(5)NWFPE math emulation 一般要选一个模拟数学协处理器,选上。(6)Power manager 电源管理,给X86编译内核时较有用可以选上,尤其是笔记本。给ARM编内核时可不选。其他的看情况,在该平台上目前都用不着,不选。,5.Networking option 网络选项,它主要是关于一些网络协议的选

28、项。Linux号称网络操作系统,它最强大的功能,也就是在于对网络功能的灵活支持。这部分内容相当多,根据具体情况,一般把以下几项选上。,(1)packet socket 包协议支持,有些应用程序使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。同时它可以让你在TCP不能用时找到一个通讯方法。(2)unix domain socket 对基本UNIX socket的支持。,(3)TCP/IP networking 对TCP/IP协议栈的支持,当然要。如果你的内核很在意大小,而且没有什么网络要求,也不跑类似X Window之类基于Unix Socket的应用,那你可以不选,可节省

29、大约144K空间。,至于其它众多的选项,这里挑一些对其意思简单介绍一下:Network firewalls:是否让内核支持采用网络防火墙。如果计算机想当firewalls server 或者是处于TCP/IP 通信协议的网络的网路结构下,这一项就选上。,Packet socket:mmapped IO 选该项,则Packet socket可以利用端口进行快速通讯的。IP advanced router:如果你想把自己的Linux配成路由器功能,这项肯定要选。选上后会带出几个子项,这些子项可以更精确配置相关路由功能。,socket filter:就是包过滤。IP multicasting:即网络

30、广播协议的支持,可以一次一个packet送到好几台计算机的操作。,IP syncookies:一种保护措施,将各种TCP/IP的通信协议加密,防止Attacker攻击用户的计算机,并且可以纪录企图攻击用户的计算机的IP地址。IP masquerading:这个选项可以在Network Firewalls选项被选后生效。,masquerading可以将内部网络的计算机送出去的封包,通过防火墙服务器直接传递给远端的计算机,而远端的计算机看到的就是接收到的防火墙服务器送过来的封包,而不是从内部的计算机送过来的。,这样如果内部只有一台计算机可以上网,其余的机器可以通过这台机器的防火墙服务器向外连线。它

31、是一种伪装,如果你的网络里有一些重要的信息,那你在使用 IP masquerade之前就要三思。因为它即可能成为你通往互联网的网关同样也可能为外边世界进入你网络的提供一条途径。,IP ICMP masquerading:一般masquerading 只提供处理TCP和UDP packets,若要让masqurerading 也能处理ICMP packets,就把这选项选上。IP always defragment:可将接收到的packet fragments重新组合回原来那个封包。,IP accounting:统计IP packet的流量,也就是网络的流通情况。IP optimize as r

32、outer not host:可以关闭copy&checksum技术,防止流量大的服务器的IP packets丢失。,IP tunneling:tunnel即隧道。这里是指用另外一种协议来封装数据或包容协议类型,这样就相当于在不同的协议之间打了条隧道,使得数据包可以被不同的协议接受和解释,这样我们可在不同网域中使用linux,且都不用改IP就可以直接上网了。对于嵌入式设备这点还是挺有用的。,IP GRE tunneling:它是(Generic Routing Encapsulation)。选该项后可以支持在IPv4与IPv6之间的通讯。IP ARP daemon support:即对ARP的

33、支持,它是把IP地址解析为物理地址。,IP Reverse ARP:RARP(逆向地址解析)协议,可提供bootp的功能,让计算机从可以从网卡的Boot Ram启动.这对于搭建无盘工作站是很有用的,但现在硬件价格下跌好像无盘工作站用的已经不多了。,IP Disable Path MTU Discovery:MTU有助于处理拥挤的网络。MTU(Maximal Transfer Unit)最大的传输单位,即一次送往网络的信息大小。而Path MTUD iscovery的意思是当Linux发现一些机器的传输量比较小时,就会分送网络信息给它。如此可以增加网络的速度,所以大部分时候都选N,也就是Enab

34、le。,The IPX protocol:IPX为Netware网络使用的通讯协议.主要是NOVELL系统支持的。,QoS and/or fair queueing:QoS即(Quality Of Service)这是一种排定某种封包先送的网络线程表,可同时针对多个网络封包处理并依优先处理顺序来排序,称之为packet schedulers。,此功能特别是针对实时系统时格外重要,当多个封包同时送到网络设备时,Kernel可以适当的决定出哪一个封包必须优先处理。因此Kernel提供数种packet scheduling algorithm。,其他网络选项还有很多,考虑篇幅无法给其作一一解释,如果

35、你有兴趣可以查看相关帮助文件。这里我建议你下载一个2.6.X内核,在其Xconfig中可以很方便查看各项的帮助信息。,6Networking deveices 网络设备支持。上面选好了网络协议了,现在选的是网络设备,其实主要就是网卡,所以关键是确定自己平台所使用的网卡芯片,该项下的子项也不少。,(1)Dummy net driver support 哑(空)网络设备支持.它可让我们模拟出TCPIP环境对SLIP或PPP的传输协议提供支持.选择它Linux核心增大不大。如果没有运行SLIP或PPP协议,就不用选它。,(2)Bonding driver support bonding技术是用来把多

36、块网卡虚拟为一块网卡的,使他们有一个共同的IP地址。(3)Universal TUN/TAP device driver support 用于支持TUNx/TAPx设备。,(4)SLIP support 这是MODEM族常用的一种通讯协议,必须通过一台Server(叫ISP)获取一个IP地址,然后利用这个IP地址,可以模拟以太网络,使用有关TCPIP的程序。,(5)PLIP support 依字面上看,它是一种利用打印机的接口(平行接口),然后利用点对点来模拟TCP/IP的环境。它和 SLIP/PPP全都属于点对点通讯,可以把两台电脑利用打印机的连接接口串联起来,然后,加入此通讯协议。,如此一

37、来,这两部电脑就等于一个小小的网络了。不过,如果电脑有提供打印服务的话,这个选项最好不要打开,不然可能会有问题(因为都是用并行接口)。,(6)PPP(pointtopoint)support 点对点协议。近年来,PPP协议已经慢慢的取代SLIP的规定了,原因是PPP协议可以获取相同的IP地址,而SLIP则一直在改变IP地址,在许多的方面,PPP都胜过SLIP协议。,(7)EQL(serial line load balancing)support 两台机器通过SLIP或PPP协议,使用两个MODEM,两条电话线,进行通讯时,可以用这个Driver以便让MODEM的速度提高两倍。,(8)Toke

38、n Ring driver support 对令牌环网的支持。(9)Ethertap network tap(10)Ethernet(10 or 100Mbit)十至百兆以太网设备,我们现在该类型设备用的比较多。进入该项里头还有许多小项,它们是关于具体网络设备(一般就是网卡)的信息。选择我们平台相关的就行。,(11)ARCnet support 它是一种网卡但好像不流行基本没用。其它的诸如千兆以太网、万兆以太网、无线网络、广域网、ATM和PCMCIA卡等网络设备的支持,要看你的具体应用而定,这里不作一一介绍。,7.Amateur Radio support 这个选项用的不多,它是用来启动无线网

39、络的,通过无线网络我们可以利用公众频率来进行数据传输,如果你有相关无线网络通讯设备就可以用它。,8.IrDA(infrared)support 该项也属于无线通讯的一种,用于启动对红外通讯的支持。目前在2.6.X的内核里对它的支持内容更丰富了。,9.ATA/ATAPI/MFM/RLL support 该项主要对ATA/ATAPI/MFM/RLL等协议的支持。在嵌入式设备中,目前这些设备应用的还不多,但台式机及笔记本用户如果你有支持以上协议的硬盘或光驱就可选上它。在2.6.X内核中这方面的支持内容也比较丰富。,10.SCSI device support 如果你有SCSI设备(SCSI控制卡、硬

40、盘或光驱等)你选上这项。目前SCSI设备类型已经比较多,要具体区分它们你得先了解它们所使用的控制芯片类型。2.6.X内核中对各类型SCSI设备已经有更具体详细的支持。,11.ISDN support ISDN(Integrated Services Digital Networks)它是一种高速的数字电话服务。通过专用ISDN线路加上装在你电脑上的ISDN卡,利用SLIP或PPP协议进行通讯。所以你若想启动该项支持ISDN通讯,你还应启动前面提到的Networking Devices中的SLIP或PPP。,12.Console drivers support 控制台设备支持.目前安装uClin

41、ux/Linux的设备几乎都是带控制台的,所以这项是必选项,还有几个子项:,(1)VGA text console 一般台式机选该项,支持VGA显示设备。(2)Support Frame Buffer devices 该项支持Frame Buffer设备。Frame Buffer技术在2.4.X内核被全面采用,它通过开辟一块内存空间模拟显示设备。,这样我们可以像操作具体图形设备一样来操作这块内存,直接给它输入数据。在具体显示设备上输出图形,在嵌入式设备上广泛采用LCD作为显示设备。所以该项显得比较重要。当该项被选上后,会出现一个子项让我们根据自己平台配备的具体硬件选择相应支持。,这些也往往是设

42、备开发人员给添加的,以UP-NETARM3000为例,你应选上:support for frame buffer devicesS3C44B0X LCD support Advanced low level driver options 8 bpp packet pixels support 该项在UP-NETARM2410平台上改为 320240 8bit 256 color STN LCD support,13.parallel port support 对并行口的设备的支持。LINUX可以支持PLIP协议(利用并行口的网络通讯协定)、并口的打印机、ZIP磁盘驱动器、扫描仪等。如果有打印机

43、,在选择利用并口通讯时要小心,因为它们可能会互相干扰。,14.Memory Technology Device(MTD)support MTD包含flash和RAM等存储设备。MTD在现在的嵌入式设备中应用的相当多,也特别重要。选中该项可以对MTD进行动态支持。其下还有好多具体小项,这里按UP-NETARM3000平台做一些解释:,(1)MTD partitioning support 选上该项可支持对MTD的分区操作。在对嵌入式设备的操作系统移植过程中往往要对MTD进行分区,然后在各分区放置不同的数据,以让系统能被正确引导启动。,(2)Direct char device access to

44、 MTD devices 选该项为系统的所有MTD设备提供一个字符设备,通过该字符设备能直接对MTD设备进行读写以及利用ioctl()函数来获取该MTD设备的相关信息。,(3)Caching block device access to MTD devices 有许多flash芯片其擦除的块太大,因此作为块设备使用效率被大打折扣。选上该项后,它支持利用RAM芯片作为缓存来使用MTD设备,这时对于MTD设备块设备就相当于它的一个用户,通过JFFS文件系统的控制。它可以模拟成一个小型块设备,具有读、写、擦除和校验等一系列功能。,(4)NAND flash device drivers 子项中有几项

45、是关于MTD设备驱动的,平台选择的是NAND flash,所以选上它。选上后,在其二级子项中还要选上:,NAND devices support verify NAND pages writes 支持页校验。NAND flash device on ARM board,15.Plug and Play support 这是对PNP(即插即用)设备的支持。,16.block devices 块设备。该项下也有好几个子项,主要是关于各种块设备的支持,至少把RAM的支持项选上,如在我们UP-NETARM3000平台上我们要选上:(1)RAM disk support(2)Initial RAM di

46、sk(initrd)support,17.File systems 文件系统在Linux中是非常重要的,该项下的子项也非常多。(1)Quota support 份额分配支持,择该项则系统支持对每个用户使用的磁盘空间进行限制。,(2)Kernel automounter support 在有NFS文件系统的支持下,选择该项使内核可以支持对一些远端文件系统的自动挂栽。(3)Kernel automounter version 4 support V3版本的升级,它兼容V3。,(4)Reiserfs support ReiserFS这种文件系统以日志方式,不仅把文件名,而且把文件本身保存在一个“平衡

47、树”里,其速度与ETX2差不多,但比传统的文件系统架构更为高效,尤其适合大目录下文件的情况。,(5)ROM file system support 它是一个非常小的只读文件系统,主要用于安装盘及根文件系统。(6)JFS filesystem support 这是IBM的一个日志文件系统。,(7)Second extended fs support 著名的EXT2(二版扩展文件系统),除非你是用DOS模拟器否则得选它。(8)Ext3 journalling file system support 它其实是EXT2的日志版,我们通常叫它EXT3。,(9)Journalling Flash file

48、 system v2(jffs2)support Flash日志文件系统,目前UP-NETARM3000的uCliux支持该文件系统。(10)ISO 9660 CDROM file system support 光驱的支持。,(11)/proc file system support 这是虚拟文件系统,能够提供当前系统的状态信息。它运行时在内存生成,不占任何硬盘空间,通过CAT命令可以读到其文件的相关信息。,(12)/dev file system support 它是类似于/proc的一个文件系统,也是虚拟的,主要用于支持devfs(设备文件系统)。把它选上,就可以不依赖于传统的主次设备号的

49、方式来管理设备,而是由devfs自动管理。,(13)NFS file system 网络文件系统。NFS file system support 对网络文件系统的支持,NFS通过SLIP、PLIP、PPP或以太网进行网络文件管理。它是比较重要的。,NFS server support 选这项可以把你的Linux配置为NFS server。SMB file system support SMB(Server Message Block),它是用于和局域网中相连的Windows机器建立连接的,相当于网上邻居。这些协议都需要在TCP/IP被启用后才有效。,(14)Native Language Su

50、pport 它是对各国语言的支持。,18.character devices LINUX支持很多特殊的字符设备,所以该项下的子项也特别多。(1)virtual terminal 虚拟终端,选上。,(2)support for console on virtual terminal 虚拟终端控制台,也给选上。(3)non-standar serial port support 非标准串口设备的支持。如果你的平台上有一些非标准串口设备需要支持,就选上它。,(4)Serial drivers 串口设置,一般选上自己开发平台相关的串口就行。在UP-NETARM3000上选S3C44B0 serial

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号