강좌 & 팁
커널 소스 클리어
이제 싸~~악… 소스를 클리어 하는 것이 제일 좋겠죠?
이제 반복적이죠?
기억 나시죠 ? 다음 명령들
[root@localhost linux]# make distclean
예..
이제 소스 쌱~~ 청소 되었습니다.
커널 컴파일 환경 설정 준비
자 이제 이전에 설정된 환경을 찾아 보죠..
어디서요?
linux/arch/arm/configs/
에서요..
일단 이곳에서 PXA255용을 찾아 봅시당.
오호…
pxa255-idp_defconfig 란 이놈이 가장 이름이 비슷하네요
밑져야 본전
이놈을 가지고 시작해 봅시다.
여기서 잠깐!
이전 강좌를 보지 않으신 분들이 가장 먼저 해야 하는 것은
Makefile을 약간 손보아야 합니다.
커널소스 linux\Makefiel 에서 193 라인 쯤에 가면
크로스 컴파일을 위한 처리 부분이 있습니다.
193 ARCH ?= $(SUBARCH)
194 CROSS_COMPILE ?=
이 부분을 arm 용 크로스 컴파일이 될 수 있도록 다음과 같이 고칩니다.
193 ARCH ?= arm
194 CROSS_COMPILE ?= arm-linux-
이 부분에 대한 약간(?)의 설명은 2410 부분의 강좌를 참조해 주세요
2410부터 따라한 분들은 이미 되어 있겠죠?
자 이제 커널 컴파일 옵션 적용을 해 봅시다.
make pxa255-idp_defconfig
pxa255-idp 컴파일 옵션 설정 상태로 만들어 버립니다.
[root@localhost linux]# make pxa255-idp_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/basic/hash
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
[root@localhost linux]#
이쯤 되면 시리얼 출력을 하기 위해서 다음 두 가지를 처리해야 한다는 것을 인식하시겠죠? 1) 시리얼 포트 EZ-X5 의 콘솔용 시리얼 포트는 몇 번일까요? 이지부트 소스를 보면 알 수 있죠.. console=ttyPXA2,115200 그런데 … 삼성 프로세서를 다루는 것과 달리 컴파일 환경 설정 메뉴에서 시리얼 포트 번호를 지정할 수 없습니다. 즉 소스를 패치 해야 한다는 겁니다. 의심스러우시면 S3C2440이나 S3C2410 에서 했던 것처럼 커널 컴파일 환경 설정 메뉴를 따라 가 보시기 바랍니다. 어찌되었든 수정할 소스는 여기 입니다. arch/arm/mach-pxa/include/mach/uncompress.h 아주 심플하게 필요한 소스만 보여 주고 있죠? 소스상에서 보면 static volatile unsigned long *UART = FFUART; 에서 보면 알겠지만 UART0 으로 압축 해제 메시지를 처리 하고 있습니다. 그런데 저희는 UART2 로 해야죠? 이건 이름이 STUART 입니다. 그런데 소스상에 arch_decomp_setup 함수에 비슷하게 있는데 조건 문이 보이죠? 그래서 그냥 다음과 같이 수정해 버립니다.
static inline void arch_decomp_setup(void) 시리얼 포트를 조정했으니 리눅스 소스에 있는 파일에서 찾아 봅시다. linux/arch/arm/tools/mach-types 이중에 IDP 보드죠? pxa_idp ARCH_PXA_IDP PXA_IDP 110 머신 아키텍쳐 번호는 110 번 되겠네요 이 값을 나중에 이지부트에서 설정하면 됩니다. 이제 커널 컴파일을 해야 겠죠?
별 무리 없이 컴파일 될 겁니다. 한가지 흠이라면 약간의 시간이 걸리죠 ㅋㅋ 이제 생성된 zImage 를 tftp 디렉토리에 복사합니다.
[root@localhost linux]# cp arch/arm/boot/zImage /tftpboot/zImage.ez-x5시리얼 출력을 하기 위한 커널 소스 패치
2) 머신 아키텍쳐 번호
아니면 이지부트에서 전달하는 커널 커맨드 console= 에 어떤 포트가 지정되어 있는가를 보면 알 수 있죠..
{
// if (machine_is_littleton())
UART = STUART;
}
정상적으로 부팅이 진행되도록 머신 아키텍쳐 번호를 알아내야 합니다.
커널 컴파일 및 tftp 복사
이지부트 머신 아키텍쳐 번호 수정
부트로더에서 set 명령을 이용하여 아키텍쳐 번호를 110으로 수정합니다.
[A013_020_ezboot_set.png]
S 로 저장하고 Q 로 빠져 나옵니다.
커널 다운 로드 와 부팅
tfk 명령을 통해서 커널 이미지를 다운 받습니다.
[A013_030_kernel_download.png]
rst명령을 사용하여 부팅합니다.
자 어떻게 될까요?
두근 두근…..
[A013_040_kernel_fail.png]
흑흑흑..
도대체 한번에 넘어가는 적이 없군요…
이번엔 또 무슨 문제 일까요?
다음엔 어떻게 하는건가요?