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内核,下载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在文件最后添加1exportPATH=$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,chooseMhereandreadfile:Documentation/networking/net-modules.txt.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_MOUNT2boolAutomaticallymountatbootdefaultydependsonDEVFS_FS(7)为网卡驱动添加头文件#touchinclude/asm-arm/arch-s3c2410/smdk2410.h在文件smdk2410.h中添加如下内容:#ifndef__ASM_ARCH_SMDK2410_H#define__ASM_ARCH_SMDK2410_H#includelinux/config.h#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添加:#includeasm/arch-s3c2410/smdk2410.hstaticstructmap_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)*CS8900asupport3保存退出,产生.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命令行终端了!4实验五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添加:#includelinux/mtd/partitions.h#includelinux/mtd/nand.h#includeasm/arch/nand.hstaticstructmtd_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,}5}//加入nandflash分区structs3c2410_nand_setnandset={nr_partitions:4,//nr_partitions为分区数partitions:partition_info,//partitions:partition_info为分区表};(2)建立n

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功