uboot和linux机器码说明 2012…
2013-05-07 20:14
309 查看
uboot和linux机器码说明 2012-02-07
09:06:41
分类: LINUX
这篇文章从网上down下来的,不知道原作者是谁了,不想侵权,就是贴出来给像我一样的菜鸟一些帮助,在此感谢原作者,希望原作者看到可以留言,如果您感觉侵权我会将帖子删除。
uboot和linux机器码说明
启动u-boot后,用bootm命令来引导内核(执行bootm
0x30008000),但是执行后,卡住了,无法启动内核,现象如下:
Starting kernel ...
Uncompressing
Linux.............................................................
Error: unrecognized/unsupported
machine ID (r1 = 0x000000c1).
Available machine
support:
ID (hex) NAME
000000** ****
从这里的提示信息可知,是u-boot的机器码和linux的不相同造成的,u-boot是0x000000c1(193),内核是0x000000**。大多数都是修改的linux内核的机器码,让它们一致即可。
先看u-boot的机器码和linux的机器码是在什么地方决定的。
1、u-boot的机器码是在u-boot的board/fs2410/fs2410.c文件里决定的:
gd->bd->bi_arch_number =
MACH_TYPE_SMDK2410;
参照查看u-boot的include/asm-arm/mach-types.h文件,有:
#define MACH_TYPE_SMDK2410
193
这就是我们上面看到r1 =
0x000000c1(193)的原因。
2、而linux内核的机器码是由arch/arm/mach-s3c2410/mach-smdk2410.c下面的MACHINE_START(SMDK2410,
"SMDK2440")中的第一个参数SMDK2410(关键字)决定的:
MACHINE_START(SMDK2410,
"SMDK2410")
.phys_io =
S3C2410_PA_UART,
.io_pg_offst =
(((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
.boot_params = S3C2410_SDRAM_PA
+ 0x100,
.map_io =
smdk2410_map_io,
.init_irq =
s3c24xx_init_irq,
.init_machine =
smdk2410_init,
.timer =
&s3c24xx_timer,
MACHINE_END
参照查看内核目录下的arch/arm/tools/mach-types.h文件,有:
smdk2410 ARCH_SMDK2410 SMDK2410
193
只要保持两个文件(u-boot的board/fs2410/fs2410.c与linux内核的arch/arm/mach-s3c2410/mach-smdk2410.c)参照对象的码值一样就可以了!
09:06:41
分类: LINUX
这篇文章从网上down下来的,不知道原作者是谁了,不想侵权,就是贴出来给像我一样的菜鸟一些帮助,在此感谢原作者,希望原作者看到可以留言,如果您感觉侵权我会将帖子删除。
uboot和linux机器码说明
启动u-boot后,用bootm命令来引导内核(执行bootm
0x30008000),但是执行后,卡住了,无法启动内核,现象如下:
Starting kernel ...
Uncompressing
Linux.............................................................
Error: unrecognized/unsupported
machine ID (r1 = 0x000000c1).
Available machine
support:
ID (hex) NAME
000000** ****
从这里的提示信息可知,是u-boot的机器码和linux的不相同造成的,u-boot是0x000000c1(193),内核是0x000000**。大多数都是修改的linux内核的机器码,让它们一致即可。
先看u-boot的机器码和linux的机器码是在什么地方决定的。
1、u-boot的机器码是在u-boot的board/fs2410/fs2410.c文件里决定的:
gd->bd->bi_arch_number =
MACH_TYPE_SMDK2410;
参照查看u-boot的include/asm-arm/mach-types.h文件,有:
#define MACH_TYPE_SMDK2410
193
这就是我们上面看到r1 =
0x000000c1(193)的原因。
2、而linux内核的机器码是由arch/arm/mach-s3c2410/mach-smdk2410.c下面的MACHINE_START(SMDK2410,
"SMDK2440")中的第一个参数SMDK2410(关键字)决定的:
MACHINE_START(SMDK2410,
"SMDK2410")
.phys_io =
S3C2410_PA_UART,
.io_pg_offst =
(((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
.boot_params = S3C2410_SDRAM_PA
+ 0x100,
.map_io =
smdk2410_map_io,
.init_irq =
s3c24xx_init_irq,
.init_machine =
smdk2410_init,
.timer =
&s3c24xx_timer,
MACHINE_END
参照查看内核目录下的arch/arm/tools/mach-types.h文件,有:
smdk2410 ARCH_SMDK2410 SMDK2410
193
只要保持两个文件(u-boot的board/fs2410/fs2410.c与linux内核的arch/arm/mach-s3c2410/mach-smdk2410.c)参照对象的码值一样就可以了!
相关文章推荐
- linux 头文件作用 功能说明!!!
- Linux下 fcntl 函数用法说明 (转…
- linux 头文件作用 功能说明!!!
- linux tftp设置 + uboot下tftp下载…
- linux /boot/grub/menu.ls
- Linux-world-2012-January->14(移植uboot-1.3.4到mini2440-256M NAND)
- 2012-Linux->18(使U-BOOT能正确引导LINUX for 1_20 error,but...)->1
- linux /boot/grub/menu.ls
- Linux下 fcntl 函数用法说明 (转…
- Linux USB 鼠标驱动程序详解
- 全面解析Linux profile文件
- Linux PCI驱动模型
- linux 64 参数传递方式
- Linux init详解
- S3C2410 Linux IIS音频设备驱动分…
- Qt/Linux 下的摄像头捕获(Video4L…
- Linux 的启动流程详解
- 制作CDLinux 启动U盘
- linux spi驱动开发学习(三)--…
- arm-linux head.S 源代码分析