diff --git a/docs/platforms.md b/docs/platforms.md index c9d73d00f..0960f4f10 100644 --- a/docs/platforms.md +++ b/docs/platforms.md @@ -25,7 +25,7 @@ | RTL8720E
RTL8710ECF (AmebaLite) | Realtek | ✅ | ✅⁶ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❗️ | | ECR6600 | ESWIN | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ❗️ | ❗️¹¹ | ✅ | ❌ | ❌ | | TXW81X | Taixin | ❌ | ❗️ | ✅ | ❓ | ❌ | ❌ | ❌ | ❌ | ❓ | ❌ | ❌ | -| RDA5981 | RDA | ❌ | ❓ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ➖ | ❌ | +| RDA5981 | RDA | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ➖ | ❌ | ✅ - Works
❓ - Not tested
diff --git a/src/hal/rda5981/hal_flashConfig_rda5981.c b/src/hal/rda5981/hal_flashConfig_rda5981.c index ceec75a12..fa596960c 100644 --- a/src/hal/rda5981/hal_flashConfig_rda5981.c +++ b/src/hal/rda5981/hal_flashConfig_rda5981.c @@ -10,7 +10,7 @@ int HAL_Configuration_ReadConfigMemory(void* target, int dataLen) int HAL_Configuration_SaveConfigMemory(void* src, int dataLen) { - int ret = rda5981_erase_flash(0x180fc000, 0x1000); + rda5981_erase_flash(0x180fc000, 0x1000); return rda5981_write_flash(0x180fc000, src, dataLen) == 0; } diff --git a/src/hal/rda5981/hal_flashVars_rda5981.c b/src/hal/rda5981/hal_flashVars_rda5981.c index 5665fe046..1afb913cf 100644 --- a/src/hal/rda5981/hal_flashVars_rda5981.c +++ b/src/hal/rda5981/hal_flashVars_rda5981.c @@ -18,14 +18,14 @@ extern void InitEasyFlashIfNeeded(); static int ReadFlashVars(void* target, int dataLen) { - g_loaded = rda5981_read_user_data(target, dataLen, BIT18) == 0; + g_loaded = rda5981_read_flash(0x180fd000, target, dataLen) == 0; return dataLen; } static int SaveFlashVars(void* src, int dataLen) { - rda5981_erase_user_data(BIT18); - rda5981_write_user_data(src, dataLen, BIT18); + rda5981_erase_flash(0x180fd000, 0x1000); + rda5981_write_flash(0x180fd000, src, dataLen); return dataLen; } diff --git a/src/hal/rda5981/hal_ota_rda5981.c b/src/hal/rda5981/hal_ota_rda5981.c index 30037c7c4..09d3547d0 100644 --- a/src/hal/rda5981/hal_ota_rda5981.c +++ b/src/hal/rda5981/hal_ota_rda5981.c @@ -20,11 +20,7 @@ int http_rest_post_flash(http_request_t* request, int startaddr, int maxaddr) int ret = 0; - if (request->contentLength > 0) - { - towrite = request->contentLength; - } - else + if (request->contentLength <= 0) { ret = -1; ADDLOG_ERROR(LOG_FEATURE_OTA, "Content-length is 0"); @@ -33,29 +29,32 @@ int http_rest_post_flash(http_request_t* request, int startaddr, int maxaddr) startaddr = 0x1807E000; // if compressed ota //startaddr = 0x1809C000; - if(rda5981_write_partition_start(startaddr, towrite) != 0) + int ret1 = rda5981_write_partition_start(startaddr, towrite + (towrite % 4096)); + if(ret1 != 0) { - ret = -1; - ADDLOG_ERROR(LOG_FEATURE_OTA, "rda5981_write_partition_start failed"); - goto update_ota_exit; + //ret = -1; + ADDLOG_ERROR(LOG_FEATURE_OTA, "rda5981_write_partition_start failed. %i", ret); + //goto update_ota_exit; } do { - if(rda5981_write_partition(startaddr, (unsigned char*)writebuf, writelen) != 0) + ADDLOG_DEBUG(LOG_FEATURE_OTA, "Writelen %i at %i", writelen, total); + ret1 = rda5981_write_partition(startaddr, (unsigned char*)writebuf, writelen); + if(ret1 != 0) { ret = -1; + ADDLOG_ERROR(LOG_FEATURE_OTA, "rda5981_write_partition failed. %i", ret1); goto update_ota_exit; } delay_ms(5); - ADDLOG_DEBUG(LOG_FEATURE_OTA, "Writelen %i at %i", writelen, total); total += writelen; startaddr += writelen; towrite -= writelen; if (towrite > 0) { writebuf = request->received; - writelen = recv(request->fd, writebuf, 2048, 0); + writelen = recv(request->fd, writebuf, 1024, 0); if (writelen < 0) { ADDLOG_DEBUG(LOG_FEATURE_OTA, "recv returned %d - end of data - remaining %d", writelen, towrite); @@ -67,7 +66,7 @@ int http_rest_post_flash(http_request_t* request, int startaddr, int maxaddr) int check = rda5981_write_partition_end(); if(check != 0) { - ADDLOG_ERROR(LOG_FEATURE_OTA, "rda5981_write_partition_end failed"); + ADDLOG_ERROR(LOG_FEATURE_OTA, "rda5981_write_partition_end failed, %i", check); ret = -1; } update_ota_exit: diff --git a/src/littlefs/our_lfs.h b/src/littlefs/our_lfs.h index a73ac7723..552f51fd1 100644 --- a/src/littlefs/our_lfs.h +++ b/src/littlefs/our_lfs.h @@ -159,8 +159,8 @@ #elif PLATFORM_RDA5981 -#define LFS_BLOCKS_START 0xFD000 -#define LFS_BLOCKS_START_MIN 0xFD000 +#define LFS_BLOCKS_START 0xFE000 +#define LFS_BLOCKS_START_MIN 0xFE000 #define LFS_BLOCKS_END 0x100000 #else