From e1f1f83dc816fe325d8e68061a15e5985a4a5227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Fri, 22 Apr 2022 23:34:58 +0200 Subject: [PATCH] [realtek-ambz] Fix reading flash ID and size --- arduino/realtek-ambz/cores/arduino/rtl_sys.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/arduino/realtek-ambz/cores/arduino/rtl_sys.cpp b/arduino/realtek-ambz/cores/arduino/rtl_sys.cpp index b9bbadb..c190795 100644 --- a/arduino/realtek-ambz/cores/arduino/rtl_sys.cpp +++ b/arduino/realtek-ambz/cores/arduino/rtl_sys.cpp @@ -79,16 +79,16 @@ void sys_info(void) { HalGetCpuClk(), xPortGetFreeHeapSize(), tcm_heap_freeSpace()); } -flash_t flashobj; bool fspic_isinit = false; unsigned int GetFlashSize(void) { unsigned int FlashSize; - if(!fspic_isinit) flash_get_status(&flashobj); + if(!fspic_isinit) flash_get_status(NULL); fspic_isinit = true; - uint8_t* flash_id = *(uint8_t**)(&flashobj.SpicInitPara.FLASH_Id); - if(flash_id[3] >= 0x14 && flash_id[0] <= 0x19) { + uint8_t flash_id[3]; + flash_read_id(NULL, flash_id, 3); + if(flash_id[2] >= 0x14 && flash_id[2] <= 0x19) { FlashSize = 1<<(flash_id[2]); // Flash size in bytes } else FlashSize = 1024*1024; // 1 mbytes @@ -97,9 +97,10 @@ unsigned int GetFlashSize(void) unsigned int GetFlashId(void) { - if(!fspic_isinit) flash_get_status(&flashobj); + if(!fspic_isinit) flash_get_status(NULL); fspic_isinit = true; - uint8_t* flash_id = *(uint8_t**)(&flashobj.SpicInitPara.FLASH_Id); + uint8_t flash_id[3]; + flash_read_id(NULL, flash_id, 3); return (flash_id[0]<<16) | (flash_id[1]<<8) | flash_id[2]; }