리눅스 포팅순서
1. Cross 컴파일 환경 설정
- Cross Complier 압축 파일 구하기
ex) arm-linux-tools.tar.bz2, arm-linux-gcc-3.4.1.tar.bz2
- Cross Complier 설치
i. /usr/local 아래에 arm 디렉터리를 생성한다.
ii. arm-linux-tools.tar.bz2을 /usr/local/arm에 옮기고, 압축을 해제한다. ( tar xvfj arm-linux-tools.tar.bz2 )
iii. /usr/local/arm/3.4.1/bin/arm-linux-gcc를 이용해 cross 컴파일 할 수 있다.
- 환경 변수에 등록하기
. export PATH=/usr/local/arm/3.4.1/bin:$PATH
. .bash_profile 등의 파일에 PATH를 적어두고 환경적용한다. 이때 source명령을 사용할 수 있다.(ex. source ~/.bash_profile)
. 환경 변수에 제대로 등록되었는지 확인하기 위해서 type명령어를 통해서 arm-linux-gcc가 어느 위치에 있는지 확인한다.
ex) type arm-linux-gcc
2. Linux Kernel Source 컴파일
- 커널 소스 압축 파일 구하기 (http://kernel.org 에서...)
ex) linux-2.6.22.1.tar.bz2, linux-2.6.21.15.tar.gz
- 작업할 디렉토리(데스크탑 리눅스를 위한 kernel이라면 /usr/src)에 옮기고, 압축을 해제한다. (tar xvfz linux-2.6.22.1.tar.bz)
- 커널 컴파일시 다음 절차를 따른다.
. make menuconfig (config, xconfig 등도 가능, [make_menuconfig_tip.txt] 설명 파일을 참조.)
. make dep : 커널 소스의 의존성을 체크해 목록을 만든다.
. make clean : 이전에 생성된 object 파일과 이미지 파일 등을 지운다.
. make zImage : 커널 이미지(zImage)를 만든다.
- arch/arm/boot/ 밑에 zImage가 생성된다.
3. 필요에 따라 zImage를 uImage로 변경
- [u-boot에 맞게 zImage를 uImage로 변경하기.txt] 파일 참조.
4. Ramdisk 사용하기
41. Ramdisk Image 압축 풀기
- mkdir ramdisk_dir
- gzip -d ramdisk.gz
- mount -t ext2 -o loop ramdisk ramdisk_dir
4.2. Ramdisk Image 압축하기
- umount ramdisk_dir
- gzip ramdisk
5. Board에 U-BOOT이 올라와 있지 않을 경우 BootLoader (U-Boot) compile
- U-Boot
BootLoader 컴파일은 Boot flash memory 종류에 따라 다르다.
- Nor flash 부팅으로 컴파일 하기.
1. make distclean
2. make rebis_atm322a_config
3. make
6. Trace32-ICD를 이용한 Flash writing
- [메뉴]->[File]->[Open Batchfile]->rebis_flash_atmel.cmm
- rebis_flash_atmel.cmm은 REBIS Board NOR Flash에 실행코드(bin)를 writing 할 때 사용.
- rebis_flash_atmel.cmm을 [Do]하여 'u-boot.bin'을 NOR Flash에 Writing.
7. 정상적으로 실행되는가 확인
- RS-232C 케이블을 연결한 후 T32 JTAG포트를 제거하고 터미널 프로그램을 띄우고 Target전원을 켠다.
. Target의 UART가 여러개 일때는 각각 연결해 보고 맞는 실제 연결된 UART를 찾아야 한다. (REBIS의 경우는 UART0에 연결해야 한다.)
. Terminal Program은 Window에서는 [Tera term], Linux에서는 [minicom]을 추천한다.
. 참고로 minicom을 실행중 도움말이 보고 싶으면 CTRL-A 후에 Z 를 누르면 된다.
- 터미널 프로그램에서 'u-boot.bin'의 동작을 확인한다.
8. Ethernet을 이용한 linux실행 이미지 다운로드
8.1. 부트로더 쉘로 들어가기
- Ethernet 크로스 케이블을 연결한다.
- u-boot가 부팅 중 카운트가 종료되기 전에 Enter를 입력하여 prompt 상태가 되도록 한다.
8.2. uboot의 환경 설정
- print혹은 printenv 명령으로 현재 설정 값을 살펴본다.
- set ipaddr 192.168.0.1 : TARGET 보드의 IP 설정
- set serverip 192.168.0.2 : HOST PC의 IP 설정
- save : 환경 저장
8.3. Host PC의 TFTP설정
- Windows에서는 pumpKIN사용
- pmumpKIN 설정 값
. D:\tftproot
. Give all files
. Always prompt before acception file
8.4. linux 이미지 파일 다운로드 하기
- 미리설정한 D:\tftproot 디렉토리에 만들어 놓은 이미지를 넣어둔다. (zImage, ramdisk)
8.5. LAN케이블 연결을 확인 후 이미지 다운로드
- Kernel Image : zImage
- RamDisk Image : ramdisk
- REBIS 보드 SDRAM 각각 0x32000000, 0x30800000번지에 다운로드
. t 32000000 zImage
. t 30800000 ramdisk
8.6. 확인 후 실행하기
- go 명령으로 리눅스를 부팅하도록 한다.
- go 32000000
참고 1: 위의 8.4. 8.5과정 빨리하기.
- ';'를 활용한다. 즉, 다음과 같이 한줄에 다 명령어를 써놓고
- t 32000000 zImage; t 30800000 ramdisk; go 32000000
- Copy & Paste한다.
- nandw 0 0xea000 0x32000000
- nandw 100 0x2fa000 0x30800000
- set bootcmd nandr 0 ea000 32000000; nandr 100 2fa000 30800000; go 32000000 ; bootcmd 설정