512MB의 RAM과 4GB의 내부 저장 장치를 갖춘 내장형 장치가 있습니다. (라즈베리 파이나 비글본을 생각해 보세요)
3개의 파티션이 있는 외부 SD 카드가 있습니다.
mmcblk0
디스크이고 mmcblk0p1
그 위에 3개의 파티션이 mmcblk0p2
있습니다 .mmcblk0p3
mmcblk0p2
또한 mmcblk0p3
각 파티션에는 Debian 운영 체제가 있습니다.
mmcblk0p2
활성 파티션과 mmcblk0p3
동시에 백업 파티션으로 사용됩니다.
나는 u boot가 첫 번째 파티션의 동작을 선호한다는 것을 알았습니다. 파티션에서 uEnv.txt를 읽고 그에 따라 시작합니다.
따라서 파티션에는 mmcblk0p1
uboot 구성이 있습니다. ( uEnv.txt
및 시작하는 데 필요한 기타 파일)
변경 시작 구성을 사용하고 있습니다 uEnv.txt
. 즉, 부팅하려는 경우 다음을 mmcblk0p3
제공할 수 있습니다.
mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${cape_disable} ${cape_enable} root=/dev/mmcblk0p3 rootfstype=${mmcrootfstype} ${cmdline}
내부에uEnv.txt
uEnv.txt
결함으로 인해 파티션이 손상되거나 파티션이 손상된 경우 장치는 파티션 중 하나에서 부팅할 수 없습니다. (예: 운영 체제)
uEnv.txt
활성 파티션이 손상된 경우 재부팅 시 다른 파티션에서 어떻게 부팅할 수 있습니까? 이 주제와 관련된 사용 가능한 링크나 리소스를 공유할 수 있다면 좋을 것입니다. 즉, 이 상황을 어떻게 처리해야 합니까?
답변1
자체 OTA를 처음부터 구현하는 경우에는 그렇습니다. 다른 기존 OTA 메커니즘이 이를 어떻게 처리하는지 이해해야 할 것입니다. 일반적으로 업데이트가 있는지, 그리고 시도했는지 확인하기 위해 플래그 조합을 사용하기 때문입니다. 그것을 업데이트합니다.