分类: LINUX
2011-08-07 14:47:59
作者:liukun321(咕唧咕唧)
原文出处:http://blog.csdn.net/liukun321 & liukun321.blog.chinaunix.net
不知道大家是否遇到过找不到MACH_FRIENDLY_ARM定义的问题,反正我遇到了,在我前两次移植linux内核时我都碰到了这个问题,而且迟迟到今天才把这个问题解决。
老样子首先分析为什么找不到MACH_FRIENDLY_ARM。原因:还是我功底太薄,对kconfig文件和Makefile文件理解的不够深刻。否则,在配置文件找个定义也就是几分钟甚至一分钟的问题。
第一次移植内核是仿照友善提供的源码。第一次见到对MACH_FRIENDLY_ARM的使用是在arch/arm/mach-s3c2440/kconfig 中
config MACH_FRIENDLY_ARM_MINI2440
bool "FriendlyARM Mini2440/QQ2440 development board"
select CPU_S3C2440
select MACH_FRIENDLY_ARM
help
Say Y here if you are using the FriendlyARM Mini2440/QQ2440 development board.
可见只要我们在配置内核时选择了FriendlyARM Mini2440/QQ2440 development board选项MACH_FRIENDLY_ARM就会被立即选上。可是MACH_FRIENDLY_ARM定义在哪呢?当前目录是没有它的定义的
想快速找到它,首先要猜测它的作用,MACH_FRIENDLY_ARM选项是体系结构相关的定义,因此不会逃出arch/arm/这个目录,在这个目录中除了/mach-s3c2440这个目录和2440有关,还有那个目录会和2440有关系呢?我想你会很容易找到plat-24xx这个目录,没错就是它,你会在此目录下的kconfig中找到有关定义如下:
config MACH_FRIENDLY_ARM
bool
help
Common machine code for FriendlyARM boards i.e. Mini2440, QQ2440, etc
找到定义,下一步我们需要看它的作用。作用在当前目录下的Makefile中清晰可见
obj-$(CONFIG_MACH_FRIENDLY_ARM) += common-friendly-arm.o
决定了是否编译本目录下的common-friendly-arm.c文件。
好了,问题解决。