'x86'에 해당되는 글 2건

  1. 2009.03.31 순대보드 CrossCompile 환경 - 1
  2. 2007.12.17 Windows CE BiosLoader에서 로고 바꾸기!
2009. 3. 31. 20:44

순대보드 CrossCompile 환경 - 1



임베디드 작업은 'Cross Compile(크로스 컴파일)'환경이 갖추어진 상태라야 비로소 제대로 된 작업을 할 수 있다.

근데... '크로스 컴파일' 환경이란 뭐지? -_-

일반적으로 사용하는 데스크톱의 환경을 네이티브 개발환경이라고 한다. 해당하는 플랫폼에서 개발을 하고, 개발을 한 그 플랫폼에서 이런 저런 것들을 실행시키는 환경을 말한다.
쉽게 설명하자면, 리눅스나 윈도우즈가 설치된 데스크톱 기계(x86)에서 어떠한 프로그램을 작성하고, 작성한 프로그램을 동일한 플랫폼(x86)에서 실행시키는 것을 생각하면 될 것이다.

크로스 컴파일환경은 이와는 조금 다르다.
일반적으로 프로그램등을 작성할 때에는 흔히 사용하는 데스크톱(x86) 환경에서 작성을 하게 된다. 하지만 실제 작성한 프로그램 등은 개발한 플랫폼에서 동작하는 것이 아니고, arm 과 같은 별도의 임베디드 기계에서 동작을 하게 된다. 실제 프로그램이 동작해야할 플랫폼에 맞게 컴파일을 해주도록 해주는 녀석을 크로스 컴파일러라고 한다. 그리고 이런 크로스 컴파일을 할 수 있도록 해주는 환경을 크로스 컴파일 환경이라고 한다.

에이.. 그냥 arm 과 같은 임베디드 기계에서 프로그램을 작성하고, 컴파일을 하면 되지 않을까? 라고 생각 할 수도 있지만, 실제 임베디드 기계가 가지고 있는 성는은 데스크톱에 비하면 매우 빈약하다. 좀더 효과적인 작업을 하기 위해 성능이 좋은 데스크톱을 빌려 작업을 한다라고 생각하면 편할 듯 하다.

사실.. 본인도 잘 모른다. 그냥 그런 것 같다 ㅎㅎ

서론이 길긴 했는데.. 그럼 일단 순대보드(AHAV9302)의 크로스 컴파일을 위한 환경을 만들어 보려 한다. 크로스 컴파일을 위한 전용 디렉토리를 만들고, 몇 가지의 환경변수를 등록할 것이다.
'당근이의 AVR 갖구 놀기'에 설명된 대로 따라할 것이다.

리눅스 기계의 /opt 디렉토리로 이동을 하여 다음의 디렉토리들을 생성해 준다.
/opt/arm9sbc                                   
/opt/arm9sbc/ahav
/opt/arm9sbc/ahav/backup           => 포팅할 패키지들과 패치들을 보관하는 곳.
/opt/arm9sbc/ahav/build               => 컴파일 시 사용할 임시 디렉토리.
/opt/arm9sbc/ahav/host               => 컴파일 시 필요한 헤더와 명령어들을 임시로 보관하는 곳.
/opt/arm9sbc/ahav/images           => 램디스크 이미지를 생성하는 곳.
/opt/arm9sbc/ahav/kernel            => 커널 컴파일을 하는 곳.
/opt/arm9sbc/ahav/kernel/.post   => 후기 작업을 위해서 필요한 곳...??
/opt/arm9sbc/ahav/nfs                  => NFS를 사용할 경우에 사용.

/opt 디렉토리로 이동 한 후 아래와 같이 입력을 한다.
$ sudo mkdir arm9sbc
[sudo] password for ID :
$ sudo chown ID:users arm9sbc

위와 같이 해주는 것으로 생성한 arm9sbc는 root 계정이 아닌 일반 사용자 계정으로 사용을 할 수 가 있다. 
ID는 사용자가 접속시 사용하였던 ID가 된다.
참고로.. 이것은 ubuntu 리눅스에서만.. 이런식으로 사용한다.

mkdir 명령을 사용하여 위의 디렉토리들을 생성해 준다.
$ mkdir arm9sbc/ahav
$ mkdir arm9sbc/ahav/backup
...
$ mkdir arm9sbc/ahav/nfs

/opt/arm9sbc/ahav에 환경변수를 설정한다.
$ cd /opt/arm9sbc/ahav
$ vi .initrc-ahav
export PATH=/usr/local/arm/4.1.1-920t/bin:/usr/local/arm/3.2.1-elf/bin:${PATH}
export AHAV_PROJECT_NAME="AHAV9302"
export AHAV_BASE_DIR=/opt/arm9sbc/ahav
export AHAV_BACKUP_DIR=${AHAV_BASE_DIR}/backup
export AHAV_BUILD_DIR=${AHAV_BASE_DIR}/build
export AHAV_HOST_DIR=${AHAV_BASE_DIR}/host
export AHAV_IMAGES_DIR=${AHAV_BASE_DIR}/images
export AHAV_ROOT_DIR=${AHAV_IMAGES_DIR}/root
export AHAV_KERNEL_DIR=${AHAV_BASE_DIR}/kernel
export AHAV_KERNEL_VER="2.6.22.8"
export AHAV_NFS_DIR=${AHAV_BASE_DIR}/nfs

$ chmod 750 .initrc-ahav

$ . .initrc-ahav

여기까지 진행을 하면, 크로스 컴파일 환경을 위한 사전 작업을 마친 것이다.
사전 작업이라고 해봤자... 크로스 컴파일러를 설치할 경로 정도를 설정해 준 것이긴 하지만... -_-

다음 시간에 나머지 작업을 진행해야지...... 슬슬 귀찮아지는데... ㅜ


'혼자서 놀기... > 순대보드(AHAV9302)' 카테고리의 다른 글

순대보드 u-boot - 2  (0) 2009.08.11
순대보드 u-boot - 1  (4) 2009.04.02
순대보드 CrossCompile 환경 - 2  (0) 2009.04.01
순대보드 사전 작업??  (0) 2009.03.30
순대보드 - AHAV9302  (2) 2009.03.27
2007. 12. 17. 11:26

Windows CE BiosLoader에서 로고 바꾸기!



X86의 경우 Windows CE 부팅을 하기 위해서 Bios Loader라는 것을 사용을 한다.

BIOS LOADER를 이용해서 부팅을 해보면.. NK.bin의 로딩 중에 아래와 같이 검은 바탕화면에 Windows CE라는 로고가 나오는 것을 확인할 수가 있다.

사용자 삽입 이미지
X86의 BIOS LOADER

위  화면에서 WindowsCE라는 로고는 splash.bmx라는 파일 형식으로 되어 있고, BIOS LOADER동작시 .bmx파일을 읽어와서 화면에 뿌려주는 것이다.

C:\WINCE600\PLATFORM\CEPC\SRC\BOOTLOADER\BIOSLOADER\DISKIMAGES\BOOTDISK가 바로 splash.bmx라는 파일이 있는 위치이다.
다른 로고를 위해서는 splash.bmx 파일을 삭제하고, 변경하려는 로고를 splash.bmx라는 이름으로 첨부하면 된다. .bmp파일을 이용하여도 되지만... 용량의 압박이... ㅡㅡ;

.bmx라는 파일은 Platform Builder에서 제송하는 bincompress.exe라는 프로그램을 사용하면 된다.
bincompress.exe의 위치는 C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386이고, 사용법은 다음과 같다.
bincompress [옵션(/C, /D)] 원본파일 적용할 파일
/C : 원본파일(.bmp)를 적용할 파일(.bmx)로 압축한다.
/D : 원본파일(.bmx)를 적용할 파일(.bmp)로 압축을 해제한다.
ex)
C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386>bincompress /D
C:\WINCE600\PLATFORM\CEPC\SRC\BOOTLOADER\BIOSLOADER\DISKIMAGES\
BOOTDISK\splash.bmx todayis.bmp
Decompressing:100%
Input file size :4582 bytes
Output file size : 10678 bytes

C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386>

위의 예를 따라하게 되면 다음처럼 .bmx를 .bmp로 변경한 파일을 확인할 수 있다.
사용자 삽입 이미지

반대로 BIOS LOADER의 부팅시 화면을 바꾸려면, "/C"옵션을 사용해 원하는 .bmp이미지를 .bmx로 바꾸어주면 된다.