분류

2018년 3월 8일 목요일

texas-am335x 유용한 u-boot명령

본 장은 ubuntu 14.04 버전에서 테스트 되었습니다.

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

※ 사용할 브랜치만 복제할 경우 
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 메시지를 정상 확인할 수 있습니다. 버전별로 일부 지원되지 않는 녀석이 있는 것 같습니다. 
※ 이미지 용량이 그리 크지 않기에 전체를 클론 했습니다. 


1.크로스 컴파일 툴체인 설치

툴체인을 확인하시고 없다면 설치해주세요 툴체인은 linaro toolchain을 권장합니다. 
 $ 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

수행 중 오류가 발생했습니다.

*** 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 # 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 

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'

댓글 없음:

댓글 쓰기