Forráskód Böngészése

更新MCU-iram工程
1. 优化了CAN升级串口打印信息(新增接收到一个新文件打印文件名)。
更新CPU-app工程
1. 优化了emmc裸写存在的互斥访问缓存的风险(添加互斥锁)。
2. 优化了差分升级相关文件中sfud相关配置(非spi版本未使用宏条件包裹相关代码)。
更新了硬件开发资料

helen 3 hónapja
szülő
commit
bb9b3a656d

BIN
Doc/AMT630HV160硬件开发资料V1.1.rar → Doc/AMT630HV160硬件开发资料V1.3.rar


+ 11 - 2
amt630hv160-freertos-beta/FreeRTOS-Plus/FreeRTOS-FAT/portable/ff_sddisk.c

@@ -529,6 +529,7 @@ static int32_t prvSDMMC_Init(char const*name)
 #if DEVICE_TYPE_SELECT == EMMC_FLASH
 static uint32_t cached_sector = 0xffffffff;
 static uint8_t cached_data[emmcSECTOR_SIZE];
+static SemaphoreHandle_t cached_mutex = NULL;
 
 int32_t phyRead( uint8_t *pucBuffer, uint32_t ulSectorNumber, uint32_t ulSectorCount)
 {
@@ -685,18 +686,26 @@ int emmc_write(uint32_t offset, size_t size, uint8_t *data)
 	uint32_t wsize;
 	int ret;
 
+	if (cached_mutex == NULL)
+		cached_mutex = xSemaphoreCreateMutex();
+
+	xSemaphoreTake(cached_mutex, portMAX_DELAY);
+
 	while (leftsize > 0) {
 		wsize = leftsize > EMMC_RW_MAX_SIZE ? EMMC_RW_MAX_SIZE : leftsize;
 		ret = raw_emmc_write(off, wsize, buf);
-		if (ret)
+		if (ret) {
+			xSemaphoreGive(cached_mutex);
 			return ret;
+		}
 		leftsize -= wsize;
 		off += wsize;
 		if (buf)
 			buf += wsize;
 	}
 
+	xSemaphoreGive(cached_mutex);
+
 	return 0;
 }
-
 #endif

+ 5 - 0
amt630hv160-freertos-beta/lib/HPatch/file_for_patch.c

@@ -199,7 +199,9 @@ hpatch_FileHandle _import_fileOpen(const char* fileName_utf8,_FileModeType mode)
 			file->offset = OTA_MEDIA_OFFSET;
 			file->size = patchFileSize;
 			file->pos = 0;
+#if DEVICE_TYPE_SELECT == SPI_NOR_FLASH
 			file->sflash = sfud_get_device(0);
+#endif
 #ifdef HPATCH_FILE_CHECK_DEBUG
 			file->filebuf = pvPortMalloc(file->size);
 #endif
@@ -227,8 +229,11 @@ hpatch_FileHandle _import_fileOpen(const char* fileName_utf8,_FileModeType mode)
 				file->size = 0;
 			else
 				file->size = get_upfile_size(filetype);
+
 			file->pos = 0;
+#if DEVICE_TYPE_SELECT == SPI_NOR_FLASH
 			file->sflash = sfud_get_device(0);
+#endif
 #ifdef HPATCH_FILE_CHECK_DEBUG
 			if (!file->newfile)
 				file->filebuf = pvPortMalloc(file->size);

+ 1 - 0
amt630hv160-mcu/amt630hv160-mcu-iram/src/App/can_uds.c

@@ -357,6 +357,7 @@ uint8_t CAN_UDS_ServiceProcess(uint8_t SID, uint8_t *pData, uint32_t DataLen)
 			new_file = 1;
 			tx_status = 0;
 			mailbox_frame_size = 0;
+			printf("revice upfile %s, updating...\n", g_upfilename[file_type]);
 			if (file_type == UPFILE_TYPE_MCU_IMAGE) {
 				MemoryAddress = UPDATE_GetUpfileAddr(UPFILE_TYPE_MCU_IMAGE);
 				UPDATE_EraseData(MemoryAddress, IMAGE_MAX_SIZE);

+ 1 - 1
amt630hv160-mcu/amt630hv160-mcu-iram/src/App/update.c

@@ -310,7 +310,7 @@ u32 ReadHeaderOff(void)
 #endif
 	}
 
-	printf("Ivalid image header offset!\r\n");
+	printf("Invalid image header offset!\r\n");
 	return 0xffffffff;
 }