다들 아시는 내용일거라 생각합니다만... 이거라도 적어야 할 것 같아서 적어놓습니다. ;
linux-2.6.21.5-aesop6410-090320/arch/arm/boot/compressed/head.S 를 다음과 같이 수정합니다.
(빨간색으로 표시한 부분 추가)
/*
* linux/arch/arm/boot/compressed/head.S
*
* Copyright (C) 1996-2002 Russell King
* Copyright (C) 2004 Hyok S. Choi (MPU support)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/linkage.h>
#include <asm/mach-types.h>
그리고 아래의 코드를 찾아서 붉은색으로 표시된 코드를 추가합니다. (120번째 줄 근처임)
.section ".start", #alloc, #execinstr
/*
* sort out different calling conventions
*/
.align
start:
.type start,#function
.rept 8
mov r0, r0
.endr
b 1f
.word 0x016f2818 @ Magic numbers to help the loader
.word start @ absolute load/run zImage address
.word _edata @ zImage end address
1: mov r7, r1 @ save architecture ID
mov r8, r2 @ save atags pointer
#ifdef CONFIG_MACH_AESOP6410
mov r7, #(MACH_TYPE_AESOP6410 & 0xff)
orr r7, r7, #(MACH_TYPE_AESOP6410 & 0xff00)
#endif
#ifndef __ARM_ARCH_2__
이렇게 한 뒤 재컴파일하고 실행하면 U-Boot를 교체하지 않더라도 Machine ID가 잘못되었다고 멈추는 문제가 발생하지 않습니다.
P.S 운영진 여러분 보드 제작하시느라 수고 많으셨습니다. 보드는 감사히 잘 쓰겠습니다.
커널단에서 초기에 아키텍쳐 넘버를 확인하지 못하게 하는건가 보네요~