35
35
extern uint32_t __fatfs_flash_start_addr [];
36
36
extern uint32_t __fatfs_flash_length [];
37
37
38
- #define NVM_START_ADDR ((uint32_t)__fatfs_flash_start_addr + \
39
- (uint32_t)__fatfs_flash_length - CIRCUITPY_INTERNAL_NVM_SIZE)
40
-
41
38
uint32_t common_hal_nvm_bytearray_get_length (nvm_bytearray_obj_t * self ) {
42
- return CIRCUITPY_INTERNAL_NVM_SIZE ;
39
+ return self -> len ;
43
40
}
44
41
45
- static void write_page (uint32_t page_addr , uint32_t offset , uint32_t len , uint8_t * bytes ) {
46
- // Write a whole page to flash, buffering it first and then erasing and rewriting
42
+ static void write_page (uint8_t * page_addr , uint32_t offset , uint32_t len , uint8_t * bytes ) {
43
+ // Write a whole page to flash, buffering it first and then erasing and rewriting
47
44
// it since we can only clear a whole page at a time.
48
45
49
46
if (offset == 0 && len == FLASH_PAGE_SIZE ) {
50
- nrf_nvm_safe_flash_page_write (page_addr , bytes );
47
+ nrf_nvm_safe_flash_page_write (( uint32_t ) page_addr , bytes );
51
48
} else {
52
49
uint8_t buffer [FLASH_PAGE_SIZE ];
53
- memcpy (buffer , ( uint8_t * ) page_addr , FLASH_PAGE_SIZE );
50
+ memcpy (buffer , page_addr , FLASH_PAGE_SIZE );
54
51
memcpy (buffer + offset , bytes , len );
55
- nrf_nvm_safe_flash_page_write (page_addr , buffer );
52
+ nrf_nvm_safe_flash_page_write (( uint32_t ) page_addr , buffer );
56
53
}
57
54
}
58
55
59
56
bool common_hal_nvm_bytearray_set_bytes (nvm_bytearray_obj_t * self ,
60
57
uint32_t start_index , uint8_t * values , uint32_t len ) {
61
58
62
- uint32_t address = NVM_START_ADDR + start_index ;
59
+ uint32_t address = (( uint32_t ) self -> start_address ) + start_index ;
63
60
uint32_t offset = address % FLASH_PAGE_SIZE ;
64
61
uint32_t page_addr = address - offset ;
65
62
66
63
while (len ) {
67
64
uint32_t write_len = MIN (len , FLASH_PAGE_SIZE - offset );
68
- write_page (page_addr , offset , write_len , values );
65
+ write_page (( uint8_t * ) page_addr , offset , write_len , values );
69
66
len -= write_len ;
70
67
values += write_len ;
71
68
page_addr += FLASH_PAGE_SIZE ;
@@ -75,6 +72,6 @@ bool common_hal_nvm_bytearray_set_bytes(nvm_bytearray_obj_t *self,
75
72
}
76
73
77
74
void common_hal_nvm_bytearray_get_bytes (nvm_bytearray_obj_t * self ,
78
- uint32_t start_index , uint32_t len , uint8_t * values ) {
79
- memcpy (values , ( uint8_t * )( NVM_START_ADDR + start_index ) , len );
75
+ uint32_t start_index , uint32_t len , uint8_t * values ) {
76
+ memcpy (values , self -> start_address + start_index , len );
80
77
}
0 commit comments