u-boot的機器碼和linux的一致,才能引導。
linux內核的機器碼,在arch/arm/tools/mach-types.h中,u-boot的機器碼是在u-boot/include/asm-arm/mach-types.h文件中,只要兩者保持一致便可,所以可以任意修改其中之一。
例如:
linux內核源碼中查看機器碼相關文件:
$vim arch/arm/mach-s3c2440/mach-smdk2440.c
178 MACHINE_START(S3C2440 , "SMDK2440")
179 /* Maintainer: Ben Dooks
[email protected] */
180 .phys_io = S3C2410_PA_UART,
181 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
182 .boot_params = S3C2410_SDRAM_PA + 0x100,
183
184 .init_irq = s3c24xx_init_irq,
185 .map_io = smdk2440_map_io,
186 .init_machine = smdk2440_machine_init,
187 .timer = &s3c24xx_timer,
188 MACHINE_END
修改機器碼,使之與bootloader的機器碼相同,這裏使用的是u-boot,機器碼爲168
$vi arch/arm/tools/mach-types
379 s3c2440 ARCH_S3C2440 S3C2440 168 //修改爲168
$vi arch/arm/tools/Makefile
7 include/asm-arm/mach-types.h : $(src)/gen-mach-types $(src)/mach-types
8 @echo ' Generating $@'
9 @mkdir -p $(dir $@) //添加這行(?)
10 $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
$vi include/asm/mach-types.h
375 #define MACH_TYPE_S3C2440 168 //此處不需手動修改 (?)
U-boot中的相關配置文件
$vi include/asm-arm/mach-types.h
377 #define MACH_TYPE_S3C2440 168