linux系统移植实验手册.docx
- 文档编号:7110021
- 上传时间:2023-01-18
- 格式:DOCX
- 页数:24
- 大小:29.01KB
linux系统移植实验手册.docx
《linux系统移植实验手册.docx》由会员分享,可在线阅读,更多相关《linux系统移植实验手册.docx(24页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 系统 移植 实验 手册