mirror of https://github.com/ARMmbed/mbed-os.git
Merge branch 'david_flash_erase_value' of git://github.com/davidsaada/mbed-os into dev_rollup
commit
b9f9817e20
|
@ -55,9 +55,6 @@ void flashiap_program_test()
|
|||
TEST_ASSERT_TRUE(sector_size % page_size == 0);
|
||||
uint32_t prog_size = std::max(page_size, (uint32_t)8);
|
||||
uint8_t *data = new uint8_t[prog_size + 2];
|
||||
for (uint32_t i = 0; i < prog_size + 2; i++) {
|
||||
data[i] = i;
|
||||
}
|
||||
|
||||
// the one before the last sector in the system
|
||||
uint32_t address = (flash_device.get_flash_start() + flash_device.get_flash_size()) - (sector_size);
|
||||
|
@ -68,6 +65,20 @@ void flashiap_program_test()
|
|||
ret = flash_device.erase(address, sector_size);
|
||||
TEST_ASSERT_EQUAL_INT32(0, ret);
|
||||
|
||||
uint8_t erase_val = flash_device.get_erase_value();
|
||||
memset(data, erase_val, prog_size);
|
||||
|
||||
uint8_t *data_flashed = new uint8_t[prog_size];
|
||||
for (uint32_t i = 0; i < sector_size / prog_size; i++) {
|
||||
uint32_t page_addr = address + i * prog_size;
|
||||
ret = flash_device.read(data_flashed, page_addr, prog_size);
|
||||
TEST_ASSERT_EQUAL_INT32(0, ret);
|
||||
TEST_ASSERT_EQUAL_UINT8_ARRAY(data, data_flashed, prog_size);
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < prog_size + 2; i++) {
|
||||
data[i] = i;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < sector_size / prog_size; i++) {
|
||||
uint32_t prog_addr = address + i * prog_size;
|
||||
|
@ -75,7 +86,6 @@ void flashiap_program_test()
|
|||
TEST_ASSERT_EQUAL_INT32(0, ret);
|
||||
}
|
||||
|
||||
uint8_t *data_flashed = new uint8_t[prog_size];
|
||||
for (uint32_t i = 0; i < sector_size / prog_size; i++) {
|
||||
uint32_t page_addr = address + i * prog_size;
|
||||
ret = flash_device.read(data_flashed, page_addr, prog_size);
|
||||
|
|
|
@ -227,6 +227,20 @@ bd_size_t FlashIAPBlockDevice::get_erase_size(bd_addr_t addr) const
|
|||
return erase_size;
|
||||
}
|
||||
|
||||
int FlashIAPBlockDevice::get_erase_value() const
|
||||
{
|
||||
if (!_is_initialized) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
uint8_t erase_val = _flash.get_erase_value();
|
||||
|
||||
DEBUG_PRINTF("get_erase_value: %" PRIX8 "\r\n", erase_val);
|
||||
|
||||
return erase_val;
|
||||
}
|
||||
|
||||
|
||||
bd_size_t FlashIAPBlockDevice::size() const
|
||||
{
|
||||
DEBUG_PRINTF("size: %" PRIX64 "\r\n", _size);
|
||||
|
|
|
@ -109,6 +109,12 @@ public:
|
|||
*/
|
||||
virtual bd_size_t get_erase_size(bd_addr_t addr) const;
|
||||
|
||||
/** Get the value of storage when erased
|
||||
*
|
||||
* @return The value of storage when erased
|
||||
*/
|
||||
virtual int get_erase_value() const;
|
||||
|
||||
/** Get the total size of the underlying device
|
||||
*
|
||||
* @return Size of the underlying device in bytes
|
||||
|
|
|
@ -203,6 +203,11 @@ uint32_t FlashIAP::get_flash_size() const
|
|||
return flash_get_size(&_flash);
|
||||
}
|
||||
|
||||
uint8_t FlashIAP::get_erase_value() const
|
||||
{
|
||||
return flash_get_erase_value(&_flash);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -131,6 +131,13 @@ public:
|
|||
*/
|
||||
uint32_t get_page_size() const;
|
||||
|
||||
/** Get the flash erase value
|
||||
*
|
||||
* Get the value we read after erase operation
|
||||
* @return flash erase value
|
||||
*/
|
||||
uint8_t get_erase_value() const;
|
||||
|
||||
private:
|
||||
|
||||
/* Check if address and size are aligned to a sector
|
||||
|
|
|
@ -260,4 +260,11 @@ MBED_NONSECURE_ENTRY uint32_t flash_get_size(const flash_t *obj)
|
|||
return obj->target_config->flash_size;
|
||||
}
|
||||
|
||||
MBED_NONSECURE_ENTRY uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif // #ifndef DOMAIN_NS
|
||||
|
|
|
@ -117,6 +117,13 @@ uint32_t flash_get_start_address(const flash_t *obj);
|
|||
*/
|
||||
uint32_t flash_get_size(const flash_t *obj);
|
||||
|
||||
/** Get the flash erase value
|
||||
*
|
||||
* @param obj The flash object
|
||||
* @return The flash erase value
|
||||
*/
|
||||
uint8_t flash_get_erase_value(const flash_t *obj);
|
||||
|
||||
/**@}*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -101,3 +101,10 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
|
||||
return ZBT_SRAM1_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
|
|
@ -101,3 +101,10 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
|
||||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
|
|
@ -82,4 +82,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return CY_FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif // DEVICE_FLASH
|
||||
|
|
|
@ -148,4 +148,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
#endif
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -195,6 +195,13 @@ uint32_t flash_get_start_address(const flash_t *obj)
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/** @}*/
|
||||
|
|
|
@ -209,4 +209,11 @@ uint32_t flash_get_start_address(const flash_t *obj)
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -134,4 +134,12 @@ void flash_set_target_config(flash_t *obj)
|
|||
}
|
||||
|
||||
#endif // #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
|
||||
|
||||
MBED_NONSECURE_ENTRY uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif // #if DEVICE_FLASH
|
||||
|
|
|
@ -200,4 +200,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return 0x80000;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -122,4 +122,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FSL_FEATURE_SYSCON_FLASH_SIZE_BYTES;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -751,4 +751,12 @@ static void cache_control(void)
|
|||
__DSB(); // ensure completion of the invalidation
|
||||
__ISB(); // ensure instruction fetch path sees new I cache state
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -69,3 +69,10 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
|
|
|
@ -172,4 +172,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -172,4 +172,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -215,4 +215,11 @@ static uint32_t GetSectorSize(uint32_t Sector)
|
|||
return sectorsize;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -172,4 +172,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -230,4 +230,11 @@ static uint32_t GetSectorSize(uint32_t Sector)
|
|||
return sectorsize;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -265,4 +265,11 @@ static uint32_t GetSectorSize(uint32_t Sector)
|
|||
return sectorsize;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -174,4 +174,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -171,4 +171,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -284,4 +284,11 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -144,4 +144,16 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
return FLASH_SIZE;
|
||||
}
|
||||
|
||||
/** Get the flash erase value
|
||||
*
|
||||
* @param obj The flash object
|
||||
* @return The flash erase value
|
||||
*/
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
#endif // DEVICE_FLASH
|
||||
|
|
|
@ -162,3 +162,14 @@ uint32_t flash_get_size(const flash_t *obj)
|
|||
{
|
||||
return FLASH_CHIP_SIZE;
|
||||
}
|
||||
|
||||
#if defined ( __ICCARM__ ) /* IAR Compiler */
|
||||
#pragma location = "FLASH_ROM"
|
||||
#endif
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
|
|
|
@ -121,3 +121,10 @@ static void internal_hosc_enable(void)
|
|||
work = (uint32_t)(TSB_CG->OSCCR & ~CGOSCCR_IHOSC1EN_MASK);
|
||||
TSB_CG->OSCCR = (uint32_t)(work | CGOSCCR_IHOSC1EN_RW_ENABLE);
|
||||
}
|
||||
|
||||
uint8_t flash_get_erase_value(const flash_t *obj)
|
||||
{
|
||||
(void)obj;
|
||||
|
||||
return 0xFF;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue