微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > PowerPC平台Linux的移植(二)

PowerPC平台Linux的移植(二)

时间:02-11 来源:网络整理 点击:

顶层 Makefile 递归的进入到内核的各个子目录中,分别调用位于这些子目录中的 Makefile。至于到底进入哪些子目录,取决于内核的配置。在顶层 Makefile 中,有一句:include arch/$(ARCH)/Makefile,包含了特定 CPU 体系结构下的 Makefile,这个 Makefile 中包含了平台相关的信息。有关Makefile的更多说明,请参见IBM文档库文章 Linux内核配置系统浅析。 小知识:各种内核格式的区别vmlinux是未压缩的原始内核,为ELF格式,常用于内核调试;vmlinuz,或zImage or bzImage,是vmlinux经过压缩并包装有gzip自解压代码的内核,为BIN格式,常作为系统或目标板的引导内核。位于各个子目录下的 Makefile 同样也根据 .config 给出的配置信息,构造出当前配置下需要的源文件列表,并在文件的最后有 include $(TOPDIR)/Rules.make。下面谈谈具体如何对Makefile进行修改。打开内核源代码目录下的Makefile文件,找到以下两行:ARCH ?= $(SUBARCH)CROSS_COMPILE ?=这是表示ARCH的值为SUBARCH的值,而CROSS_COMPILE的值为空。我们应该将其改为:ARCH := ppcCROSS_COMPILE = powerpc-405-linux-gnu-这样表示硬件平台是ppc,而交叉编译工具是powerpc-405-linux-gnu-系列工具。 小知识:ppc还是powerpc?细心的朋友可能发现,arch/platforms目录下既有ppc目录又有powerpc目录,这是怎么回事呢?由于IBM 成立 power.org 组织,便以 Power Architecture 来称呼 PowerPC 处理器,因此,以往所惯用的PPC 现在都改名叫 PowerPC。也就是说, PowerPC 现在属于是官方名称了。而Linux kernel 由 2.6.15 开始,已经把 arch/ppc/ 重新组织到 arch/powerpc/,不过在整个迁徙的工作完成之前,arch/ppc/ 仍会继续存在,只不过 arch/ppc/ 将会停止发展,接下来的 Linux kernel for PowerPC 将会转移到 arch/powerpc/ 的新目录下继续发展。 仔细观察两个文件夹,会发现有些许不同,以往 PPC platform的分类 是被写在 arch/ppc/platforms/*.c 裡,组织结构不大良好,现在被重新组织在 arch/powerpc/platforms/ 目录下,一个 platform 一个目录,干净多了:# ls arch/powerpc/platforms/4xx/ 85xx/ apus/ embedded6xx/ maple/ prep/82xx/ 86xx/ cell/ iseries/ pasemi/ pseries/83xx/ 8xx/ chrp/ Makefile powermac/ 当然,就目前来说,Makefile里面的arch值设置为ppc或者powerpc都无所谓,因为即使你选用了ppc,构建系统的时候也会自动包含asm-powerpc中所必须的共享包含文件,因此没有必要担心这一点。内核配置接下来进行内核配置。笔者推荐使用"make menuconfig"命令,而不是一些文章中推荐的"make xconfig",因为后者可能产生一些未知原因的编译错误。menuconfig是一个文本模式、选单驱动的配置界面,而xconfig是基于 Tcl/Tk的X图形配置界面。另外一个常用的是make oldconfig,如果只想在原来内核配置的基础上修改一些小地方,这个命令会省去不少麻烦,但我们这里是要大改,所以也不用这个。关于配置内核的原理与过程,不熟悉的朋友可以参见这篇文章 ,这里就不详细介绍了。顺便提及的是,运行这个命令可能出现以下错误1 /usr/bin/ld: crt1.o: No such file: No such file or directory这个错误可以通过安装libc6-dev解决2 /usr/bin/ld: cannot find -lncurses这个错误可以通过安装libncurses5-dev解决3 checklist.o: file not recognized: File format not recognized解决方法是用"make mrproper"命令清除所有旧的Xwindow configuraTIon文件,至于为什么会有这个错误,我没有深入研究,知道的朋友请指点一下 在一开始配置时,建议先生成一个最小的,保证可运行的.config文件,以后再根据自己的需要添加一些特性,而且添加特性的时候一定小心,稍不注意就会让你无法正常编译,或者无法正常运行。另外需要注意的是,所有标有"new"标签的选项都要遵从默认设置,不要修改它。下面这些选项是我所用的最小系统配置,如果你使用的内核版本和我的差别很大,可能需要改动一些config选项,或者如果你使用这个配置出现问题,请在这里留言,我会尽力帮你分析。先将清单与大概解释列出如下:General Setup* Prompt for development and/or incomplete drivers(XUP)Local version - append to kernel release* IniTIal RAM disk (initrd) support* System V IPC* Configure standard kernel features —>* Sysctl syscall suppo

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top