Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1882896
  • 博文数量: 496
  • 博客积分: 12043
  • 博客等级: 上将
  • 技术积分: 4778
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-27 14:26
文章分类

全部博文(496)

文章存档

2014年(8)

2013年(4)

2012年(181)

2011年(303)

2010年(3)

分类: 嵌入式

2012-06-29 10:13:48

Error: unrecognized/unsupported machine ID (r1 = 0x33f60264).

解决方法一

========================================================

    Linux内核启动时出现:bad machine ID,原因大致是u-boot传递给内核的machine ID错误,可以手动在内核源代码中添加machine ID.

解决方法:
在u-boot命令行中输入bdinfo
查看板卡信息,我的输出如下:
[ ~ljh@GDLC ]# bdinfo
arch_number = 0x000000C1
env_t       = 0x00000000
boot_params = 0x30000100
DRAM bank   = 0x00000000
-> start    = 0x30000000
-> size     = 0x04000000
ethaddr     = 08:00:3E:26:0A:5B
ip_addr     = 10.1.8.245
baudrate    = 115200 bps


修改内核的arch/arm/kernel/head.S,直接将s3c2410的参数赋给内核
# cd linux-2.6.19
# vi arch/arm/kernel/head.S +72
----------------------------------------------    
70     __INIT
71     .type       stext, %function
72 ENTRY(stext)
   /********* add here *********/
   mov    r0, #0
   mov    r1, #0xc1
   ldr    r2, =0x30000100
   /********* end add *********/

73     msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
74     @ and irqs disable




解决方法二
========================================================
修改u-boot,填写ID;


# vi common/cmd_boot.c
----------------------------------------------
31 #if defined(CONFIG_I386)
32 DECLARE_GLOBAL_DATA_PTR;
33 #endif
====>
31 //#if defined(CONFIG_I386)
32 DECLARE_GLOBAL_DATA_PTR;
33 //#endif
   ...
60 #if !defined(CONFIG_NIOS)
        /************** add here ******************/
        if(argc==2)
            rc = ((ulong (*)(int, char *[]))addr) (0, gd->bd->bi_arch_number);
        else

        /*************** add end *****************/

61         rc = ((ulong (*)(int, char *[]))addr) (--argc, &argv[1]);
62 #else
63     /*
64      * Nios function pointers are address >> 1
65      */
66     rc = ((ulong (*)(int, char *[]))(addr>>1)) (--argc, &argv[1]);
67 #endif
阅读(1218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~