본문으로 건너뛰기

eMMC에 이미지 플래싱

이 페이지에서는 보드의 eMMC에 전체 이미지를 기록하는 방법을 설명합니다. 예를 들어 생산 라인에서, 직접 설계한 보드에서, 또는 공개 릴리스가 아닌 이미지로 작업할 때 사용합니다. 모든 단계를 직접 실행하므로 보유한 어떤 이미지 파일에도 적용할 수 있습니다.

DevKit을 공개된 SiMa.ai 릴리스로 업데이트하려면 대신 펌웨어 업데이트를 사용하십시오. 이미 부팅되는 보드에서 커널, 디바이스 트리 또는 U-Boot만 교체하려면 아티팩트 설치를 참조하십시오.

시작하기 전에​

  • U-Boot 프롬프트까지 진입하는 보드.

  • 하드웨어 흐름 제어를 비활성화하고 115200 baud로 설정한, 보드의 U-Boot/Linux UART에 대한 시리얼 연결. 시리얼 연결 구성을 참조하십시오.

  • 플래싱할 이미지:

    이미지파일
    eLxrelxr-palette-modalix-<version>-arm64.img
    Yoctosimaai-image-minimal-modalix.rootfs.wic.gz 및 simaai-image-minimal-modalix.rootfs.wic.bmap

    Yocto 파일 이름은 Yocto로 전체 이미지 빌드에서 생성되는 이름입니다. 다른 이미지 레시피를 사용하면 이름이 달라집니다.

  • 이더넷과 TFTP 서버를 갖춘 호스트 또는 SD 카드.

보드의 부팅 소스 선택 방식​

보드는 eMMC에서 실행 중인 상태로는 eMMC를 덮어쓸 수 없으므로, 먼저 네트워크 또는 SD 카드로 부팅합니다. U-Boot는 boot_targets에 지정된 소스를 순서대로 시도합니다.

대상부팅 소스
mmc1SD 카드
mmc0eMMC
dhcpDHCP로 찾은 TFTP 서버
net고정 IP 주소의 TFTP 서버

기본 순서는 mmc1 mmc0 dhcp net입니다. 순서를 변경하려면 시리얼 콘솔에서 자동 부팅을 중단한 다음 순서를 설정하고 저장하십시오.

sima$ env set boot_targets mmc1 mmc0 net dhcp; saveenv
Saving Environment to FAT... OK
sima$ printenv boot_targets
boot_targets=mmc1 mmc0 net dhcp
sima$ boot

1단계. 네트워크 또는 SD 카드로 부팅​

테스트 스테이션에서는 이더넷 포트를 네트워크 스트레스 테스트용으로 비워 둘 수 있으므로 SD 카드 부팅을 권장합니다.

네트워크로 부팅

이 방법은 사용자 자신의 TFTP 서버를 사용하므로 제공할 파일을 직접 선택할 수 있습니다. 네트워크 부팅 복구는 같은 작업을 sima-cli로 수행하며, 공개 릴리스를 대신 다운로드하여 제공합니다.

  1. 부트 파일을 TFTP 서버의 루트 디렉터리에 복사합니다.

    • netboot.scr.uimg
    • Image
    • 디바이스 트리 바이너리(*.dtb)
    • 루트 파일 시스템 아카이브: eLxr의 경우 elxr-palette-modalix-arm64.cpio.gz, Yocto의 경우 simaai-image-palette-modalix.cpio.gz
  2. 호스트를 보드의 첫 번째 이더넷 포트(eth0)에 연결합니다. 보드는 192.168.1.20을 사용하므로 호스트에 192.168.1.0/24 대역의 주소를 할당합니다.

    sima-user@sima-user-machine:~$ sudo ifconfig <interface_name> 192.168.1.10 up
  3. 보드의 전원을 켜고 자동 부팅을 중단한 다음, net을 첫 번째 부팅 소스로 지정합니다.

    sima$ env set boot_targets net mmc0 mmc1 dhcp; saveenv
    sima$ boot
  4. Linux가 부팅되면 빌드를 확인하고, 루트 파일 시스템이 RAM에 있는지 (root=/dev/ram0) 확인합니다.

    root@modalix:~# cat /etc/buildinfo
    root@modalix:~# cat /proc/cmdline
SD 카드로 부팅
  1. SD 카드에 이미지를 기록합니다. 호스트에서 부트 이미지 생성으로 기록하거나, SD 카드를 삽입한 상태로 네트워크 부팅한 보드에서 (/dev/mmcblk1) 기록할 수 있습니다.

    eLxr의 경우:

    root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk1 bs=4M status=progress conv=fsync

    Yocto의 경우 .wic.gz 및 .wic.bmap 파일을 모두 복사한 다음 다음을 실행합니다.

    root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk1

    그런 다음 파티션 테이블을 복구합니다. 이미지가 카드보다 작기 때문에, parted로 옮기기 전까지 백업 GPT 헤더가 장치의 끝에 위치하지 않습니다.

    root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk1 print
  2. 재부팅하고 자동 부팅을 중단한 다음 mmc1이 첫 번째인지 확인합니다. 기본값으로는 첫 번째입니다.

    sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenv
    sima$ boot
  3. Linux가 부팅되면 /etc/buildinfo를 확인하고, /proc/cmdline에 root=/dev/mmcblk1p*가 있는지 확인합니다.

2단계. eMMC에 이미지 기록​

보드가 네트워크 또는 SD 카드로 부팅된 상태에서, 보드에서 root로 다음 단계를 실행하십시오.

  1. 호스트의 이미지를 보드의 /tmp로 복사합니다.

    eLxr의 경우:

    sima-user@sima-user-machine:~$ scp elxr-palette-modalix-<version>-arm64.img root@192.168.1.20:/tmp/

    Yocto의 경우 .wic.gz 및 .wic.bmap 파일을 모두 복사합니다.

    sima-user@sima-user-machine:~$ scp simaai-image-minimal-modalix.rootfs.wic.* root@192.168.1.20:/tmp/
  2. eMMC(/dev/mmcblk0)에 이미지를 기록합니다.

    eLxr의 경우:

    root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync

    Yocto의 경우:

    root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk0
  3. 파티션 테이블을 복구합니다.

    root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk0 print

3단계. eMMC로 부팅​

  1. 네트워크로 부팅했다면 기본 부팅 순서를 복원합니다.

    sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenv

    SD 카드로 부팅했다면 SD 카드를 제거합니다.

  2. 보드를 재부팅하거나 전원을 껐다 켠 다음 eMMC로 부팅되는지 확인합니다.

다음 단계​