부트로더(Bootloader)란?
이지부트[EZBOOT]
이지 부트 메모리 맵 (NAND-Boot 지원 MCU)
이지 부트 메모리 맵 (NOR-Flash Boot MCU)
이지부트 2.0 지원 사양
이지부트 실행하기
이지부트 명령어
이지부트 2.0 환경 변수
이지부트를 이용한 다운로드
이지부트 2.0 컴파일
새로운 MCU를 위한 Makefile 만들기
부트로더(Bootloader)를 비유하여 말씀드리면 인텔 관련 보드(x86)에서 말하는 BIOS와 리눅스에서 많이 쓰이는 LILO (LInux LOader)를 결합한 것이라고 생각하시면 이해가 쉽습니다.
부트로더에서는 하드웨어에 대한 초기화( cpu speed, 메모리, 인터럽트, UART(시리얼 관련)를 담당하며 리눅스를 부팅 할 수 있게 해주는 로더 기능을 합니다. 또한, Kernel 이미지나 Ram Disk 이미지를 다운로드 하는 기능을 가지고 있습니다. 즉, 호스트상에서 컴파일된 커널이나 Ram Disk 이미지를 시리얼이나 네트웍을 통하여 SDRAM에 저장하며, 이렇게 내려 받은 이미지 파일은 플래쉬 디스크에 저장되며, SDRAM에 존재하는 데이터는 전원이 꺼지게 되면 데이터가 소실되기 때문에 부트로더에는 SDRAM에 있는 이미지를 플래쉬 디스크에 쓸 수 있는 기능을 필수 적으로 갖추고 있습니다.
EZ 보드의 EZBOOT는 아래의 기능을 갖추고 있습니다.
- 도움말 기능
- 메모리 읽고 쓰기
- 특정 번지로 이동
- 커널 로드 및 부팅
- ZMODEM을 이용한 이미지 다운로드 기능
- TFTP를 이용한 이미지 다운로드 기능
- 플래쉬 기록 및 읽기
- 기본 환경 설정
- 커널 전달 파라메터 설정
이지 부트 메모리 맵 (NAND-Boot 지원 MCU)
이지 부트 메모리 맵 (NOR-Flash Boot MCU)
이지부트 2.0이 설치되어 있다면 EZ 보드가 부팅했을 때, 첫 줄에 EZ부트 버전 번호가 출력되며, 오른쪽에 MCU 모델 번호가 출력됩니다.
WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Nov 14 2007
Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K)이지부트 2.0이 지원하는 MCU는 아래와 같습니다.
- S3C2440
- PXA255
- IXP420
- AU1200
- PXA270
- S3C2410
- EP9312
- iMX31
■ 하드웨어 지원사양
- NAND Flash 지원
32MB 이상 플래시, LargeBlock 플래시 지원- NOR Boot Flash 지원
- Ethernet 지원
CS8900, SMSC91111, AX88796B, MCU 내장 이더넷■ 소프트웨어 지원사양
- Serial ZModem, XModem 지원
- Ethernet tftp 지원
- Flash NAND, NOR 쓰기/읽기 지원
타겟보드에 전원을 인가 한 후에 리눅스의 minicom 또는 Microsoft Windows(이하 MS윈도우)의 터미널을 실행 시킨 상태에서 출력되는 초기화면은 아래와 같습니다.
NAND-Flash 부팅을 지원하는 EZ-보드의 초기화면으로 EZ-PXA270의 초기화면입니다.
WELCOME EZBOOT V2.2.49 (FALINUX Co.,Ltd) ..........PXA270(EZ-PXA270) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify May 27 2008 Detect ES29LV400_B Flash : vid=4A pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar] <-- 스페이스 바를 누릅니다. AX88796B MAC : [ 00 FA 01 A2 13 04 ] AX88796B_Init : OK! EZBOOT>NOR-Flash 부팅을 지원하는 EZ-보드의 초기화면으로 EZ-AU1200 보드의 초기화면입니다.
1235 WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........AU1250(EZ-AU1250) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Apr 18 2008 Detect EON29LV400_B Flash : vid=7F pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 128M 3.3V 8 bit Flash : vid=EC pid=F1 SIZE 128-Mbytes (page=2048, block=128K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar]... <-- 스페이스 바를 누릅니다. AX88796B MAC : [ 00 FA 01 A2 33 15 ] AX88796B_Init : OK! EZBOOT>NAND-Flash 부팅을 지원하는 EZ-보드의 초기화면으로 EZ-S3C2440의 초기화면입니다.
0123B WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Nov 14 2007 Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].. <-- 스페이스 바를 누릅니다. AX88796B MAC : [ 00 FA 01 A2 13 04 ] AX88796B_Init : OK! EZBOOT>NOR-Flash 부팅을 지원하는 EZ-보드의 초기화면으로 ESP-CX 보드의 초기화면입니다.
WELCOME EZBOOT V2.2.42 (FALINUX Co.,Ltd) ..........ESP-CX Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Sep 1`9 2007 Detect EON29LV400_B Flash : vid=7f pid=22BA SIZE 4-Mbytes [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76
SIZE 64-Mbyte (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].. <-- 스페이스 바를 누릅니다. SMC91111 Init ........ Mac Address : [00 FA 07 78 55 04] Revision = 0x3391 phy caps = 7809 phy advertised caps = 1e1 EZBOOT>위의 화면에서 보듯이 BOOT-MENU 메시지가 출력되면 [스페이스바]를 눌러 부트 메뉴로 들어 갑니다.
Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].. <-- 스페이스 바를 누릅니다.이 메시지에서 [엔터키]를 누르거나 설정된 시간(기본3초)이 지나면 리눅스 커널이 실행됩니다.
■ 명령어의 특징
명령어는 대소문자를 가리지 않으며, 긴 이름의 명령어에 대해 3자 이하의 약어 사용이 가능합니다. 간략한 명령어를 위해 따로 환경파일이 존재하며 이곳에서 필요한 파일이름과 IP 등을 수정, 저장하여 사용합니다.
■ 명령어 형식
설명의 편의를 위해 명령은 대문자로 표시하지만 실제 처리는 대소문자를 가리지 않습니다. [ / / ]로 표현한 것은 내용 중 하나를 선택하여야 한다는 것을 나타내며, 명령뒤에 주는 수치는 기본적으로 10진수이며, 0x 접두사를 가진 숫자는 16진수입니다.
예 ) 12345 : 십진수
0x12345 : 16 진수
- HELP or ?
도움말을 출력합니다.
EZBOOT> HELP
EZBOOT> HELP 명령어
0123B WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Nov 14 2007 Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar]. AX88796B MAC : [ 00 FA 01 A2 13 04 ] AX88796B_Init : OK! EZBOOT>help Memory dump : MD, MWB, MWW, MWL, ND Download by ZModem : ZFB, ZFK, ZFR, ZMK, ZMR, ZF, ZM Download by TFTP : TFB, TFK, TFR, TMK, TMR, TF, TM Copy : MFK, MFR, FMK, FMR Erase Partition : EFK, EFR, EFA, EFC, EFL Network : ARP, PING System : RST, GK, GO Repeat Command : R Confiruation : SET More Help : HELP [cmd] EZBOOT>
위에 보이는 것은 명령어 목록이며 자세한 도움말을 보려면 아래의 형식으로 입력합니다.
EZBOOT> HELP 명령어
■ 명령어
아래는 EZBOOT에서 지원하는 명령어 입니다.
- MD [start-address] [count]
메모리나 플래시의 내용을 읽어서 출력합니다.
명령 설명 MD 16 DWORD 읽고 주소를 16증가 시킨다. MD start-addr 16 DWORD 읽고 넘겨진 주소를 16증가 시킨다. MD start-addr count count 만큼 읽고 넘겨진 주소를 count 만큼 증가 시킨다. - MWB [address] [value], MWW [address] [value], MWL [address] [value]
메모리에 값을 입력합니다. [B/W/L] : Byte/Word/Long
명령 설명 MWL?0xA0100000 0x88 주소 0xA0100000에 Long 0x88을 쓴다. MWB 0xA0120000 10 주소 0xA0120000에 Byte 0x0A를 쓴다. - RST
소프트웨어적으로 프로그램을 리셋합니다.- GK
커널을 실행합니다. 이 명령이 실행되기 전에 램의 커널영역에 커널이미지가 존재해야 합니다.- GO [sdram-addr]
주어진 주소로 프로그램카운트가 이동합니다. TM, ZM 명령으로 특정주소로 필요한 이미지를 받은 후 이 명령을 실행하여 테스트 합니다.- PING [ddd.ddd.ddd.ddd]
ping 명령을 실행합니다.- ARP
Host 의 MAC 주소를 구하며, 환경설정에서 필요한 Host IP 가 설정되어 있어야 합니다.- FMK
압축된 커널이 위치하는 예약된 플래시의 공간에서 예약된 메모리의 커널 공간으로 복사합니다.- FMR
압축된 램디스크가 위치하는 예약된 플래시의 공간에서 예약된 램디스크의 커널 공간으로 복사합니다.- MFK
압축된 커널이 위치하는 예약된 메모리의 공간에서 예약된 플래시의 커널 공간으로 복사합니다.- MFR
압축된 램디스크가 위치하는 예약된 램디스크의 공간에서 예약된 플래시의 커널 공간으로 복사합니다.- ZFB
부트로더를 받을 때 사용하며, 씨리얼 Z-모뎀프로토콜로 파일을 다운로드 받은 후 플래시의 0x0000 번지에 데이터를 저장합니다.- ZFK
커널 이미지를 받을 때 사용하며, 씨리얼 Z-모뎀프로토콜로 파일을 다운로드 받은 후 플래시의 예약된 주소로 데이터를 저장합니다.- ZFR
램디스크 이미지를 받을 때 사용하며, 씨리얼 Z-모뎀프로토콜로 파일을 다운로드 받은 후 플래시의 예약된 주소에 데이터를 저장합니다.- ZF [flash-addr]
이 기능은 NOR 플래시 사용 시 제작된 옵션으로 현재는 지원하지 않습니다.- ZMK
커널 이미지를 받을 때 사용하며, 씨리얼 Z-모뎀프로토콜로 파일을 다운로드 받은 후 메모리의 예약된 주소에 데이터를 저장합니다.- ZMR
램디스크 이미지를 받을 때 사용하며, 씨리얼 Z-모뎀프로토콜로 파일을 다운로드 받은 후 메모리의 예약된 주소에 데이터를 저장합니다.- ZM [sdram-addr]
씨리얼 Z-모뎀프로토콜로 파일을 다운로드 받은 후 메모리의 특정주소에 원하는 파일을 저장합니다.- TFB
부트로더를 받을 때 사용하며, 이더넷 tftp 프로토콜로 파일을 다운로드 받은 후 플래시의 예약된 주소에 데이터를 저장합니다. 환경변수에 저장된 [boot loader file name] 을 참고하여 받아 옵니다.- TFK
커널 이미지를 받을 때 사용하며, 이더넷 tftp 프로토콜로 파일을 다운로드 받은 후 플래시의 예약된 주소에 데이터를 저장합니다. 환경변수에 저장된 [zImage file name] 을 참고하여 받아 옵니다.- TFR
램디스크 이미지를 받을 때 사용하며, 이더넷 tftp 프로토콜로 파일을 다운로드 받은 후 플래시의 예약된 주소에 데이터를 저장합니다. 환경변수에 저장된 [ramdisk file name] 을 참고하여 받아 옵니다.- TF [flash-addr] [file]
이 기능은 NOR 플래시 사용 시 제작된 옵션으로 현재는 지원하지 않습니다.- TMK
커널 이미지를 받을 때 사용하며, 이더넷 tftp 프로토콜로 파일을 다운로드 받은 후 메모리의 예약된 주소에 데이터를 저장합니다. 환경변수에 저장된 [zImage file name] 을 참고하여 받아 옵니다.- TMR
램디스크 이미지를 받을 때 사용하며, 이더넷 tftp 프로토콜로 파일을 다운로드 받은 후 메모리의 예약된 주소에 데이터를 저장합니다. 환경변수에 저장된 [ramdisk file name] 을 참고하여 받아 옵니다.- TM [sdram-addr] [file]
이더넷 tftp 프로토콜로 파일을 다운로드 받은 후 메모리의 특정주소에 원하는 파일을 저장합니다.- EFK
Nand-Flash 의 예약된 커널 파티션을 지웁니다.- EFR
Nand-Flash 의 예약된 램디스크 파티션을 지웁니다.- EFA
Nand-Flash 의 예약된 어플리케이션 파티션을 지웁니다.- EFC
Nand-Flash 의 예약된 환경영역 파티션을 지웁니다.- EFL
Nand-Flash 의 예약된 로고영역 파티션을 지웁니다.- SET
환경설정모드로 들어간다.
이지부트 프롬프트 상태에서 SET 을 입력하여 환경설정메뉴를 실행할 수 있습니다.
EZBOOT>set ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.55 6) zImage file name : zImage.ez-s3c2440 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.s3c2440 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3007 14) nand part (B,C,L,K,R,A): 1,1,0,3,5,54 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288 18) KCMD 3 : console=ttySAC2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >>사각영역의 프롬프트에서 수정하려는 메뉴의 번호등을 입력하고 엔터를 치면 값을 수정할 수 있습니다. 이 사용설명서가 쓰여지는 시점에서는 위와 같이 21개의 주 메뉴와 6개의 부가메뉴로 구성 되어 있지만 버전이 올라가면서 메뉴가 추가 되거나 삭제 될 수 있습니다.
- 1) MAC address [00:FA:01:A2:13:04]
타겟보드의 MAC Address를 설정합니다. 현재의 값은 임의로 만든 값이므로 유일한 값이 아닙니다. 외부로 보여진다면 이 값을 타켓보드가 속한 네트웍 망에서 유일한 값으로 설정합니다. 또한 같은 로컬 랜에서도 이 값은 유일해야 하므로 만일 보드를 여러 장 사용하고 있다면 각각의 보드마다 다른 값으로 설정합니다.
임의의 값으로 수정할 때 처음 한바이트 주소에서 D6 비트는 0으로 설정되어야 합니다. 이를 위해 불가피한 상황이 아니라면 처음 한바이트는 00 으로 설정합니다.
! Falinux 가 배포한 커널을 사용한다면 설정된 MAC 주소는 커널로 부팅 후 타겟보드 이더넷의 MAC 주소가 됩니다. 만일 이더넷 포트가 2개이상이라면 두번째 이더넷카드의 MAC 주소는 첫번째 카드의 MAC 주소보다 1 증가된 값으로 설정됩니다.
- 2) local ip [192.168.10.183]
타겟보드가 사용할 IP를 설정합니다.
! Falinux 가 배포한 램디스크를 사용한다면 설정된 IP 는 커널로 부팅 후 타겟보드의 IP 가 됩니다. (램디스크 /etc/rc.d/rc.local 참조)
- 3) local netmask [255.255.255.0]
타겟보드가 속하는 네트웍의 영역을 설정하며, 부트로더에서는 참조하지 않습니다.
! Falinux 가 배포한 램디스크를 사용한다면 설정된 netmask 는 커널로 부팅 후 타겟보드의 netmask 가 됩니다. (램디스크 /etc/rc.d/rc.local 참조)
- 4) local gateway [192.168.10.1]
타겟보드가 속하는 네트웍의 영역에서 외부 네트웍을 연결하는 IP를 설정합니다. 부트로더에서는 참조하지 않습니다.
! Falinux 가 배포한 램디스크를 사용한다면 설정된 gateway 는 커널로 부팅 후 타겟보드의 gateway 가 됩니다. (램디스크 /etc/rc.d/rc.local 참조)
- 5) Server ip [192.168.10.27]
타겟보드가 tftp 로 접속할 서버의 IP를 설정합니다.
! Falinux 가 배포한 램디스크를 사용한다면 설정된 IP 는 램디스크안의 /root/nfsmnt 스크립트 파일에서 nfs 로 접속할 서버의 IP 가 됩니다.
- 6) zImage file name [zImage]
tftp에서 사용되며 서버의 /tftpboot 디렉토리에 있는 커널 이미지의 파일이름을 설정합니다.
- 7) ram disk file name [ramdisk-1.01-12M.gz]
tftp에서 사용되며 서버의 /tftpboot 디렉토리에 있는 램디스크의 파일이름을 설정합니다.
- 8) boot loader file name [ezboot]
tftp에서 사용되며 서버의 /tftpboot 디렉토리에 있는 부트로더 파일이름을 설정합니다.
- 9) logo image file name [ ]
tftp에서 사용되며 서버의 /tftpboot 디렉토리에 있는 bmp 파일이름을 설정합니다.
- 10) Auto execute full name [ ]
커널의 부팅이 끝난 후 자동으로 실행시켜줄 실행파일이나 스크립트를 full-path 로 지정합니다.
! Falinux 가 배포한 램디스크를 사용할 경우만 해당합니다.
- 11) Autoboot wait seconds [3]
리셋 시 위의 시간이 흐를 때 까지 [SAPACE] Key 가 입력되지 않으면 커널을 로딩합니다.
- 12) Copy Ramdisk [Y/N] [Y ]
커널을 실행시키기 위해 메모리에 복사한 후 램디스크도 메모리에 복사하는가에 대한 유무를 설정합니다. 커널 진입 시 root 를 플래시로 설정하였다면 [N] 을 입력하여 좀더 빠른 커널실행을 구현할 수 있습니다.
- 13) arm kernel arch number [1310]
ARM Core 일경우 커널에 전달될 아키텍쳐 번호이며, 그외의 코아에서는 사용되지 않습니다.
- 14) Nand part (B,C,L,K,R,A) [1,1,0,3,5,54]
타겟보드의 NAND 파티션들의 크기를 MByte 단위로 수정합니다. (B,C,L,K,R,A) 는 각각 BOOT-Loader, Config, Logo, Kernel, Ramdisk, Appilcation(yaffs) 를 지칭합니다. 전체크기의 합은 현재 지원하는 NAND 플래시의 최대 크기를 넘어서는 안됩니다.
NAND 부트를 지원하지 않는 MCU 의 경우 B(boot) 영역의 크기는 0 으로 합니다. 예를 들면 [0,1,0,3,5,55] 이면 NAND 플래시에서 부트코드 영역은 할당되지 않았고 환경영역 1MByte, 로고영역은 0, 커널 3MB, 램디스크 5MB, yaffs 영역 54MB 할당을 나타낸다. 반드시 환경영역은 1MB 이상을 할당하여야 하며 0으로 할당하면 안 됩니다.
! Falinux 가 배포한 커널을 사용한다면 이값들은 NAND 의 파티션 정보로 전달되어 3개의 실제 파티션으로 분할됩니다.
/dev/mtdblock0 : BOOT, Config, Logo
/dev/mtdblock1 : Kernel, Ramdisk
/dev/mtdblock2 : Application (yaffs)
- 15) Watchdog (sec, off=0) [0]
타겟보드가 위치독을 지원한다면 Watchdog 시간을 초단위로 설정합니다. 0일 경우 워치독 사용을 하지 않음을 지정합니다. 워치독이 0 이 아닌 값이면 커널 압축을 풀기전에 활성화 되어 시스템의 이상유무를 감시하게 됩니다. 이때 다시 워치독을 특정시간안에 끄거나 재설정하지 않으면 시스템이 리셋되므로 커널 부팅이 끝난 이후 워치독을 재설정하여야 합니다.
워치독의 설정시간은 커널 부팅이 완전히 끝난 후 쉘이 실행될 시간까지 충분히 고려해 설정하도록 합니다. (10초 이상 권장)
- 16…21) KCMD (Kernel Command Line )
커널을 실행할 때 인자로 넘어가는 명령어 라인입니다. 명령어는 key=value 의 형태를 가지며 옵션이 필요할 경우 key=value,opt1,opt2 처럼 분리합니다. 공백문자는 키의 분리를 의미하며, 아래의 설명은 커널 2.6 이상을 기준으로 합니다.
- mem=64M
타켓보드의 SDRAM 크기를 설정합니다.- initrd=0x30800000,5M
SDRAM 에서 램디스크압축 이미지가 위치한 주소와 압축 이미지의 최대크기를 지정합니다. 램디스크를 사용한다면 반드시 있어야 합니다.- root=/dev/ram0
리눅스 커널이 사용할 root 를 /dev/ram0 로 지정합니다. 램디스크를 사용한다면 반드시 있어야 합니다.- ramdisk=12288
리눅스 커널이 사용할 압축되지 않은 램디스크 크기를 지정합니다. 2진수 개념의 크기를 사용하며 KB단위입니다. 12MB 일경우 12288, 16MB 일 경우 16384 즉 1024*크기입니다.- console=ttySAC2,115200
커널의 메시지 콘솔을 지정합니다.
! Falinux 가 배포한 램디스크를 사용할 경우 이 값은 쉘의 주 콘솔로 사용됩니다.
- noinitrd
램디스크를 사용하지 않습니다.- root=/dev/mtdblock2
리눅스 커널이 사용할 root 를 /dev/mtdblock2 로 지정합니다. mtdblock2 는 플래시의 3번째 파티션을 지정합니다. 이 파티션에는 리눅스 커널이 요구하는 파일들이 존재하여야 합니다.- rootfstype=yaffs
리눅스 커널이 사용할 root의 파일시스템은 yaffs 임을 지정합니다.- L) Load Default
현재의 환경 값들을 기본값으로 초기화 합니다.
- LF) Load KCMD root=flash
KCMD 2 의 값을 다음과 같이 플래시 루트로 변경합니다.
noinitrd root=/dev/mtdblock2 rootfstype=yaffs
- LR) Load KCMD root=flash
KCMD 2 의 값을 다음과 같이 램디스크 루트로 변경합니다.
이때 램디스크의 주소는 특정 MCU 마다 다르게 설정됩니다.
initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288
- S) Save to flash
현재 값을 환경에 적용하며 플래시에도 저장합니다.
- P) Apply & Exit
플래시에 저장하지 않고 현재 환경에만 적용한 후 환경설정 메뉴에서의 작업을 종료합니다.
- Q) Exit
환경설정 메뉴에서의 작업을 종료합니다.
이지부트에서 지원하는 tftp 를 이용하여 커널이미지와 램디스크이미지를 다운로드할 수 있습니다. 이미지 파일을 가지고 있는 서버의 IP와 타겟보드의 IP를 네트웍환경에 맞게 설정합니다. 받아올 커널과 램디스크 파일이름을 이지부트 메뉴의 set 메뉴에서 정확히 설정합니다.
■ EZ-PAX270에서의 커널 이미지와 램디스크 이미지 다운로드
WELCOME EZBOOT V2.2.49 (FALINUX Co.,Ltd) ..........PXA270(EZ-PXA270) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify May 27 2008 Detect ES29LV400_B Flash : vid=4A pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar] AX88796B MAC : [ 00 FA 01 A2 33 15 ] AX88796B_Init : OK! EZBOOT> set <-- set 입력 후 엔터키를 누릅니다. ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.95 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.23 <-- 개발 호스트의 IP를 확인 6) zImage file name : zImage.ez-pxa270 <-- 커널 이미지 파일 이름 확인 7) ram disk file name : ramdisk-1.10-12M.gz <-- 램디스크 이미지 파일 이름 확인 8) boot loader file name : ezboot.ez-pxa270 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3003 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,55 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0xA0800000,5M root=/dev/ram ramdisk=16384 18) KCMD 3 : console=ttyPXA2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit // 개발 호스트 IP 즉, 서버 IP가 틀린 경우 server ip를 변경하는 5 번 메뉴를 선택합니다. Select >> 5 <-- 서버 IP를 개발 호스트의 IP와 맞추기 위해 5 입력 후 엔터키를 누릅니다. 05. server ip : 192.168.10.23 new value : 192.168.10.50 <-- 개발 호트의 IP로 설정한 후 엔터키를 누릅니다. ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.95 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 <-- 서버 IP가 개발 호스트 IP로 설정 6) zImage file name : zImage.ez-pxa270 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.ez-pxa270 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3003 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,55 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0xA0800000,5M root=/dev/ram ramdisk=16384 18) KCMD 3 : console=ttyPXA2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> s <-- s 키를 이용하여 변경된 내용을 반드시 저장합니다. ...write 32768 complete ...verify complete ...Saved ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.95 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 6) zImage file name : zImage.ez-pxa270 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.ez-pxa270 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3003 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,55 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0xA0800000,5M root=/dev/ram ramdisk=16384 18) KCMD 3 : console=ttyPXA2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> q <--- q 로 set 메뉴 밖으로 나갑니다. EZBOOT>tfk <--- tfk 명령으로 개발 호스트로부터 커널 이미지를 내려 받습니다. receive zImage.ez-pxa270 tx ARP rx ARP HOST MAC : 00:0C:29:EB:0B:33 HOST IP : 192.168.10.50 LOCAL IP : 192.168.10.95 option [timeout 120 tsize 1920060] size = 1914880 size = 1920060 ...write 1920060 complete ...verify complete EZBOOT>tfr // 플래시 메모리 영역으로 램디스크 이미지를 전송 받습니다. receive ramdisk-1.10-12M.gz tx ARP rx ARP HOST MAC : 00:0C:29:EB:0B:33 HOST IP : 192.168.10.51 LOCAL IP : 192.168.10.95 option [timeout 120 tsize 4223407] size = 4218880 size = 4223407 ...write 4223407 complete ...verify complete EZBOOT> rst // 보드를 재부팅합니다. System Soft Reset....... EZBOOT>1235 WELCOME EZBOOT V2.2.49 (FALINUX Co.,Ltd) ..........PXA270(EZ-PXA270) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify May 27 2008 Detect ES29LV400_B Flash : vid=4A pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) ... 중 략 ... CPU revision is: 04030201 ...EM-AU1200 Board (pin_func=0x383a8120) (PRId 04030201) @ 492MHZ Determined physical RAM map: memory: 04000000 @ 00000000 (usable) User-defined physical RAM map: memory: 08000000 @ 00000000 (usable) Initial ramdisk at: 0x80800000 (5242880 bytes) Built 1 zonelists. Total pages: 32512 Kernel command line: mem=128M rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384 console=ttyS0,115200 video=au1200fb:panel:11 ip0=192.168.10.160 mac=00:FA:01:A2:33:15 netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.50 nandparts=1,8,119 Primary instruction cache 16kB, physically tagged, 4-way, linesize 32 bytes. Primary data cache 16kB, 4-way, linesize 32 bytes. Synthesized TLB refill handler (17 instructions). ... 중 략 ... yaffs: dev is 32505858 name is "mtdblock2" RAMDISK: Compressed image found at block 0 VFS: Mounted root (ext2 filesystem) readonly. Freeing init memory: 116K INIT: version 2.86 booting INIT: Entering runlevel: 3 yaffs: dev is 32505858 name is "mtdblock2" yaffs: passed flags "" yaffs: Attempting MTD mount on 31.2, "mtdblock2" yaffs: auto selecting yaffs1 Starting system logger: [ OK ] Starting INET services: [ OK ] eth0 Link mode : 100 Mb/s Duplex mode. Welcome to FALinux (www.falinux.com) Linux Kernel 2.6.21-falinux falinux login:■ EZ-AU1200에서의 커널 이미지와 램디스크 이미지 다운로드
1235 WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........AU1250(EZ-AU1250) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Apr 18 2008 Detect EON29LV400_B Flash : vid=7F pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 128M 3.3V 8 bit Flash : vid=EC pid=F1 SIZE 128-Mbytes (page=2048, block=128K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar]... AX88796B MAC : [ 00 FA 01 A2 33 15 ] AX88796B_Init : OK! EZBOOT> set <-- set 입력 후 엔터키를 누릅니다. ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.23 <-- 개발 호스트의 IP를 확인 6) zImage file name : zImage.ez-au1200.product <-- 커널 이미지 파일 이름 확인 7) ram disk file name : ramdisk-1.10-16M-mipsel.gz <-- 램디스크 이미지 파일 이름 확인 8) boot loader file name : ezboot.ez-au1250 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 2007 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,119 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=128M 17) KCMD 2 : rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384 18) KCMD 3 : console=ttyS0,115200 19) KCMD 4 : video=au1200fb:panel:11 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit // 개발 호스트 IP 즉, 서버 IP가 틀린 경우 server ip를 변경하는 5 번 메뉴를 선택합니다. Select >> 5 <-- 서버 IP를 개발 호스트의 IP와 맞추기 위해 5 입력 후 엔터키를 누릅니다. 05. server ip : 192.168.10.23 new value : 192.168.10.50 <-- 개발 호트의 IP로 설정한 후 엔터키를 누릅니다. ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 <-- 서버 IP가 개발 호스트 IP로 설정 6) zImage file name : zImage.ez-au1200.product 7) ram disk file name : ramdisk-1.10-16M-mipsel.gz 8) boot loader file name : ezboot.ez-au1250 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 2007 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,119 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=128M 17) KCMD 2 : rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384 18) KCMD 3 : console=ttyS0,115200 19) KCMD 4 : video=au1200fb:panel:11 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> s <-- s 키를 이용하여 변경된 내용을 반드시 저장합니다. ...write 32768 complete ...verify complete ...Saved ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 6) zImage file name : zImage.ez-au1200.product 7) ram disk file name : ramdisk-1.10-16M-mipsel.gz 8) boot loader file name : ezboot.ez-au1250 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 2007 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,119 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=128M 17) KCMD 2 : rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384 18) KCMD 3 : console=ttyS0,115200 19) KCMD 4 : video=au1200fb:panel:11 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> q <--- q 로 set 메뉴 밖으로 나갑니다. EZBOOT>tfk <--- tfk 명령으로 개발 호스트로부터 커널 이미지를 내려 받습니다. receive zImage.ez-s3c2440 tx ARP rx ARP HOST MAC : 00:0C:29:70:5F:CD HOST IP : 192.168.10.50 LOCAL IP : 192.168.10.183 option [timeout 120 tsize 1868296] size = 1868302 ...write 1868302 complete ...verify complete EZBOOT>tfr // 플래시 메모리 영역으로 램디스크 이미지를 전송 받습니다. receive ramdisk-1.10-12M.gz tx ARP rx ARP HOST MAC : 00:0C:29:27:1D:60 HOST IP : 192.168.10.55 LOCAL IP : 192.168.10.183 option [timeout 120 tsize 4173829] size = 4173898 ...write 4173898 complete ...verify complete EZBOOT> rst // 보드를 재부팅합니다. System Soft Reset....... EZBOOT>1235 WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........AU1250(EZ-AU1200) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Apr 25 2008 Detect EON29LV400_B Flash : vid=7F pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 128M 3.3V 8 bit Flash : vid=EC pid=F1 SIZE 128-Mbytes (page=2048, block=128K) ... 중 략 ... CPU revision is: 04030201 ...EM-AU1200 Board (pin_func=0x383a8120) (PRId 04030201) @ 492MHZ Determined physical RAM map: memory: 04000000 @ 00000000 (usable) User-defined physical RAM map: memory: 08000000 @ 00000000 (usable) Initial ramdisk at: 0x80800000 (5242880 bytes) Built 1 zonelists. Total pages: 32512 Kernel command line: mem=128M rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384 console=ttyS0,115200 video=au1200fb:panel:11 ip0=192.168.10.160 mac=00:FA:01:A2:33:15 netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.50 nandparts=1,8,119 Primary instruction cache 16kB, physically tagged, 4-way, linesize 32 bytes. Primary data cache 16kB, 4-way, linesize 32 bytes. Synthesized TLB refill handler (17 instructions). ... 중 략 ... yaffs: dev is 32505858 name is "mtdblock2" yaffs: passed flags "" yaffs: Attempting MTD mount on 31.2, "mtdblock2" Starting system logger: [ OK ] Starting INET services: [ OK ] eth0 Link mode : 100 Mb/s Duplex mode. Welcome to FALinux (www.falinux.com) Linux Kernel 2.6.21-falinux falinux login:
■ EZ-S3C2440에서의 커널 이미지와 램디스크 이미지 다운로드
0123B WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Nov 14 2007 Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].. <-- 스페이스 바를 누릅니다. AX88796B MAC : [ 00 FA 01 A2 13 04 ] AX88796B_Init : OK! EZBOOT> set <-- set 입력 후 엔터키를 누릅니다. ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.23 <-- 개발 호스트의 IP를 확인합니다. 6) zImage file name : zImage.ez-s3c2440 <-- 커널 이미지 파일 이름을 확인합니다. 7) ram disk file name : ramdisk-1.10-12M.gz <-- 램디스크 이미지 파일 이름을 확인합니다. 8) boot loader file name : ezboot.s3c2440 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3007 14) nand part (B,C,L,K,R,A): 1,1,0,3,5,54 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288 18) KCMD 3 : console=ttySAC2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit // 개발 호스트 IP 즉, 서버 IP가 틀린 경우 server ip를 변경하는 5 번 메뉴를 선택합니다. Select >> 5 <-- 서버 IP를 개발 호스트의 IP와 맞추기 위해 5 입력 후 엔터키를 누릅니다. 05. server ip : 192.168.10.23 new value : 192.168.10.50 <-- 개발 호트의 IP로 설정한 후 엔터키를 누릅니다. ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 <-- 서버 IP가 개발 호스트 IP로 설정되었습니다. 6) zImage file name : zImage.ez-s3c2440 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.s3c2440 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3007 14) nand part (B,C,L,K,R,A): 1,1,0,3,5,54 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288 18) KCMD 3 : console=ttySAC2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> s <-- s 키를 이용하여 변경된 내용을 반드시 저장합니다. ...write 32768 complete ...verify complete ...Saved ^^; 1) mac address : 00:FA:01:A2:13:04 2) local ip : 192.168.10.183 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 6) zImage file name : zImage.ez-s3c2440 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.s3c2440 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 3007 14) nand part (B,C,L,K,R,A): 1,1,0,3,5,54 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288 18) KCMD 3 : console=ttySAC2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> q <--- q 로 set 메뉴에서 빠져 나갑니다. EZBOOT>tfk <--- tfk 명령으로 개발 호스트로부터 커널 이미지를 내려 받습니다. receive zImage.ez-s3c2440 tx ARP rx ARP HOST MAC : 00:0C:29:70:5F:CD HOST IP : 192.168.10.50 LOCAL IP : 192.168.10.183 option [timeout 120 tsize 1868296] size = 1868302 ...write 1868302 complete ...verify complete EZBOOT>tfr // 플래시 메모리 영역으로 램디스크 이미지를 전송 받습니다. receive ramdisk-1.10-12M.gz tx ARP rx ARP HOST MAC : 00:0C:29:27:1D:60 HOST IP : 192.168.10.55 LOCAL IP : 192.168.10.183 option [timeout 120 tsize 4173829] size = 4173898 ...write 4173898 complete ...verify complete EZBOOT> rst // 보드를 재부팅합니다. System Soft Reset....... EZBOOT>0123B WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Nov 14 2007 Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) . Copy Kernel Image ..... Copy Ramdisk Image ..... Starting kernel [MARCH 3007]... kernel command [EZBOOT mem=64M initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288 console=ttySAC2,115200 ip0=192.168.10.183 mac=00:FA:01:A2:13:04 netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.55 nandparts=2,8,54 ]Uncompressing Linux..................................... ... 중 략 ... CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets Built 1 zonelists. Total pages: 16256 Kernel command line: EZBOOT mem=64M initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288 console=ttySAC2,115200 ip0=192.168.10.183 mac=00:FA:01:A2:13:04 netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.55 nandparts=2,8,54 irq: clearing pending status 00000400 irq: clearing subpending status 000000c0 ... 중 략 ... yaffs: Attempting MTD mount on 31.2, "mtdblock2" yaffs: auto selecting yaffs1 yaffs: block 44 is marked bad block 45 is bad yaffs: block 2475 is marked bad block 2476 is bad Starting system logger: [ OK ] Starting INET services: [ OK ] eth0 Link mode : 100 Mb/s Duplex mode. Welcome to FALinux (www.falinux.com) Linux Kernel 2.6.21-falinux falinux login:
ezboot 최근 버전은 (주)FALINUX 자료실>>각 보드별 페이지>>EZ-BOOT를 클릭하시면 내려 받으실 수 있습니다. 내려 받은 압축파일을 적당한 곳에 풀기를 합니다.
압축 풀기를 하면 exboot 디렉토리가 생성되며, 그 디렉토리 안에 아래와 같은 파일이 들어 있습니다.
]# tar zxvf ezboot.tar.gz ]# cd ezboot ]# ls -al 합계 100 drwxrwxrwx 14 nobody nfsnobody 4096 2월 27 17:52 . drwx------ 14 jwjw jwjw 4096 2월 29 11:55 .. drwxrwxrwx 6 nobody nfsnobody 4096 2월 27 18:11 .svn -rwxrwxrwx 1 nobody nfsnobody 1941 2월 27 17:52 Makefile drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 17:52 arch_adm8668 drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 17:52 arch_at91sam9261 drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 17:52 arch_au1200 drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 17:51 arch_ep9312 drwxrwxrwx 5 nobody nfsnobody 4096 2월 27 17:52 arch_ixp420 drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 18:04 arch_pxa255 drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 17:52 arch_pxa270 drwxrwxrwx 4 nobody nfsnobody 4096 2월 27 17:52 arch_s3c2440 -rwxrwxrwx 1 nobody nfsnobody 30 2월 27 17:52 au1200_make.sh -rwxrwxrwx 1 nobody nfsnobody 30 2월 27 17:52 ep9312_make.sh -rwxrwxrwx 1 nobody nfsnobody 55 2월 27 17:52 ez_at91sam9261_make.sh drwxrwxrwx 3 nobody nfsnobody 4096 2월 27 18:04 image drwxrwxrwx 3 nobody nfsnobody 4096 2월 27 17:51 include -rwxrwxrwx 1 nobody nfsnobody 30 2월 27 17:52 ixp420_make.sh drwxrwxrwx 3 nobody nfsnobody 4096 2월 27 18:04 main -rwxrwxrwx 1 nobody nfsnobody 30 2월 27 17:52 pxa255_make.sh -rwxrwxrwx 1 nobody nfsnobody 30 2월 27 17:52 pxa270_make.sh -rwxrwxrwx 1 nobody nfsnobody 31 2월 27 17:52 s3c2440_make.sh -rwxrwxrwx 1 nobody nfsnobody 49 2월 27 17:52 urg100nand_make.sh -rwxrwxrwx 1 nobody nfsnobody 48 2월 27 17:52 urg100nor_make.sh파일의 종류는 아래와 같습니다.
파일 설명 arch_xxx MCU 에 의존적인 .c .h .S 파일 (start.S 등) main 공통으로 사용하는 .c 파일 include 공통으로 사용하는 .h 파일 image 최종으로 생성된 부트로더 이미지 파일
■ EZ-PXA270 ezboot 컴파일 및 이미지 파일 구하기
// 파일 목록에서 녹색으로 표시한 ****_make.sh 스크립트 파일은 EZ 보드별로 // 컴파일 작업을 바로 할 수 있도록 준비된 스크립트 파일입니다. // 즉, 이 EZ-PXA270 용 부트로더를 새로 컴파일하여 이미지 파일을 생성해야 한다면, ]# ./au1250_make.sh distclean // 이전 작업의 내용을 삭제합니다. ]# ./au1250_make.sh // 부트로더를 새로 make 합니다. for i in arch_pxa270/start main ; do make -C $i || exit ; done make[1]: Entering directory `/tmp/temp/ezboot/arch_pxa270/start' Assembler compiling start.S ... arm-linux-gcc -c -nostdinc -I/tmp/temp/ezboot/include -I/tmp/temp/ezboot/arch_pxa270 -I. -DBOARD_EZ_PXA270 -DARCH_PXA270 -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mapcs-32 -fno-zero-initialized-in-bss -mcpu=xscale -malignment-traps -msoft-float -fno-builtin -D__ASSEMBLY__ -o start.o start.S .... 중략 .... 1024 bytes (1.0 kB) copied, 5.5589e-05 seconds, 18.4 MB/s dd if=main/main_org of=image/ezboot.ez-pxa270 bs=1k seek=4 52+1 records in 52+1 records out 54212 bytes (54 kB) copied, 0.00103372 seconds, 52.4 MB/s chmod 777 image/ezboot.ez-pxa270 ]# // 정상적으로 컴파일이 되었다면 에러 없이 생성된 이미지 이름이 출력됩니다. // 녹색 부분으로 표시한 image/ezboot.ez-au1250 이 생성된 이미지 파일입니다. ]# cd image ]# ls -al 합계 136
drwxr-xr-x 2 root root 4096 6월 19:09 .
drwxr-xr-x 9 root root 4096 5월 14:03 .. -rwxrwxrwx 1 root root 58308 6월 19:09 ezboot.ez-pxa27 ]# // 만들어진 이미지를 [16장 EZFLashW / EZFlash] 글을 참고하여 타겟보드로 전송하시면 됩니다.■ EZ-AU1200 ezboot 컴파일 및 이미지 파일 구하기
// 파일 목록에서 녹색으로 표시한 ****_make.sh 스크립트 파일은 EZ 보드별로 // 컴파일 작업을 바로 할 수 있도록 준비된 스크립트 파일입니다. // 즉, 이 EZ-AU1200 용 부트로더를 새로 컴파일하여 이미지 파일을 생성해야 한다면, ]# ./au1250_make.sh distclean // 이전 작업의 내용을 삭제합니다. ]# ./au1250_make.sh // 부트로더를 새로 make 합니다. for i in arch_au1250/start main ; do make -C $i || exit ; done make[1]: Entering directory `/tmp/temp/ez-pxa270/ezboot/ezboot/arch_au1250/start' Assembler compiling start.S ... mipsel-linux-gcc -c -nostdinc -I/tmp/temp/ez-pxa270/ezboot/ezboot/include -I/tmp/temp/ez-pxa270/ezboot/ezboot/arch_au1250 -I. -DBOARD_EZ_AU1250 -DARCH_AU1250 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -Os -fomit-frame-pointer -g -G 0 -mno-abicalls -fno-pic -pipe -mabi=32 -march=mips32 -Wa,-32 -Wa, -march=mips32 -Wa,-mips32 -Wa,--trap -Wdeclaration-after-statement -D__ASSEMBLY__ -o start.o start.S .... 중략 .... 4096 bytes (4.1 kB) copied, 0.000154603 seconds, 26.5 MB/s dd if=main/main_org of=image/ezboot.ez-au1250 bs=1k seek=4 54+1 records in 54+1 records out 56080 bytes (56 kB) copied, 0.000796511 seconds, 70.4 MB/s chmod 777 image/ezboot.ez-au1250 ]# // 정상적으로 컴파일이 되었다면 에러 없이 생성된 이미지 이름이 출력됩니다. // 녹색 부분으로 표시한 image/ezboot.ez-au1250 이 생성된 이미지 파일입니다. ]# cd image ]# ls -al 함계 136
drwxr-xr-x 2 root root 4096 6월 19:09 .
drwxr-xr-x 9 root root 4096 5월 14:03 ..
-rwxrwxrwx 1 root root 60176 6월 19:09 ezboot.ez-au1250
]# // 만들어진 이미지를 [16장 EZFLashW / EZFlash] 글을 참고하여 타겟보드로 전송하시면 됩니다.■ EZ-S3C2440 ezboot 컴파일 및 이미지 파일 구하기
// 파일 목록에서 녹색으로 표시한 ****_make.sh 스크립트 파일은 EZ 보드별로 // 컴파일 작업을 바로 할 수 있도록 준비된 스크립트 파일입니다. // 즉, 이 EZ-S3C2440 용 부트로더를 새로 컴파일하여 이미지 파일을 생성해야 한다면, ]# ./s3c2440_make.sh distclean // 이전 작업의 내용을 삭제합니다. ]# ./s3c2440_make.sh // 부트로더를 새로 make 합니다. for i in arch_s3c2440/start main ; do make -C $i || exit ; done make[1]: Entering directory `/tmp/temp/ez-pxa270/ezboot/ezboot/arch_s3c2440/start' Assembler compiling start.S ... arm-linux-gcc -c -nostdinc -I/tmp/temp/ez-pxa270/ezboot/ezboot/include -I/tmp/temp/ez-pxa270/ezboot/ezboot/arch_s3c2440 -I. -DBOARD_EZ_S3C2440 -DARCH_S3C2440 -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mapcs-32 -fno-zero-initialized-in-bss -march=armv4 -mtune=arm9tdmi -malignment-traps -msoft-float -fno-builtin -D__ASSEMBLY__ -o start.o start.S Assembler compiling gpio.S ... .... 중략 .... 2+1 records in 3+0 records out 3072 bytes (3.1 kB) copied, 9.403e-05 seconds, 32.7 MB/s dd if=main/main_org of=image/ezboot.ez-s3c2440 bs=1k seek=4 51+1 records in 51+1 records out 52952 bytes (53 kB) copied, 0.000468711 seconds, 113 MB/s chmod 777 image/ezboot.ez-s3c2440 ]# // 정상적으로 컴파일이 되었다면 에러 없이 생성된 이미지 이름이 출력됩니다. // 녹색 부분으로 표시한 image/ezboot.ez-s3c2440가 생성된 이미지 파일입니다. ]# cd image ]# ls -al 합계 68
drwxrwxrwx 2 nobody nfsnobody 4096 2월 29 21:34 . drwxrwxrwx 14 nobody nfsnobody 4096 2월 29 21:33 .. -rwxrwxrwx 1 root root 57048 2월 29 21:34 ezboot.ez-s3c2440 -rwxrwxrwx 1 root root 60276 ]# // 만들어진 이미지를 [16장 EZFLashW / EZFlash] 글을 참고하여 타겟보드로 전송하시면 됩니다.
새롭게 MCU 를 지원한다면 arch_xxx 디렉토리의 내용을 작성하여야 합니다.
파일 설명 arch_xxx/board_config.c 하드웨어에 종속적인 함수들 arch_xxx/irq.c 하드웨어에 종속적인 IRQ관련 함수들 arch_xxx/timer.c 하드웨어에 종속적인 타이머 관련 함수들 arch_xxx/console.c 하드웨어에 종속적인 시리얼 관련 함수들 ezboot가 지원하는 기존의 MCU 들을 컴파일 하기 위해서 최상단의 Makefile 을 MCU 에 맞게 수정한 후 arch_xxxx/makefile_config 에서 특정보드 이름을 지정합니다.
ezboot]# vi Makefile ezboot]# vi arch_xxx/makefile_config ezboot]# make clean ezboot]# make dep ezboot]# make만일 특정보드의 이름으로 배포된 ezboot 이면 Makefile 이 보드에 맞게 변경되어 배포되므로 Makefile 을 수정하지 않아도 됩니다.
- Makefile 수정위치
# # ezboot 메이크 화일 # # 이 메이크 화일은 등록된 디렉토리에 있는 모든 것을 make 수행한다. # # # 이 화일에 선언된 모든 변수를 서브 메이크 화일에서 사용할수 있게 한다. # .EXPORT_ALL_VARIABLES: # ----------------------------------------------------- # 다음 옵션을 수정하여 컴파일 대상과 아키텍쳐를 고른다. # 아래와 같이 실행한다. # ex1> MCU=pxa255 make clean # ex2> MCU=pxa255 make dep # ex3> MCU=pxa255 make # #MCU = pxa270 #MCU = pxa255 #MCU = ixp420 #MCU = au1200 #MCU = s3c2440 #MCU = s3c2410 # arch_xxx/makefile_config 에서 정의한다. #BOARD = ez-x5 #BOARD = ez-ixp420 #BOARD = esp-cx #BOARD = esp-ns #BOARD = em-s3c2440 #BOARD = em-au1200 #BOARD = edk-s3c2440 #BOARD = ez-s3c2410 # ----------------------------------------------------- ASM_OBJS = C_OBJS = CFLAGS = -nostdinc $(INCLUDES) .... 중 략 ....
- arch_xxx/makefile_config 수정위치
# # 보드이름 지정 # BOARD = ez-s3c2440 CFLAGS += -DBOARD_EZ_S3C2440 #BOARD = edk-s3c2440 #CFLAGS += -DBOARD_EDK_S3C2440 # # 크로스 컴파일러 지정 # CROSS = arm-linux- # # 컴파일 옵션 지정 # INCLUDES += -I. CFLAGS += -DARCH_S3C2440 CFLAGS += -Wall -Wstrict-prototypes -Wno-trigraphs -O2 CFLAGS += -fno-strict-aliasing -fno-common -pipe -mapcs-32 -fno-zero-initialized-in-bss CFLAGS += -march=armv4 -mtune=arm9tdmi -malignment-traps -msoft-float -fno-builtin .... 중 략 ....