U-boot 소스얻기,compile,올리기 망고100 보드로 놀아보자-5 U-boot 소스얻기,compile,올리기 cafe.naver.com/embeddedcrazyboys
cafe.naver.com/embeddedcrazyboys U-Boot란? & 특징 부트로더 간단하게 특정 cpu에 OS 혹은 어떤 프로그램을 돌릴 수 있도록 cpu가 동작하는데 필요한 아주 기초적인 부분이나 ROM(or flash), RAM, UART등의 기본적인 디바이스들을 동작할 수 있게 만드는 프로그램. Universal Bootloader 의 약자로 간단하게 PowerPC와 ARM에 기반을 둔 임베디드 보드를 위한 부트로더. Ppcboot와 ARMboot를 썼던 사람들에게 익숙하다.. 발전을 해가면서 다양한 platform에 포팅(ppc, arm, mips, x86...) 코드가 깔끔하고 구조가 좋음. 굉장히 강력하고 그나마 쉬운(?) 환경 설정: 많이 쓰이는 cpu를 사용한 상용 evaluation board에 대한 기본 sample코드 존재(수정하여 사용가능) 다른cpu에 대해 같은 명령어 체계를 사용하므로, 다른 platform에 적용을 하더라도 큰 어려움 없이 쉽게 접근가능 cafe.naver.com/embeddedcrazyboys
cafe.naver.com/embeddedcrazyboys U-boot 최신 소스 얻는 법 http://www.denx.de/wiki/U-Boot CPU 칩 Band 업체에서 얻는 것이 가장 좋다. 망고100 보드 :http://crztech.iptime.org:8080 최신 소스 사용 cafe.naver.com/embeddedcrazyboys
U-boot Download , Compile #mkdir ~/work #tar xvf mango100-uboot-2010-0629.tgz #cd mango100_uboot_2010_06_29 #make mango100_config #make cafe.naver.com/embeddedcrazyboys
Custom Board용 u-boot설정 1) copy: board/samsung/mango100 => board/samsung/newmango 2) copy: include/configs/mango100.h => include/configs/newmango.h로 복사 3) vi Makefile mango100_config : unconfig @./mkconfig $(@:_config=) arm s5pc1xx mango100 samsung s5pc100 => 밑에 두줄 추가 newmango_config : unconfig @./mkconfig $(@:_config=) arm s5pc1xx newmango samsung s5pc100 4) board/samsung/newmango/u-boot.lds -> board/samsung/newmango/lowlevel_init.o 으로 수정 4) compile make clobber make newmango_config make cafe.naver.com/embeddedcrazyboys
cafe.naver.com/embeddedcrazyboys Source tree 구조 /board ---/mango100 : cpu 디렉토리에 있는 cpu들로 만들어진 보드에 대한코드 ... 보드에 밀접한 코드들로 보드 초기화 코드, memory bank 설정코드 flash코드, 부트로더가 dram에 위치해야하는 relocation address를 기록한 config.mk, 전체코드의 배치를 지정하는 u-boot.lds라는 링커 스크립트 파일 /common : 각종 명령어, user interface main routine /cpu ---/cpu/s5pc1xx : cpu에 대한 startup코드(cpu초기화)와 serial, ... clock, timer등의 cpu specific한 코드 /doc : 각종 readme file /drivers : 각종 network과 같은 driver /examples : 부트로더상에서 실행시키는 standalone app example /fs ---/jffs2 : OS(특히 linux)지원 file system /include ---/include/asm-arm : 해당 platform에 대한 코드는 include/asm-arm같은식으로 존재. 중요한 파일로 u-boot.h에 board description structure가 존재함. (ppc에서 매우 중요함, arm에서는 덜 중요) ... /include/configs : 각 보드에 대한 설정파일들이 있습니다, [보드이름].h의 형태. /lib_arm : u-boot의 arm쪽 C 메인코드들이 있습니다. /net : tftp등의 네트워크 코드 /rtc : Real Time Clock driver /tools : mkimage등의 툴 cafe.naver.com/embeddedcrazyboys
cafe.naver.com/embeddedcrazyboys Source Flow startup(cpu/s5pc1xx/start.S) cpu초기화, dram초기화, 그 후에 부트로더의 ram으로의 relocation, C코드에서의 main인 start_armboot()를 호출함. c쪽의 start코드(lib_arm/board.c) dram초기화 이후의 flash, uart등등의 주변 디바이스 초기화 메인루프(command line shell: common/main.c) 유닉스 shell과 같은 명령어 처리 루틴. autoboot delay동안 enter키 입력을 기다리는데 그동안 키 입력이 안되면 바로 boot command(설정파일을 보면 나옴)를 실행시킴. app의 실행 혹은 리눅스등의 OS로 부팅(lib_arm/armlinux.c) 헤더가 붙은 커널의 헤더를 읽어서 압축을 풀고 리눅스로 제어권을 넘겨주는 코드 cafe.naver.com/embeddedcrazyboys
Mango100 tftp 로 u-boot write >#minicom 전원인가 설명:ipaddr :망고보드 ip, serverip :tftp host ip , gatewayip:Gatewayip ># tftp 21000000 u-boot.bin ># nand write 21000000 0 40000 cafe.naver.com/embeddedcrazyboys
망고100 USB OTG 이용 u-boot write http://cafe.naver.com/embeddedcrazyboys/5484 >#mincom 실행 >#dnw 21000000 cafe.naver.com/embeddedcrazyboys
cafe.naver.com/embeddedcrazyboys 망고100 SD booting 준비물 SDHC 4G Card 리눅스 설치 된 PC SD boot 망고100 Image cafe.naver.com/embeddedcrazyboys
망고100 SD booting Image Write MMC /SD Card 리눅스 Host 에 Insert SD boot Script 다운 받는곳(http://crztech.iptime.org:8080) >#./sdwriter /dev/장치 mango-image 완료가 되면, mmc card를 망고100에 삽입 SD 부팅 모드로 변경 6 5 4 3 2 1 SW100 ON SW101 1 2 3 4 5 6 cafe.naver.com/embeddedcrazyboys