u-boot和linux的机器码问题分析

liweikui 发表于 2009-12-21 14:24:00    
     在<<移植linux 2.6.31到OK2440V3开发板(1)---bootm手动引导>>一文中,执行完第6步的操作后,启动u-boot后,用bootm命令来引导内核(执行bootm 0x30008000),但是执行后,卡住了,无法启动内核,现象如下:

Starting kernel ...                                                            
                                                                               
Uncompressing Linux.............................................................
                                                                               
Error: unrecognized/unsupported machine ID (r1 = 0x000000c1).                  
                                                                               
Available machine support:                                                     
                                                                               
ID (hex)        NAME                                                           
000000a8        SMDK2440

      从这里的提示信息可知,是u-boot的机器码和linux的不相同造成的,u-boot是0x000000c1(193),内核是0x0000016A(362)。网上大多数都是修改的linux内核的机器码,在arch/arm/tools/mach-types.h中,让它们一致,具体修改哪一方,我觉得要看情况而定。

      我们先看u-boot的机器码和linux的机器码是在什么地方决定的(为了搞清这个问题,我找了一天时间,呵呵)。u-boot的机器码是在u-boot的board/samsung/ok2440v3/ok2440v3.c文件里决定的:
    /* arch number of SMDK2410-Board */
    gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;

      查看u-boot/include/asm-arm/mach-types.h文件,有:
      #define MACH_TYPE_SMDK2410        193
      #define MACH_TYPE_S3C2440           362
      这就是我们上面看到r1 = 0x000000c1(193)的原因。

       而linux的机器码是由arch/arm/mach-s3c2440/mach-smdk2440.c下面的MACHINE_START(S3C2440, "SMDK2440")中的第一个参数S3C2440(关键字)决定的:

MACHINE_START(S3C2440, "SMDK2440")
    /* Maintainer: Ben Dooks <ben@fluff.org> */
    .phys_io    = S3C2410_PA_UART,
    .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
    .boot_params    = S3C2410_SDRAM_PA + 0x100,

    .init_irq    = s3c24xx_init_irq,
    .map_io        = smdk2440_map_io,
    .init_machine    = smdk2440_machine_init,
    .timer        = &s3c24xx_timer,
MACHINE_END

     查看内核目录下的arch/arm/tools/mach-types.h文件,有:
smdk2410        ARCH_SMDK2410     
本文来自:我爱研发网(52RD.com) - R&D大本营
详细出处:http://www.52rd.com/Blog/Detail_RD.Blog_liweikui_22426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值