본 장은 ubuntu 14.04 버전에서 테스트 되었습니다.
u-boot 소스 코드 복제
http://git.ti.com/ti-u-boot/ <--를 클릭하시면 여러 branch를 확인하실 수 있습니다.
u-boot 소스 코드 복제
http://git.ti.com/ti-u-boot/ <--를 클릭하시면 여러 branch를 확인하실 수 있습니다.
git clone git://git.ti.com/ti-u-boot/ti-u-boot.git
$ cd ti-u-boot/
$ git checkout -b remotes/origin/u-boot-2013.01.y
※ 사용할 브랜치만 복제할 경우
※ 이미지 용량이 그리 크지 않기에 전체를 클론 했습니다. $ cd ti-u-boot/
$ git checkout -b remotes/origin/u-boot-2013.01.y
※ 사용할 브랜치만 복제할 경우
git clone -b remotes/origin/u-boot-2013.01.y --depth=1 git://git.ti.com/ti-u-boot/ti-u-boot.git
※ 제 경우 버전은 u-boot u-boot-2009.11.y 을 사용해야 u-boot 메시지를 정상 확인할 수 있습니다. 버전별로 일부 지원되지 않는 녀석이 있는 것 같습니다.
※ 제 경우 버전은 u-boot u-boot-2009.11.y 을 사용해야 u-boot 메시지를 정상 확인할 수 있습니다. 버전별로 일부 지원되지 않는 녀석이 있는 것 같습니다.
툴체인을 확인하시고 없다면 설치해주세요 툴체인은 linaro toolchain을 권장합니다.
$ arm-linux-gnueabihf-gcc --version
$ sudo apt-get install gcc-4.7-arm-linux-gnueabihf
$ arm-linux-gnueabihf-gcc --version
$ sudo apt-get install gcc-4.7-arm-linux-gnueabihf
2. MLO 및 u-boot 컴파일
http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User's_Guide
상위 링크로 이동하시면 u-boot를 적용할 수 있는 컴파일 기본 환경 목록을 확인하실 수 있습니다.
소스파일 클린
$ make CROSS_COMPILE=arm-linux-gnueabihf- distclean
$ rm -rf ./am335x_evm
환경 파일 적용
$ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig
컴파일
$ make -j3 CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm
$ make CROSS_COMPILE=arm-linux-gnueabihf- distclean
$ rm -rf ./am335x_evm
환경 파일 적용
$ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig
컴파일
$ make -j3 CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm
수행 중 오류가 발생했습니다.
*** Your GCC is older than 6.0 and is not supported
지원되지 않는 gcc라고 하지만 gcc가 언제부터 6.0이었다고 그러는지; 해당 코드를 없애겠습니다. 우선 문제가 되는 설정 파일을 찾습니다.
$ grep -r 'Your GCC is older' ./*
./arch/arm/config.mk~: echo '*** Your GCC is older than 6.0 and is not supported'; \
요 파일에서 문제가 생깁니다. 다 주석 처리 해줍니다.
gedit arch/arm/config.mk
$ make -j3 CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm
sd카드에 이미지 배포
$ sudo dd if=u-boot of=/dev/sdb bs=512 seek=2
3. tftp를 통한 sd카드 업데이트
tftp boot을 이용하기 위해서는 먼저 환경 설정이 필요합니다. Yocto NFS & TFTP boot 문서 한글 화 를 참조하세요
우선 보드를 부팅 시키고, booting 시 2초내 키를 눌러 u-boot 인터페이스로 접속합니다.
※ 호스트 컴퓨터에 dfu-util이 필요합니다. $ sudo apt-get install dfu-util
환경 설정 값을 초기화 합니다.
U-Boot # env default -f -a
U-Boot # saveenv
환경 설정 값을 초기화 합니다.
U-Boot # env default -f -a
U-Boot # saveenv
새로운 환경 설정
U-Boot # setenv autoload no
U-Boot # dhcp
※ 고정 ip를 쓸 경우 예 : setenv ipaddr 192.168.2.108
U-Boot # setenv serverip correct.server.ip
※ ip 입력 예 : setenv serverip 192.168.2.100
zImage 업데이트
U-Boot # tftp
위 명령을 수행할 경우 파일이 정상적으로 받아지면 아래 그림과 같은 형태의 메시지가 나타납니다.
U-Boot # setenv autoload no
U-Boot # dhcp
※ 고정 ip를 쓸 경우 예 : setenv ipaddr 192.168.2.108
U-Boot # setenv serverip correct.server.ip
※ ip 입력 예 : setenv serverip 192.168.2.100
zImage 업데이트
U-Boot # tftp
위 명령을 수행할 경우 파일이 정상적으로 받아지면 아래 그림과 같은 형태의 메시지가 나타납니다.
정상 진행된 경우 스크린
3. DFU를 통해 sd카드나 eMMC카드 업데이트 하기
DFU를 통해 업데이트 할 수 있는 항목
boot , rootfs, MLO, u-boot.img, uEnv.txt
U-Boot # mmc part
Partition Map for MMC device 0 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 2048 143360 982f7645-01 0c Boot
2 145408 8013824 982f7645-02 83
DFU 시작하기
U-Boot # setenv dfu_alt_info ${dfu_alt_info_mmc}
U-Boot # dfu 0 mmc 0
※ dfu 0 mmc 0 명령이 수행될 경우 u-boot 는 파일 전송 대기 상태에 들어가며 mmc 0으로 전송되는 파일을 받습니다. vm에서 아래와 이미지와 같이 새로운 장치를 추가 할 수 있습니다.
$ sudo dfu-util -D MLO -a MLO
※ 정상적으로 MLO파일이 전송될경우 화면은 아래와 같습니다.
$ sudo dfu-util -D fat.img -a boot
boot , rootfs, MLO, u-boot.img, uEnv.txt
U-Boot # mmc part
Partition Map for MMC device 0 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 2048 143360 982f7645-01 0c Boot
2 145408 8013824 982f7645-02 83
DFU 시작하기
U-Boot # setenv dfu_alt_info ${dfu_alt_info_mmc}
U-Boot # dfu 0 mmc 0
※ dfu 0 mmc 0 명령이 수행될 경우 u-boot 는 파일 전송 대기 상태에 들어가며 mmc 0으로 전송되는 파일을 받습니다. vm에서 아래와 이미지와 같이 새로운 장치를 추가 할 수 있습니다.
$ sudo dfu-util -D MLO -a MLO
※ 정상적으로 MLO파일이 전송될경우 화면은 아래와 같습니다.
$ sudo dfu-util -D fat.img -a boot
4. SD카드 부팅 설정cd
$ U-Boot# setenv bootargs 'console=ttyO0,115200n8 root=/dev/mmcblk0p2 mem=128M rootwait'
$ U-Boot# setenv bootcmd 'mmc rescan; fatload mmc 0 0x82000000 uImage; bootm 0x82000000'
댓글 없음:
댓글 쓰기