본문 바로가기
system/SBC

[Marsboard] Bootloader Compile

by lifeseed 2013. 10. 16.

0. 시작하기

결론부터 말하면 Marsboard는 QubieBoard와 다르다. 따라서 Qubieboard 용으로 배포된 이미지는 Marsboard에서 정상적으로 동작하지 않는다. 그리고 www.marsboard.com에서 제공하는 부트로더 또한 정확히 Marsboard를 위한 부트로더가 아니다. 따라서 배포된 이미지를 아무리 다운로드 하여도 부팅이 안되거나, 비정상적인 동작을 하기 일수다. 따라서 A10용으로 배포된 Bootloader를 Build하고 설치하여야 한다.

 

본 게시글은 네이버 오픈 H/W 마스보드 & 비글본블랙 사용자Cafe 고명호 님의 게시글과 linux-sunxi 페이지를 참조하였다.

 

[출처]

1) A20 에 cubian 올렸습니다. (오픈 H/W 마스보드&비글본블랙 사용자 Cafe)

2) https://github.com/linux-sunxi/u-boot-sunxi/wiki

3) http://linux-sunxi.org/  -> http://linux-sunxi.org/Building_on_Ubuntu

 

1. 개발환경 설정

개발환경 설치 및 빌드과정은 우분투 12.04에서 Test되었으며, 우분투 버전에 따라 일부 내용이 달라 질 수 잇다.

 

1) 기본적인 개발 패키지 설치

apt-get 명령을 이용하여 개발 패키지를 설치한다. 참고로 1시간이 넘는 시간이 소요되었다.

$ sudo apt-get install build-essential git u-boot-tools texinfo texlive ccache zlib1g-dev gawk \
     bison flex gettext uuid-dev
$ sudo apt-get install ia32-libs   # If you use a 64 bit version of Ubuntu, no more needed on recent version of ubuntu
$ sudo apt-get install ncurses-dev # This is optional and needed if you are doing 'make menuconfig'

 

2) Cross Compiler 설치

 

$ sudo apt-get install gcc-arm-linux-gnueabi

or using linaro with hardware floating point (hf) support (used in the Linux building instructions):

$ sudo apt-get install gcc-arm-linux-gnueabihf


cf) Ubuntu 10.04

For Ubuntu 10.04 you can install a prebuilt toolchain like this very easily (newer Ubuntu version may have this pacakage by default):

sudo add-apt-repository ppa:linaro-maintainers/toolchain
sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabi

 

2. Source Code 받기, Build 및 설치

1) Get Source Code

- GIT을 통하여 uboot Source Code를 다운 받자.

 

2) build

- 다운 받은 uboot에 marsboard-A10을 위한 H/W configuration이 포함되어 있다.

$ make marsboard_a10_config CROSS_COMPILE=arm-linux-gnueabi

$ make marsboard_a10 CROSS_COMPILE=arm-linux-gnueabi

 

Build가 완료되면 u-boot.img와 spl directory에 sunxi-spl.bin 이 생성된다.

 

u-boot.img

sunxi-spl.bin

 

3) 설치

spl 설치

$ sudo dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8

uboot 설치 

$ dd if=u-boot.img of=/dev/sdX bs=1024 seek=40

 

- 여기서 /dev/sdX 는 marsboard용 이미지가 구워진 SD카드의 device name이다.

 

이로써 Marsboard용 bootloader가 준비되었다.