您的位置 首页 开关

PowerPC渠道Linux的移植(三)

PowerPC平台Linux的移植(三)-如果你想使用ram disk,那么用以下命令进行编译:make zImage.initrd否则用以下命令:make以前编译2.4内核的时候之前都要用make

假如你想运用ram disk,那么用以下指令进行编译:make zImage.initrd不然用以下指令:make曾经编译2.4内核的时分之前都要用make dep 指令确保编译内核时一切的依靠,例如头文件,都存在。不过关于2.6来讲现已不需求了,直接一个make指令把make dep和make zImage的事请就做了。假如你之前编译过,想从头编译的话,最好用一下make clean,它能够去除一切的object文件以及一些其他留传文件。当然你也能够用make mrproper,这个比make clean清理得愈加完全,不过当心你的.config文件了,它会一同删去的,所以仍是首要备份一下,或许就用make clean吧。现在咱们是第一次编译,所以还不必考虑这些。为了稳妥,咱们运用第二组指令来进行编译。时刻蛮长的,假如一切顺利,编译出来的内核会放在 arch/ppc/boot/images/目录下,或许叫zImage.elf或许zImage.initrd.elf,用现在这种编译办法编译的是 zImage.elf。理论上讲,结束之后就能够把这个履行文件拷贝到EDK工程目录下,并进入创立ACE文件的进程了。可是,在上面的解说中,咱们并没有运用内核模块,而在进一步运用中,很或许有一些内核选项是要以模块办法编译进去的,此刻,接下来的作业便是树立及装置模块,用指令make modulesmake modules_install来编译,成功后,体系会在/lib/modules目录下生成一个按你所编译内核的版别号命名的子目录,里边寄存着新内核的一切可加载模块。将来要运用时用insmod指令进行加载即可。现在的的Linux 2.6x版别内核是主动处理依靠联系,所以暂时不必重视depmod了。CF的装备CF卡分区其实不分区也能够,可是咱们在这儿分区的原因是最大极限模仿正常的Linux,想想,一般的人装置Linux体系的时分是怎样分区的?/根分区,swap分区以及/boot分区。ok,咱们在这儿也给咱们的CF卡分三个区。暂时先以我这儿的8G CF卡举比方。将CF卡插到体系上,运用指令mount | column -t看看CF卡对应的mount目录的dev名称是是什么。我核算机上的信息如图所示:Screenshot-coloum@windstorm: ~.png能够看出,CF卡在我这儿是/dev/sdc。然后咱们运用fdisk将其分区:fdisk /dev/sdc详细的分区进程我就不讲了,假如你觉得不习惯fdisk的指令行操作办法,也能够运用gparted这个图形化分区东西,总归,最终要分红的效果是:1. ParTITIon 1 – Type = FAT16 (6) – Size = 32MB (只需求能够放得下你的system.ace文件即可)2. ParTITIon 2 – Type = Linux Swap (82) – Size = 256MB (这个其实看状况了,不分swap也能够)3. Partition 3 – Type = Linux (83) – Size = ??? (CF还剩多少就分多少,用来寄存根文件体系)能够看出,上面三个区别别对应常说的/boot,/swap和/三个分区。创立CF卡文件体系Xilinx的SystemACE控制器比较特别,并不是说随意一个CF卡插上去就能够运用的,有必要专门为CF卡创立特定文件体系。能够完结这个使命的是mkdosfs这个软件。用下面的指令对CF卡进行操作即可:mkdosfs -s 8 -F 16 -R 1 F:-s后边跟的数字表明每簇扇区数目,一般是2的整数次方。下面是FAT16文件格局一般容量对应的每簇扇区数目。16–128MB 4128–256MB 8256–512MB 16512–1024MB 321024–2048MB 64不过我发现这个-s后边的数字其实能够大一些,比方我用64,除了在履行指令的时分会呈现一个warningWARNING: Not enough clusters for a 16 bit FAT! The filesystem will bemisinterpreted as having a 12 bit FAT without mount option “fat=16″.其它没有什么问题。-F表明FAT的巨细,这儿是FAT16,-R的值这儿不要改动,保存扇区的数目,老问题了,有爱好的能够去网上查找。最终一个F:是在 windows下的CF卡卷标,依据你自己的体系来调整它。假如是Linux环境,将这个卷表换成是/dev/fdx这种办法。详细设备名自行查询。下载内核文件OK,到这儿,我假定你现已编译成功,产生了你所需求的zImage文件,好,现在该怎样用这个文件呢?有三种办法:1 把该文件和硬件bit流组成ace文件,放到flash上面自行加载2 经过自己编写的bootloader将flash上面的elf文件加载到内部ram中3 经过xmd的dow指令来下载elf文件第二种办法我还没有研讨,嘿嘿,所以就先不介绍了,要是哪位朋友对bootloader比较熟的,恳请指导一下~~好了,首要详细介绍一下许多人运用的ace办法。创立ACE咱们能够经过XMD东西来进行ACE文件的创立,指令如下:xmd -tcl genace.tcl -opt genace.optgenace.tcl是存在于xps装置目录下的data/xmd目录下,而genace.opt需求自己创立,内容如下:-jprog-board user-target ppc_hw-hw implementation/download.bit-elf zImage.elf-configdevice devicenr 1 idcode 0×1127e093 irlength 14 partname xc2vp30-debugdevice devicenr 1 cpunr 1-ace system.ace-hw和-elf这两行是需求你依据自己的状况批改的,仅有需求留意的是,假如你的开发环境是Linux体系,则-hw implementation/download.bit这句要改为-hw ./implementation/download.bit在system.ace文件被拷贝到CF卡上之后,批改一下板子上的跳线,让其成为从JTAG发动,就能够一直从CF卡上加载程序。关于非XUP的,官方的板子来说,比方ML-403开发板,进程愈加简略,genace.opt的内容如下:-jprog-board ml403-hw implementation/download.bit-elf TestApp_memory/executable.elf-ace system.ace你只需求奉告EDK板子是ml403就能够了,许多参数都不必自己装备。详细哪些开发板是被xmd直接支撑的,能够参阅genace.tcl文件。有些朋友会发现,依照上面的进程操作,或许会呈现以下过错提示:Error: Executable TestApp_Memory/executable.elf does not contain start address..我在遇到这个过错之后查了一些材料,并按working harddfen照材料所述的批改办法来批改,都没有效果,最终是在朋友的装置了sp的edk环境中将ACE文件生成成功的。因而,我置疑或许是edk无 sp的9.1版其他bug。假如你和我相同头疼于sp的下载,还在运用没有sp的环境……祝贺你,或许想办法去下载sp,或许就找装置了sp的机器来生成吧。其实根据windows的sp比较好找,主要是根据Linux的sp太难下了……默哀ing,假如有哪位Linuxer知道有其他办法能够批改这个过错,烦请奉告,谢谢了。我比较懒,还比较性急,不喜欢看着bit+elf这么大的文件经过9600速度的串口下载到板子上……所以直接运用了最简略的第三种办法,翻开xmd,connect ppc hw,dow zImage.elf, con,然后就OK了。终端显现的信息如下:loaded at: 00400000 0066D19Cboard data at: 0066B120 0066B19Crelocated to: 00404060 004040DCzimage at: 00404ED5 0066A3DDavail ram: 0066E000 08000000Linux/PPC load: console=ttyS0,9600 root=/dev/xsysace/disc0/part3 rwUncompressing Linux…done.Now booting the kernel……..(以下信息省掉)这就表明根本内核树立成功了,咱们能够接下去创立root文件体系了。呵呵,我以为最困难的一步现已被你搞定了,祝贺。假如遇到过错……许多朋友都会遇到下面这种过错inflate returned FFFFFFFB, error is caused by the size of the uncompressed image这表明你的内核解压缩之后巨细超过了你的存储空间,一般这种状况呈现在你的存储空间定坐落bram上。怎样处理呢?很简略,批改ld,把程序定位到ddr上不就行了~~还有的朋友会遇到下面这种过错:Linux/PPC load: console=ttyS0,9600Uncompressing Linux…done.Now booting the kernelloaded at: 00400000 005331A0board data at: 40000000 4000007Crelocated to: 00404084 00404100zimage at: 00404EB9 00530A50avail ram: 00534000 00000000Linux/PPC load: console=ttyS0,9600Uncompressing Linux…oops… out of memorypause这个时分检查一下arch/ppc/boot/simple/embed_config.c 中vertex的支撑代码是否现已被编译进去(查找ML403) 假如没有装备的话,板级信息就不会正确树立 。转载:fcni_cn的百度空间

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/179611.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部