Bootloader 1 Bootloader PC CMOS Achro4210 Achro 4210
Bootloader 부트로더 -1 -
Bootloader § 부트로더 § § § 부트로더 존재의 이유 § § 사용가능한 하드웨어를 초기화 시스템 구성을 위한 하드웨어 제어 명령 PC와 달리 CMOS를 이용할 수 없는 특수한 환경 Achro-4210 부트로더 소스 위치 [Achro 4210 Disc]/bootloader/u-boot-yymmdd. tar. gz § 부트로더 컴파일 § 소스 준비 # mkdir /work/achro 4210 # cd /work/achro 4210 # cp –a /media/[Achro 4210 Disc]/bootloader/u-boot-120516. tar. gz /work/achro 4210 # tar zxvf u-boot-120516. tar. gz # cd u-boot-120516 § 크로스 컴파일러 설정 # vim Makefile -2 - Huins. R&D Center 2
Bootloader …(중간생략)… CROSS_COMPILE = /opt/toolchains/arm-2009 q 1/bin/arm-none-linux-gnueabi- § 기존 설정 초기화 # make distclean § 컴파일 # make § 컴파일 완료 -3 - Huins. R&D Center 3
Bootloader § Achro-4210 부트로더 퓨징 micro. SD메모리의 raw 영역이 지워진 상태에서 부트로더를 퓨징하는 방법 # mkbl 1 u-boot. bin. crc 16392 § 생성된 BL 1(u-boot. bin. crc)를 Micro. SD에 기록 # dd if=u-boot. bin. crc of=/dev/sdb bs=1 seek=512 count=16384 § BL 2(u-boot. bin)을 Micro. SD에 기록 # dd if=u-boot. bin of=/dev/sdb bs=1 seek=16896 # sync OM CPU 내부에 위치 Micro. SD의 RAW 영역에 위치 BL 1 (u-boot 의 상위 16 K) BL 0 (i. ROM) -4 - Huins. R&D Center BL 2 (u-boot. bin) 4
Bootloader § SD메모리 초기화 FLASH RAW AREA 최소요구 사항 -5 - Huins. R&D Center 5
Bootloader § ACHRO 4210의 Fusing 방법 - DNW Host Linux Target Board FLASH SDRAM MINICOM > DNW 0 x 4000… Bootloader 컴파일 Kernel 컴파일 BL 2 relocate raw area BL 2 Receive Data 호스트의 USB와 타깃의 USB OTG 가 연결되어야 함. TERMINAL # smdk-usbdl –f. . -6 - Huins. R&D Center Kernel, Bootloader를 /tftpboot 디렉터리로 복사 smdk-usbdl을 이용하여 Usb를 이용 데이터 전송 6
Bootloader § ACHRO 4210의 Fusing 방법 - TFTP Host Linux Target Board FLASH SDRAM MINICOM > TFTP … Bootloader 컴파일 Kernel 컴파일 BL 2 relocate raw area BL 2 Receive Data 호스트에는 tftpd 가 구동, 네트워크 로 연결되어야 함 Kernel, Bootloader를 /tftpboot 디렉터리로 복사 Xinet Demon. . Service tftpd -7 - Huins. R&D Center 7
Bootloader § 플래시 기록 § 메모리 영역(0 x 40008000)에 있는 이미지를 micro. SD로 기록 # movi write u-boot 0 x 40008000 § 부트로더 명령 § 도움말 achro 4210 # help § 개발보드 정보 출력 achro 4210 # bdinfo arch_number = 0 x 00000 B 16 env_t = 0 x 0000 boot_params = 0 x 40000100 DRAM bank = 0 x 0000 -> start = 0 x 40000000 -> size = 0 x 10000000 ethaddr = 00: 40: 5 C: 26: 0 A: 5 B ip_addr = 192. 168. 1. 121 baudrate = 115200 bps - 11 - Huins. R&D Center 11
Bootloader § 부트로더 명령 § 메모리 관련 명령 § cp achro 4210 # help cp cp - memory copy Usage: cp [. b, . w, . l] source target count achro 4210 # cp 40008000 40008100 § md achro 4210 # help md md - memory display Usage: md [. b, . w, . l] address [# of objects] achro 4210 # md 40008000: 00002000 00000000. . . . 40008000: ea 000013 e 59 ff 014 e 59 ff 014. . . . 40008000: 2 fe 001 e 0 2 fe 00240 2 fe 002 a 0 2 fe 00300. . . /@. . / 40008000: 2 fe 00360 2 fe 003 c 0 2 fe 00420 12345678 `. . /x. V 4. (이하 생략) - 12 - Huins. R&D Center 12
Bootloader § mm achro 4210 # help mm mm - memory modify (auto-incrementing address) Usage: mm [. b, . w, . l] address achro 4210 # mm 40008000: 00002000 ? 11112222 40008000: 0000 ? 33334444 40008000: 0000 ? q (mm 명령을 종료할 때는 16진수가 아닌 값을 됨) § mw achro 4210 # help mw mw - memory write (fill) Usage: mw [. b, . w, . l] address value [count] achro 4210 # mw 40008000 00002000 achro 4210 # md 40008000 4 40008000: 00002000 33334444 00000000. . . DD 33. . . . - 13 - Huins. R&D Center 13
Bootloader § micro. SD Command § micro. SD(NAND) 관련 명령 achro 4210 # help movi init - Initialize movi. NAND and show card info movi read {u-boot | kernel} {addr} - Read data from sd/mmc movi write {fwbl 1 | u-boot | kernel} {addr} - Write data to sd/mmc movi read rootfs {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size movi write rootfs {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size movi 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" § movi init : SD 정보 출력 achro 4210 # movi init Device: S 3 C_HSMMC 2 Manufacturer ID: 1 b OEM: 534 d Name: 00000 Tran Speed: 0 Rd Block Len: 512 SD version 2. 0 High Capacity: No Size: 1910 MB (block: 3911680) Bus Width: 2 -bit - 14 - Huins. R&D Center 14
Bootloader § movi read {u-boot | kernel} { addr} SD의 u-boot, kernel 이미지를 읽어 SDRAM 번지에 로드 achro 4210 # movi read u-boot 40008000 reading bootloader. . 49, 1024 MMC read: dev # 0, block # 49, count 1024. . . 1024 blocks read: OK completed achro 4210 # movi read kernel 40008000 reading kernel. . 1073, 8192 MMC read: dev # 0, block # 1073, count 8192. . . 8192 blocks read: OK completed § movi read rootfs {addr} [bytes(hex)] achro 4210 # mov. I read rootfs 40008000 100000 reading RFS. . 9265, 2048 MMC read: dev # 0, block # 9265, count 2048. . . 2048 blocks read: OK completed § movi write {u-boot | kernel} {addr} memoy의 u-boot, kernel 데이터를 읽어 SD에 기록 achro 4210 # movi read u-boot 40008000 reading bootloader. . 49, 1024 MMC read: dev # 0, block # 49, count 1024. . . 1024 blocks read: OK completed achro 4210 # movi read kernel 40008000 reading kernel. . 1073, 8192 MMC read: dev # 0, block # 1073, count 8192. . . 8192 blocks read: OK completed - 15 - Huins. R&D Center 15
Bootloader § movi write rootfs {addr} [bytes(hex)] achro 4210 # movi write rootfs 40008000 100000 writing RFS. . 9265, 2048 MMC write: dev # 0, block # 9265, count 2048. . . 2048 blocks written: OK completed - 16 - Huins. R&D Center 16
- Slides: 16