您的位置:首页 > 运维架构 > Linux

linux 2.6.32 在arm9(s3c2440)平台的移植2 -- Kconfig和Makefile(2)

2010-08-12 02:19 399 查看
 

make menuconfig后,首先读入linux-2.6.32.2/arch/arm/Kconfig ???
sudu vi linux-2.6.32.2/arch/arm/Kconfig
(1)找到开头的mainmenu "Linux Kernel Configuration"source "这一行, 这是整个Configure树的根, 这一行匹配最后一个"带endmenu字样的行".再找到init/Kconfig"这一行, 可以看到该行之前的都是固定选项,不会出现在Configure可选选项的, 
某个config的例子如下
config CONFIG_SYMBOL
        tristate "string" 或者 bool "string"
        default [y/n/m] if MACH_XXX2440
        depends on ARCH_ARM
        help
其中,CONFIG_SYMBOL字符可以在Configure菜单树中找到(按/就是搜索,类似vi), 并且还给出在数中的位置,
但是如果在Configure菜单树搜索tristate/bool后面引号内的string,是搜不到的,
(2)搜索所有的menu "string" 的行, 这些都是Kernel Configure中的第一级目录,直到有endmenu字样的这一行结束.
   比如arm/Kconfig中有
   menu "Boot options" ... 最近的endmenu结束此层
   menu "CPU Power Management" ... 最近的endmenu结束此层
整个Kconfig看起来是这样的:
********Kconfig开始*******************
mainmenu "Linux Kernel Configuration"
##*以下是不可选择部分,

    config GENERIC_GPIO
bool    ##注释:这样的不可选

    config PAGE_OFFSET
        default 0xC0000000
##*以下是一级菜单的显示
   source "init/Kconfig" ## ???
    menu "System Type"
        ##常见的config,包括config_ID标识(对应Makefile里的字符), bool/tristate, depends on和default.
    endmenu

    menu "Boot options"
        ##...
    endmenu

##*以下是

source "net/Kconfig"
source "drivers/Kconfig"
source "fs/Kconfig"

********Kconfig结束*******************
(3)比如,移植过程中修改linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.c中代码, 这部分代码对应Kernel Configure菜单树中的哪项 ?
vi linux-2.6.32.2/arch/arm/mach-s3c2440/Makefile &
vi linux-2.6.32.2/arch/arm/mach-s3c2440/Kconfig &
在Makefile中找到: obj-$(CONFIG_MACH_MINI2440) += mach-mini2440.o, 可知mach-mini2440.c编译出的.o文件的选项标识ID=MACH_MINI2440,
在Kconfig中找到: config MACH_MINI2440 的部分, 可以看到这个选项的显示字符是bool "FriendlyARM Mini2440 development board",
在Kernel Configure菜单树中,按/搜索MACH_MINI2440, 可以看到这个选项在:System Type -> S3C2440 Machines -> FriendlyARM Mini2440 development board,这样就找到了, 我们按照手册中修改mach-mini2440.c, 最后是要在这个选项里选择它, 然后保存在顶层的.config中, make内核的时候就会被链接进去了.
Kernel Configure菜单树中,按/搜索选项ID,也能列出此选项ID对应的Kconfig, 
格式: [Kernel Configure菜单树]:[对应Kconfig路径]
System Type ->MMU-based Paged Memory:/arch/arm/mach-s3c2440/Kconfig
System Type ->ADC common driver            :/arch/arm/plat-s3c24xx/Kconfig
System Type ->Force UART FIFO                 :/arch/arm/plat-s3c/Kconfig
System Type ->S3C2440 Machines             :

Device Drivers->I2C support        : /drivers/i2c/Kconfig
Device Drivers->Watchdog           : /drivers/watchdog/Kconfig
Device Drivers->Block devices      : /drivers/block/Kconfig
File systems->Miscellaneous        : /fs/Kconfig
File systems->Miscellaneous->YAFFS2  :/fs/yaffs2/Kconfig
File systems->Network File Systems     :/fs/Kconfig
File systems->Network File Systems->Root on NFS: /fs/nfs/Kconfig

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息