3535extern uint32_t __fatfs_flash_start_addr [];
3636extern uint32_t __fatfs_flash_length [];
3737
38- #define NVM_START_ADDR ((uint32_t)__fatfs_flash_start_addr + \
39- (uint32_t)__fatfs_flash_length - CIRCUITPY_INTERNAL_NVM_SIZE)
40-
4138uint32_t common_hal_nvm_bytearray_get_length (nvm_bytearray_obj_t * self ) {
42- return CIRCUITPY_INTERNAL_NVM_SIZE ;
39+ return self -> len ;
4340}
4441
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
4744 // it since we can only clear a whole page at a time.
4845
4946 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 );
5148 } else {
5249 uint8_t buffer [FLASH_PAGE_SIZE ];
53- memcpy (buffer , ( uint8_t * ) page_addr , FLASH_PAGE_SIZE );
50+ memcpy (buffer , page_addr , FLASH_PAGE_SIZE );
5451 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 );
5653 }
5754}
5855
5956bool common_hal_nvm_bytearray_set_bytes (nvm_bytearray_obj_t * self ,
6057 uint32_t start_index , uint8_t * values , uint32_t len ) {
6158
62- uint32_t address = NVM_START_ADDR + start_index ;
59+ uint32_t address = (( uint32_t ) self -> start_address ) + start_index ;
6360 uint32_t offset = address % FLASH_PAGE_SIZE ;
6461 uint32_t page_addr = address - offset ;
6562
6663 while (len ) {
6764 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 );
6966 len -= write_len ;
7067 values += write_len ;
7168 page_addr += FLASH_PAGE_SIZE ;
@@ -75,6 +72,6 @@ bool common_hal_nvm_bytearray_set_bytes(nvm_bytearray_obj_t *self,
7572}
7673
7774void 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 );
8077}
0 commit comments