16
- 1 - 부부부부 Bootloader

- 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

Embed Size (px)

Citation preview

Page 1: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 1 -

부트로더Bootloader

Page 2: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 2 -Huins. R&D Center

Bootloader

Bootloader 부트로더

사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

부트로더 존재의 이유 PC 와 달리 CMOS 를 이용할 수 없는 특수한 환경

Achro-4210 부트로더 소스 위치

부트로더 컴파일 소스 준비

크로스 컴파일러 설정

[Achro4210 Disc]/bootloader/u-boot-yymmdd.tar.gz

# mkdir /work# mkdir /work/achro4210# cd /work/achro4210# cp –a /media/[Achro4210 Disc]/bootloader/u-boot-120516.tar.gz /work/achro4210# tar zxvf u-boot-120516.tar.gz# cd u-boot-120516

# vim Makefile

2

Page 3: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 3 -Huins. R&D Center

Bootloader

기존 설정 초기화

컴파일

컴파일 완료

…(중간생략 )…CROSS_COMPILE = /opt/toolchains/arm-2009q1/bin/arm-none-linux-gnueabi-

# make distclean

# make

3

Page 4: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 4 -Huins. R&D Center

Bootloader

Achro-4210 부트로더 퓨징 microSD 메모리의 raw 영역이 지워진 상태에서 부트로더를 퓨징하는 방법

생성된 BL1(u-boot.bin.crc) 를 MicroSD 에 기록

BL2(u-boot.bin) 을 MicroSD 에 기록

# mkbl1 u-boot.bin u-boot.bin.crc 16392

# dd if=u-boot.bin.crc of=/dev/sdb bs=1 seek=512 count=16384

4

# dd if=u-boot.bin of=/dev/sdb bs=1 seek=16896# sync

BL0 (iROM)BL1

(u-boot 의 상위 16K)

BL2 (u-boot.bin)

MicroSD 의 RAW 영역에 위치 CPU 내부에 위치OM

Page 5: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 5 -Huins. R&D Center

Bootloader

SD 메모리 초기화

5

FLASH

RAW AREA

최소요구 사항

Page 6: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 6 -Huins. R&D Center

Bootloader

ACHRO4210 의 Fusing 방법 - DNW

6

FLASH SDRAM

BL2

BL2

MINICOM> DNW 0x4000… Bootloader 컴파일

Kernel 컴파일

Kernel, Bootloader 를/tftpboot 디렉터리로 복사

smdk-usbdl 을 이용하여Usb 를 이용 데이터 전송TERMINAL

# smdk-usbdl –f ..

호스트의 USB 와 타깃의 USB OTG가 연결되어야 함 .

ReceiveData

raw area

Target Board Host Linux

relocate

Page 7: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 7 -Huins. R&D Center

Bootloader

ACHRO4210 의 Fusing 방법 - TFTP

7

FLASH SDRAM

BL2

BL2

MINICOM> TFTP … Bootloader 컴파일

Kernel 컴파일

Kernel, Bootloader 를/tftpboot 디렉터리로 복사

Xinet Demon..Service tftpd

호스트에는 tftpd가 구동 , 네트워크로 연결되어야 함Receive

Dataraw area

Target Board Host Linux

relocate

Page 8: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 8 -Huins. R&D Center

Bootloader

부트로더 기록 미니컴 실행

시리얼과 USB OTG 케이블 연결

# minicom

8

Page 9: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 9 -Huins. R&D Center

Bootloader

보드 전원 인가 카운트가 0 이 되기 전에 키보드의 아무키나 눌러 부트로더 상태로 진입 dnw 를 이용하여 호스트의 u-boot.bin 을 다운로드할 준비

# dnw 0x40008000

9

Page 10: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 10 -Huins. R&D Center

Bootloader

보드로 부트로더 바이너리 전송 부트로더 소스 디렉터리가 아니라면 부트로더 소스 디렉터리로 이동

dnw 를 이용하여 호스트의 u-boot.bin 을 다운로드할 준비

데이터 전송 확인

# cd /work/achro4210/u-boot-120516

# smdk-usbdl -f u-boot.bin

10

Page 11: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 11 -Huins. R&D Center

Bootloader

플래시 기록 메모리 영역 (0x40008000) 에 있는 이미지를 microSD 로 기록

부트로더 명령 도움말

개발보드 정보 출력

# movi write u-boot 0x40008000

achro4210 # help

achro4210 # bdinfo arch_number = 0x00000B16 env_t = 0x00000000 boot_params = 0x40000100 DRAM bank = 0x00000000 -> start = 0x40000000 -> size = 0x10000000 ethaddr = 00:40:5C:26:0A:5B ip_addr = 192.168.1.121 baudrate = 115200 bps

11

Page 12: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 12 -Huins. R&D Center

Bootloader

부트로더 명령 메모리 관련 명령

cp

md

achro4210 # help cpcp - memory copyUsage: cp [.b, .w, .l] source target countachro4210 # cp 40008000 40008100 100

achro4210 # help md md - memory display Usage: md [.b, .w, .l] address [# of objects] achro4210 # md 4000800040008000: 00002000 00000000 00000000 00000000 . ..............40008000: ea000013 e59ff014 e59ff014 e59ff014 ................40008000: e59ff014 e59ff014 e59ff014 e59ff014 ................40008000: 2fe001e0 2fe00240 2fe002a0 2fe00300 .../@../.../.../40008000: 2fe00360 2fe003c0 2fe00420 12345678 `../.../ ../xV4.( 이하 생략 )

12

Page 13: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 13 -Huins. R&D Center

Bootloader

mm

mw

achro4210 # help mm mm - memory modify (auto-incrementing address) Usage: mm [.b, .w, .l] address achro4210 # mm 4000800040008000: 00002000 ? 1111222240008000: 00000000 ? 3333444440008000: 00000000 ? q (mm 명령을 종료할 때는 16 진수가 아닌 값을 됨 )

achro4210 # help mw mw - memory write (fill) Usage: mw [.b, .w, .l] address value [count] achro4210 # mw 40008000 00002000achro4210 # md 40008000 440008000: 00002000 33334444 00000000 00000000 . ..DD33........

13

Page 14: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 14 -Huins. R&D Center

Bootloader

microSD Command microSD(NAND) 관련 명령

movi init : SD 정보 출력

achro4210 # help movimovi init - Initialize moviNAND and show card infomovi read {u-boot | kernel} {addr} - Read data from sd/mmcmovi write {fwbl1 | u-boot | kernel} {addr} - Write data to sd/mmcmovi read rootfs {addr} [bytes(hex)] - Read rootfs data from sd/mmc by sizemovi write rootfs {addr} [bytes(hex)] - Write rootfs data to sd/mmc by sizemovi read {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc read"movi write {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc write"

achro4210 # movi init Device: S3C_HSMMC2 Manufacturer ID: 1b OEM: 534d Name: 00000 Tran Speed: 0 Rd Block Len: 512 SD version 2.0 High Capacity: No Size: 1910MB (block: 3911680) Bus Width: 2-bit

14

Page 15: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 15 -Huins. R&D Center

Bootloader

movi read {u-boot | kernel} { addr}SD 의 u-boot, kernel 이미지를 읽어 SDRAM 번지에 로드

movi read rootfs {addr} [bytes(hex)]

movi write {u-boot | kernel} {addr}memoy 의 u-boot, kernel 데이터를 읽어 SD 에 기록

achro4210 # movi read u-boot 40008000reading bootloader.. 49, 1024 MMC read: dev # 0, block # 49, count 1024 ...1024 blocks read: OKcompletedachro4210 # movi read kernel 40008000reading kernel.. 1073, 8192 MMC read: dev # 0, block # 1073, count 8192 ...8192 blocks read: OKcompleted

achro4210 # movI read rootfs 40008000 100000reading RFS.. 9265, 2048 MMC read: dev # 0, block # 9265, count 2048 ...2048 blocks read: OKcompleted

achro4210 # movi read u-boot 40008000reading bootloader.. 49, 1024 MMC read: dev # 0, block # 49, count 1024 ...1024 blocks read: OKcompletedachro4210 # movi read kernel 40008000reading kernel.. 1073, 8192 MMC read: dev # 0, block # 1073, count 8192 ...8192 blocks read: OKcompleted

15

Page 16: - 1 - 부트로더 Bootloader. - 2 - Huins. R&D Center Bootloader Bootloader 부트로더 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령

- 16 -Huins. R&D Center

Bootloader

movi write rootfs {addr} [bytes(hex)]

achro4210 # movi write rootfs 40008000 100000writing RFS.. 9265, 2048 MMC write: dev # 0, block # 9265, count 2048 ... 2048 blocks written: OKcompleted

16