linux系统移植实验手册.docx

上传人:b****6 文档编号:7110021 上传时间:2023-01-18 格式:DOCX 页数:24 大小:29.01KB
下载 相关 举报
linux系统移植实验手册.docx_第1页
第1页 / 共24页
linux系统移植实验手册.docx_第2页
第2页 / 共24页
linux系统移植实验手册.docx_第3页
第3页 / 共24页
linux系统移植实验手册.docx_第4页
第4页 / 共24页
linux系统移植实验手册.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

linux系统移植实验手册.docx

《linux系统移植实验手册.docx》由会员分享,可在线阅读,更多相关《linux系统移植实验手册.docx(24页珍藏版)》请在冰豆网上搜索。

linux系统移植实验手册.docx

linux系统移植实验手册系统移植实验手册实验四实验四Linux-2.6.14内核移植内核移植-网卡驱动的添加网卡驱动的添加【实验目的】【实验目的】本实验通过在上个实验结果的linux2.6.14内核上移植CS89900A网卡驱动,使其可以通过网络nfs的方式挂载在ubantu主机环境上的文件系统,从而实现linux系统的完全启动。

【实验环境】【实验环境】1、Ubuntu7.0.4发行版2、GEC2410平台以及开发板中移植好的u-boot3、交叉编译器arm-linux-gcc【实验步骤】【实验步骤】

(1)下载linux内核http:

/www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.1.tar.bz2,下载linux2.6.14内核致/source/kernel目录,如果没有/source/kernel目录,自行建立目录。

root:

/source/kernel#cd/source/kernel/root:

/source/kernel#tar-xjvflinux-2.6.14.tar.bz2root:

/source/kernel/linux-2.6.14#pwd/source/kernel/linux-2.6.14root:

/source/kernel#cdlinux-2.6.14进入内核解压后的目录,以后示例中,只要是相对路径全部是相对于/source/kernel/linux-2.6.14这个目录。

(2)修改Makefile文件修改内核目录树根下的的Makefile,指明交叉编译器:

root:

/source/kernel/linux-2.6.14#vimMakefile找到ARCH和CROSS_COMPILE,修改ARCH=armCROSS_COMPILE=arm-softfloat-linux-gnu-保存退出,然后设置你的PATH环境变量,使其可以找到你的交叉编译工具链:

root:

/source/kernel/linux-2.6.14#echo$PATH:

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games如果第一个路径为/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin,则不用再进行设置,如果不是则进行下面步骤进行设置:

root:

/source/kernel/linux-2.6.14#exportPATH=$PATH:

/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

(动态加载环境变量,终端关闭后,自己所加载的环境变量立即消失)。

或者修改./bashrc文件:

(静态加载环境变量,不随终端的关闭而消失)root:

/source/kernel/linux-2.6.14#vim/.bashrc在文件最后添加exportPATH=$PATH:

/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

再重新登陆:

root:

/source/kernel/linux-2.6.14#su下面的所有操作都在上个实验结果的linux2.6.14内核源码目录中,可以参考前面的实验。

(3)添加网卡驱动到内核将cs8900a.h和cs8900a.c文件拷贝到内核代码目录drivers/net中:

linux:

/source/kernel/linux-2.6.14$cp/mnt/hgfs/disk/cs8900a.*drivers/net(4)修改Makefile和Kconfig文件linux:

/source/kernel/linux-2.6.14-$vimdrivers/net/Makefile在文件中添加:

obj-$(CONFIG_CS8900a)+=cs8900a.o(5)保存退出,修改Kconfig文件linux:

/source/kernel/linux-2.6.14-$vimdrivers/net/Kconfig在以下代码段下面configDM9000tristateDM9000supportdependsonARM&NET_ETHERNETselectCRC32selectMII-help-SupportforDM9000chipset.Tocompilethisdriverasamodule,chooseMhereandread.Themodulewillbecalleddm9000.加入以下信息:

configCS8900atristateCS8900asupport(注意开头使用TAB键,下同)dependsonARM&NET_ETHERNET-help-Supportforcs8900achipset.Tocompilethisdriverasamodule,chooseMhereandread.(6)支持启动时挂载devfs为了内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,并且自动创建设备结点,修改fs/Kconfig文件:

root:

/source/kernel/linux-2.6.14#vimfs/Kconfig找到menuPseudofilesystems添加如下语句:

configDEVFS_FSbool/devfilesystemsupport(OBSOLETE)defaultyconfigDEVFS_MOUNTboolAutomaticallymountatbootdefaultydependsonDEVFS_FS(7)为网卡驱动添加头文件#touchinclude/asm-arm/arch-s3c2410/smdk2410.h在文件smdk2410.h中添加如下内容:

#ifndef_ASM_ARCH_SMDK2410_H#define_ASM_ARCH_SMDK2410_H#include#definevSMDK2410_ETH_IO0xE9000000/网卡的虚拟地址#definepSMDK2410_ETH_IO0x19000000/网卡的物理地址#defineSMDK2410_ETH_IRQIRQ_EINT9/网卡中断号#endif(8)建立网卡地址内存映射root:

/source/kernel/linux-2.6.14#vimarch/arm/mach-s3c2410/mach-smdk2410.c添加:

#includestaticstructmap_descsmdk2410_iodesc_initdata=/*nothinghereyet*/vSMDK2410_ETH_IO,pSMDK2410_ETH_IO,SZ_1M,MT_DEVICE;(9)配置内核支持CS8900A网卡root:

/source/kernel/linux-2.6.14#makemenuconfigLoadablemodulesupport-*Enableloadablemodulesupport*AutomatickernelmoduleloadingFloatingpointemulation-*NWFPEmathemulation/增加对NWFPE浮点运算库的支持Filesystems-/针对文件系统的设置Pseudofilesystems-*/procfilesystemsupport*Virtualmemoryfilesystemsupport(formershmfs)*/devfilesystemsupport(OBSOLETE)*Automaticallymountatboot(NEW)NetworkFileSystems-NFSfilesystemsupport/支持nfs文件系统*RootfilesystemonNFSDeviceDrivers-/配置网卡驱动:

Networkdevicesupport-*NetworkdevicesupportEthernet(10or100Mbit)-*Ethernet(10or100Mbit)CS8900asupport保存退出,产生.config文件.(10)编译内核产生zImage文件,并将arch/arm/boot/zImge拷贝到/tftpboot目录中(11)拷贝rootfs-.tar.gz到配置了tftp及nfs服务的ubantu7.04环境中假定/source/rootfs为nfs的服务目录,则:

root:

/source#cprootfs.tar.gz/sourceroot:

/source#tarzxvfrootfs.tar.gz在目录/souce/rootfs下存放着一个可用的文件系统(文件系统的实验在后面的实验中会涉及到)。

确保主机端tftp及nfs服务是开启的。

(12)修改内核启动参数GEC2410#setenvbootcmdtftp30008000zImage;go30008000GEC2410#setenvbootargsroot=nfsnfsroot=192.168.1.23:

/source/rootfsip=192.168.1.134console=ttySAC0,115200init=/linuxrcGEC2410#saveenv(13)启动开发平台,在超级终端观察现象GEC2410#boot如果顺利,可以在串口终端显示linux命令行终端了!

实验五实验五Linux-2.6.14内核移植内核移植-NandFlash驱动的添加驱动的添加【实验目的】【实验目的】本实验通过在上个实验结果的linux2.6.14内核上移植NANDFlash驱动,使其可以设别到NANDFlash分区,并可以管理相应的Flash设备。

从而进一步完善系统结构,并通过移植的过程来了解nandflash的移植方法。

【实验环境】【实验环境】1、Ubuntu7.04发行版2、GEC2410平台以及开发板中移植好的u-boot3、交叉编译器arm-linux-gcc【实验步骤】【实验步骤】在linux2.6.14内核中已经包含了s3c2410的nandflash控制器驱动,但需要做一些配置工作才能正常使用。

(1)指明分区信息,建立分区表在arch/arm/mach-s3c2410/decs.c文件中,添加分区信息:

#vimarch/arm/mach-s3c2410/devs.c添加:

#include#include#includestaticstructmtd_partitionpartition_info=name:

u-boot,/名称size:

0x40000,/大小offset:

0,/偏移量,name:

kernel,size:

0x001c0000,offset:

0x00040000,name:

root,size:

0x02300000,offset:

0x00200000,name:

user,size:

0x01B00000,offset:

0x02500000,/加入nandflash分区structs3c2410_nand_setnandset=nr_partitions:

4,/nr_partitions为分区数partitions:

partition_info,/partitions:

partition_info为分区表;

(2)建立nandflash硬件支持structs3c2410_platform_nandsuperlpplatform=tacls:

0,twrph0:

30,twrph1:

0,sets:

&nandset,nr_sets:

1,;/*这些参数的含义请参看s3c2410的关于NANDFLASH的datasheet*/(3)加入nandflash芯片支持到nandflash驱动修改此文件arch/arm/mach-s3c2410/devs.c中的s3c_device_nand结构体变量,添加对dev成员的赋值:

structplatform_devices3c_device_nand=.name=s3c2410-nand,.id=-1,.num_resources=ARRAY_SIZE(s3c_nand_resource),.resource=s3c_nand_resource,/在这添加如下代码:

.dev=.platform_data=&superlpplatform;/*id有效设备编号,如果只有一个定义为-1,如果有多个则从0开始计算,num_resource定义有几个NANDFLASH芯片资源,resouce定义NANDFLASH芯片资源的首地址。

*/(4)指定启动时初始化kernel启动时依据我们对分区的设置进行初始配置,修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,具体操作如下:

#vimarch/arm/mach-s3c2410/mach-smdk2410.c修改smdk2410_devices.指明初始化时包括我们在前面所设置的flash信息staticstructplatform_device*smdk2410_devices_initdata=&s3c_device_usb,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c,&s3c_device_iis,&s3c_device_nand,/*added*/;(5)配置MTD,具体操作如下root:

/source/kernel/linux-2.6.14#makemenuconfigDeviceDrivers-MemoryTechnologyDevices(MTD)-*MTDpartitioningsupportNANDFlashDeviceDrivers-NANDDeviceSupportNANDFlashsupportforS3C2410/S3C2440SoC这些选项代表对NANDFLASH的操作。

(6)编译内核,并将arch/arm/boot/zImge烧写到开发板(7)启动系统,在串口终端输入:

/#cat/proc/mtddev:

sizeerasesizenamemtd0:

0004000000004000u-bootmtd1:

001c000000004000kernelmtd2:

0230000000004000cramfsmtd3:

01b0000000004000user_rootfs可以看到系统已经可以支持nandflash了。

实验六实验六Linux-2.6.14内核移植内核移植-Yaffs2文件系统移植文件系统移植【实验目的】【实验目的】Yaffs2是一种专门为NANDFlash设计的可读写文件系统,本实验是在前面以上的实验的基础上,加入了对yaffs2的支持,从而进一步完善系统结构,通过移植的过程来了解yaffs2的移植方法。

【实验环境】【实验环境】1、Ubuntu7.04发行版2、GEC2410平台以及开发板中移植好的u-boot3、交叉编译器arm-linux-gcc【实验步骤】【实验步骤】

(1)下载yaffs2源代码,下载地址为:

http:

/www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2.tar.gz?

view=tar并假设将源代码放在/source/yaffs2/目录下。

在linux2.6.14源码树中fs目录下建立yaffs2文件夹,把yaffs2源码复制过去。

相关的命令如下:

#mkdiryaffs2#cdyaffs2/#cp/source/yaffs/yaffs2/*.h./#cp/source/yaffs/yaffs2/*.c./#cp/source/yaffs/yaffs2/Makefile.kernel./Makefile#cp/source/yaffs/yaffs2/Kconfig./

(2)修改fs目录下的Makefile#vimMakefile添加下面一行:

obj-$(CONFIG_YAFFS_FS)+=yaffs2/(3)修改fs目录下Kconfig:

#vimKconfig找到下面的代码:

configUFS_FS_WRITEboolUFSfilesystemwritesupport(DANGEROUS)dependsonUFS_FS&EXPERIMENTALhelpSayYhereifyouwanttotrywritingtoUFSpartitions.Thisisexperimental,soyoushouldbackupyourUFSpartitionsbeforehand.添加下面一行:

sourcefs/yaffs2/Kconfigendmenu注意:

在Kconfig中添加的选项位置决定了配置内核时选项出现在那个层次目录中,为了保持配置选项目路结构清晰,sourcefs/yaffs2/Kconfig一定要添加在menuMiscellaneousfilesystemsendmenu之间的位置上,如上所示添加在了endmenu行的上方,作为fs的最后一个选项。

(4)配置内核选项,目的是内核支持Yaffs2文件系统Filesystems-Miscellaneousfilesystems-YAFFS2filesystemsupport*Autoselectyaffs2format(5)编译内核,重新下载。

在终端下执行:

/#cat/proc/filesystemsnodevsysfsnodevrootfsnodevbdevnodevprocnodevsockfsnodevpipefsnodevfutexfsnodevtmpfsnodevinotifyfsnodeveventpollfsnodevdevptsext2cramfsnodevramfsnodevdevfsnodevnfsnodevnfsdromfsyaffsyaffs2nodevrpc_pipefs可以看出内核支持了多种文件系统,包括yaffs2。

(6)测试yaffs2文件系统从nandflash移植实验中可以看出/dev/mtdblock/3是用户分区。

root192/#mount-tyaffs2/dev/mtdblock/3/tmp顺利的话,就可以在/tmp下,写入文件了。

重新启动、挂载yaffs2后,写入的文件仍然保存在flash上。

实验七实验七Linux-2.6.14内核移植内核移植-添加添加USB设备驱动设备驱动【实验目的】【实验目的】在GEC2410开发板上进行linux-2.6.14内核的移植,这个部分完成USB设备驱动的添加,完成相应的功能。

【实验环境】【实验环境】1、Ubuntu7.04发行版2、GEC2410平台以及开发板中移植好的u-boot3、交叉编译器arm-linux-gcc【实验步骤】【实验步骤】

(1)配置2.6.14支持u盘1.devicedrivers-usbsupport-SupportforHost-sideUSBOHCIHCDsupportUSBMassStoragesupport这些配置是对host端和device端的支持.2.SCSIdevicesupport-SCSIdisksupportSCSIgenericsupportSCSImediachangersupport这是对U盘的SCSI类型的支持3.filesystem-DOS/FAT/NTFilesystems-MSDOSfssupportVFAT(Windows-95)fssupport(437)DefaultcodepageforFAT(iso8859-1)DefaultiocharsetforFAT支持相应的文件系统4.PartitionTypes-*Advancedpartitionselection*PCBIOS(MSDOSpartitiontables)support支持相应的分区,这个必须有,否则无法挂载操作5.NativeLanguageSupport-(iso8859-1)DefaultNLSOptionCodepage437(UnitedStates,Canada)SimplifiedChinesecharset(CP936,GB2312)NLSISO8859-1(Latin1;WesternEuropeanLanguages)支持相应的语言

(2)启动开发板插入U盘,出现一下信息:

root192/#usb1-1:

newfullspeedUSBdeviceusings3c2410-ohciandaddress2scsi0:

SCSIemulationforUSBMassStoragedevicesVendor:

NetacModel:

OnlyDiskRev:

1.00Type:

Direct-AccessANSISCSIrevision:

02SCSIdevicesda:

2039808512-bytehdwrsectors(1044MB)sda:

WriteProtectisoffsda:

assumingdrivecache:

writethroughSCSIdevicesda:

2039808512-bytehdwrsectors(1044MB)sda:

WriteProtectisoffsda:

assumingdrivecache:

writethrough/dev/scsi/host0/bus0/target0/lun0:

p1Attachedscsiremovabledisksdaatscsi0,channel0,id0,lun0Attachedscsigenericsg0atscsi0,channel0,id0,lun0,type0(3)挂载U盘并查看信息root192/#mount-tvfat/dev/scsi/host0/bus0/target0/lun0/part1/tmproot192/#cd/tmproot192tmp#lsbutton.cu-boot.tar.bz2chatu-boot.bindelautorun.batusb.cdelautorun.in

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1