2017-05-05 2 views
1

나는 암 기반 임베디드 보드가 있습니다. 현재 RootFS는 스쿼시입니다. 나는 아직 개발 단계에있다. 현재 워크 플로우 :Ram에 전체 rootfs를로드하는 Buildroot

  1. 개발 컴퓨터를 변경하십시오.
  2. 새 루트 FS 이미지를 만듭니다.
  3. 이미지를 보드에있는 플래시 디스크에 구우십시오.
  4. 변경 사항을 재부팅하고 테스트하십시오.

위의 워크 플로우는 효율적이지 않습니다. FS의 전체 이미지를 만드는 데는 많은 시간을 낭비하는 반면, 응용 프로그램이나 FS의 일부 스크립트 만 변경하면되므로 이미지를 구운 다음 재부팅해야합니다.

나는 RootFS를 유지하기 위해 초기 램 디스크를 만들 수 있다는 것을 안다. 나는 buildroot에서 그 옵션을 고르고 빌드가 완료되었다.

이제 보드에서 무엇을 타야합니까? 그리고 전체 개발, 레코딩, 재부팅 사이클을 피하기 위해 충분합니다.

마지막으로 이미지를 레코딩해야한다는 것을 알고 있지만, 변경 사항이 작동하는지 확인한 후 최종 이미지 하나를 레코딩하고 싶습니다.

답변

2

이렇게하면 더 작은 부품을 태울 수 없습니다. 그래도 전체 이미지를 장치의 메모리로 복사해야합니다. 해결 방법이 있습니다. U-Boot에서 네트워킹 기능을 사용하십시오 (예 : tftpboot). 이미지를 메모리에 다운로드하고 보드에서 실행하십시오. 여기

은 파워 보드 중 하나에 대한 예입니다

nb_load=dhcp;run nb_load_dtb;run nb_load_vmlinuz;run nb_load_initrd 
nb_load_initrd=tftpboot 0x1900000 /mybooklive/initrd 
nb_load_vmlinuz=tftpboot 0x1000000 /mybooklive/vmlinuz 
nb_load_dtb=tftpboot 0x1800000 /mybooklive/apollo3g.dtb 
nb_boot=setenv bootargs ${nb_bootargs}; run nb_load; bootm 0x1000000 0x1900000 0x1800000 
nb_bootargs=console=ttyS0,115200n8 ignore_loglevel 

은 U-boot 명령 줄에서 run nb_boot를 실행 부팅하려면.

기본적으로 커널 이미지, 초기 램 디스크 및 장치 트리 blob (커널에서 컴파일하지 않기로 선택한 경우)이 필요합니다. 여기

은의 eMMC에서 부팅하는 인텔 에디슨 보드 U-부팅 옵션의 또 다른 예입니다

setenv boot_edsboot 'zboot 0x100000 0 0x3000000 0x1000000' 
setenv bootargs_edsboot 'console=tty1 console=ttyS2,115200n8 rootfstype=ramfs rw' 
setenv bootcmd_edsboot 'setenv bootargs ${bootargs_edsboot}; run load_edsboot; run boot_edsboot' 
setenv load_edsboot 'load mmc 0:9 0x100000 vmlinuz.efi; load mmc 0:9 0x3000000 initrd' 

은 U-부트 명령 행에서 run bootcmd_edsboot를 실행 부팅하려면.

전체 기사는 here입니다.

당신이 가지고있는 보드에 따라 정확한 파일 (DTB)과 주소를 얻어야한다는 것은 명백합니다.

+0

감사합니다. 0andriy, 나는 현재 어떻게 uboot가 작동하는지 이해할 수있었습니다. 나는 네트워크 부트 옵션을 사용하려고 시도 할 것이다. – silentnights