-
Notifications
You must be signed in to change notification settings - Fork 990
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
STM32F103C8 EEPROM FLASH_BASE_ADDRESS has wrong value #1500
Comments
HI @mczerski |
FLASH_END which is defined in CMSIS file doesn't take into account the real flash size of a the device, (it is just the maximum possible within the productline). Fixes stm32duino#1316, fixes stm32duino#1500 Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
Where is best to define this value for a Board/Variant? |
Variant_*.h |
Could this maybe be related to my problem? STMicroelectronics/OpenOCD#23 |
No, this issue is related to EEPROM library usage, which emulate an eeprom in flash. |
Maybe that's a very basic question, but how should those values be actually calculated? If defining correct values would help, is there any good way to calculate / verifiy them? |
Hi @gregbarski So only 2k should be used by default. So if your project is lesser that flash size - 2k, it should work if not then you should not use the EEPROM emulation. |
@fpistm Thank you. I try to base on the same datasheet. My device has 31 pages of main memory. The project takes: I'll keep searching. |
Right, normally, it should be ok. |
Yes, I did. Considering "empty" project, it's possible to write/update each single flash "cell" inside of |
@fpistm Is it possible to change the program memory size dynamically when Virtual EEPROM is enabled? |
No. |
I've tested with a Disco G031 the ut and get examples and it works as expected. My guess is the RAM is too small for your use case. |
Thank you for this investigation. I'll be testing it according to this path and will share the results. |
For STM32F103C8 device the FLASH_BASE_ADDRESS in libraries/EEPROM/src/utility/stm32_eeprom.c is calculated as (line 84):
where FLASH_END is defined as FLASH_BANK1_END (line 64) which in turn is defined as 0x0801FFFFUL (system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:574) which is outside of the declared flash size for the STM32F103C8 device which is 64k not 128k.
I guess this works for genuine STM32 chips which usually have 128k despite the declared 64k. I found this issue while using fake CH32F103C8 chips (due to f... COVID 19 genuine stm32 are priced as gold) and those actually have 64k of flash :(
version:
Arduino_Core_STM32 current master
The text was updated successfully, but these errors were encountered: