瀏覽代碼

修复sd卡u盘升级时不能同时OTA升级的问题

huangliang 2 年之前
父節點
當前提交
bd40229780

+ 3 - 1
u-boot/board/arkmicro/ark1668e_devb/ark1668e_devb.c

@@ -292,12 +292,14 @@ int board_late_init(void)
 		if (loadaddr && !memcmp((void *)loadaddr, ARK1668_UPDATE_MAGIC, strlen(ARK1668_UPDATE_MAGIC))) {
 			do_update = 1;
 			update_from_mmc = 0;
+			goto update_done;
 		} else {
 			printf("Wrong update magic, do not update from usb.\n");
 		}
 #endif
 	}
-	else if (!strcmp(update_flash, "yes")){
+
+	if (!strcmp(update_flash, "yes")){
 
 	    sprintf(cmd, "run updatefromflash");
 		printf("cmd=%s\n", cmd);

+ 3 - 1
u-boot/board/arkmicro/ark1668e_devb_dashboard/ark1668e_devb_dashboard.c

@@ -292,12 +292,14 @@ int board_late_init(void)
 		if (loadaddr && !memcmp((void *)loadaddr, ARK1668_UPDATE_MAGIC, strlen(ARK1668_UPDATE_MAGIC))) {
 			do_update = 1;
 			update_from_mmc = 0;
+			goto update_done;
 		} else {
 			printf("Wrong update magic, do not update from usb.\n");
 		}
 #endif
 	}
-	else if (!strcmp(update_flash, "yes")){
+
+	if (!strcmp(update_flash, "yes")){
 
 	    sprintf(cmd, "run updatefromflash");
 		printf("cmd=%s\n", cmd);

+ 19 - 16
u-boot/board/arkmicro/ark1668e_devb_emmc/ark1668e_devb_emmc.c

@@ -639,28 +639,31 @@ int board_late_init(void)
 			else
 			    env_set("updata_from_part", "A");
 			printf("++++++++++++++%s++++++++++\n",curr_partition);
+			goto update_done;
 		} else {
 			printf("Wrong update magic, do not update from usb.\n");
 		}
 #endif
 	}
-	else if(!strcmp(update_from_ota, "yes")){
-			do_update = 0;
-			curr_partition  = env_get("updata_from_part");
-			printf("++updata_from_part %s++\n", curr_partition);
-			run_command("env default -f -a", 0);
-			mdelay(500);
-			if(!strcmp(curr_partition, "A"))
-				env_set("updata_from_part", "A");
-			else if(!strcmp(curr_partition, "B"))
-				env_set("updata_from_part", "B");
-			else
-				env_set("updata_from_part", "A");
-			printf("++++++++++++++%s++++++++++\n",curr_partition);
-			sprintf(cmd, "update_from_emmc_ota");
-			printf("cmd=%s\n", cmd);
-			run_command(cmd, 0);
+
+	if(!strcmp(update_from_ota, "yes")){
+		do_update = 0;
+		curr_partition  = env_get("updata_from_part");
+		printf("++updata_from_part %s++\n", curr_partition);
+		run_command("env default -f -a", 0);
+		mdelay(500);
+		if(!strcmp(curr_partition, "A"))
+			env_set("updata_from_part", "A");
+		else if(!strcmp(curr_partition, "B"))
+			env_set("updata_from_part", "B");
+		else
+			env_set("updata_from_part", "A");
+		printf("++++++++++++++%s++++++++++\n",curr_partition);
+		sprintf(cmd, "update_from_emmc_ota");
+		printf("cmd=%s\n", cmd);
+		run_command(cmd, 0);
 	}
+
 update_done:
 	if (do_update) {
 		run_command("emmc erase.part userdata", 0);