그리 필요하진 않지만 아무생각 없이 넣었다가 컴파일 단계에서 에러가 나서 확인해 보니 BASE_BAUD 가 선언되지 않았다는 오류가 나타났다.

문제의 파일은 커널빌드루트/drivers/char/eagle_uart123.c 파일인데, menuconfig 시 Character Device 의 EAGLE LowLevel UART 1,2,3 Support 의 소스이다.

ADChips 쪽에 문의하여 답변을 받았는데 이 드라이버는 리눅스에서 UART 를 OS 의 제어가 아닌 firmware 에서 다루는 것 처럼 직접 제어하여 사용하기 위한 드라이버라고 한다.

즉, 평소에는 별로 쓸 일이 없는 드라이버.

지금 ADChips(www.adc.co.kr) 홈페이지에 올라와있는 커널 소스가 업데이트 되어있는지는 모르겠지만, 혹시 모르니 eagle_uart123.c 파일 상단부 적당한 위치에 아래 코드를 추가한다.

#define BASE_BAUD (BUS_CLOCK / 16)

이 한줄로 위 에러를 해결할 수 있다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/12/24 14:39 2008/12/24 14:39
Posted by TylorSTYLE™
ADChips EAGLE 에서 사용할 uClinux 빌드 중 나온 오류 메세지이다.

arch/ae32000cnommu/kernel/kernel.o(.text+0x154): In function `doublefault_interrupt':

: undefined reference to `printascii'

arch/ae32000cnommu/kernel/kernel.o(.text+0x178): In function `buserror_interrupt':

: undefined reference to `printascii'

arch/ae32000cnommu/kernel/kernel.o(.text+0x3c70): In function `do_breakpoint_instr':

: undefined reference to `printascii'

drivers/usb/usbdrv.o(.text+0xc93e): In function `.L1103':

: undefined reference to `printascii'

printascii 라는게 뭔가 찾아보니 Kernel Debug Message 를 출력하기 위한 함수란다. (printch, printascii 두가지가 존재한다.)
즉... menuconfig 에서 보았을 때 커널 해킹(Kernel Hacking) 메뉴에 커널 디버깅(Kernel Degugging) 에서 커널 로우레벨 디버깅 함수(Kernel low-level debugging functions) 를 빌드 패키지에 포함시키면 해결 된다.

필요하다면 커널 로우레벨 디버깅 함수(Kernel low-level debugging functions) 체크 시 추가로 나오는 커널 로우레벨 디버깅 메세지를 UART0 에 함께 출력(Kernel low-level debugging messages via UART0) 도 추가하면 UART0 를 통해 디버깅 메세지를 받아볼 수 있다.

제길... 잉베디드 리눅스 쪽 프로젝트 하면서 삽질을 하루도 쉴 날이 없는 것 같다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/12/24 14:29 2008/12/24 14:29
Posted by TylorSTYLE™
일단 환경은 ubuntu(우분투) 리눅스이며, 크로스 컴파일 환경이 모두 세팅되어있는 상태이다.

또 uClinux 소스코드는 2008 년 12 월 23 일 현재 ADChips(www.adc.co.kr)홈페이지에 나와있는 최신 버전이다.

uClinux 커널 config 를 마치고 dep 명령으로 의존성 검사를 하고 make 를 하면 빌드중 오류가 발생한다.

/include/linux/complie.h 에 오류 2 라고 나오는데 Makefile 의 430 번째 라인에서 발생하는 오류였다.

내가 찾은 소스포지의 uClinux(http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/uclinux-h8/uClinux-2.4.x/Makefile?rev=1.14&view=markup) 와 Makefile 내용에 있어서 이 오류가 나는 줄이 약간 틀린데,

이 코드가 ADChips 에서 배포하는 EISC 용 uClinux 이고, 
430: @echo \#define LINUX_COMPILE_HOST \"`hostname | $(uts_truncate) | $(uts_nodomain)`\" >> .ver

이 코드가 위의 소스포지에서 찾은 원본 코드이다.
430: @echo \#define LINUX_COMPILE_HOST \"`hostname | $(uts_truncate)`\" >> .ver

소스포지의 원본코드로 바꾸니 걍 빌드가 완료되어버렸다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/12/23 17:06 2008/12/23 17:06
Posted by TylorSTYLE™

BLOG main image

카테고리

전체 (144)
Freeware (3)
Embedded (27)
신변잡기 (51)
디지털 회로 (2)
Programming (20)
무선 네트워크 (15)
Computer (18)
사용기 (7)

글 보관함

262

181

-35 days

today : 184

Daum 블로거뉴스
믹시