 aa24484b99
			
		
	
	
		aa24484b99
		
			
		
	
	
	
	
		
			
			* Add littlefs submodule * Furi: add mutex in logging, fix issues with corrupted printf * ApiHal: disable debug traces in ble glue * App-loader: more logs * Passport: fix invalid DolphinState usage * ApiHal, linker script: flash API is now aware of free space, complete abstraction layer for storage * Internal Storage: littlefs based storage services with key value API. Migrate dolphin state to new storage API.
		
			
				
	
	
		
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <stdbool.h>
 | |
| #include <stdint.h>
 | |
| #include <stddef.h>
 | |
| 
 | |
| /** Get flash base address
 | |
|  * @return pointer to flash base
 | |
|  */
 | |
| size_t api_hal_flash_get_base();
 | |
| 
 | |
| /** Get flash read block size
 | |
|  * @return size in bytes
 | |
|  */
 | |
| size_t api_hal_flash_get_read_block_size();
 | |
| 
 | |
| /** Get flash write block size
 | |
|  * @return size in bytes
 | |
|  */
 | |
| size_t api_hal_flash_get_write_block_size();
 | |
| 
 | |
| /** Get flash page size
 | |
|  * @return size in bytes
 | |
|  */
 | |
| size_t api_hal_flash_get_page_size();
 | |
| 
 | |
| /** Get expected flash cycles count
 | |
|  * @return count of erase-write operations 
 | |
|  */
 | |
| size_t api_hal_flash_get_cycles_count();
 | |
| 
 | |
| /** Get free flash start address
 | |
|  * @return pointer to free region start
 | |
|  */
 | |
| const void* api_hal_flash_get_free_start_address();
 | |
| 
 | |
| /** Get free flash end address
 | |
|  * @return pointer to free region end
 | |
|  */
 | |
| const void* api_hal_flash_get_free_end_address();
 | |
| 
 | |
| /** Get first free page start address
 | |
|  * @return first free page memory address
 | |
|  */
 | |
| size_t api_hal_flash_get_free_page_start_address();
 | |
| 
 | |
| /** Get free page count
 | |
|  * @return free page count
 | |
|  */
 | |
| size_t api_hal_flash_get_free_page_count();
 | |
| 
 | |
| /*
 | |
|  * Erase Flash
 | |
|  * Locking operation, uses HSEM to manage shared access.
 | |
|  * @param page, page number
 | |
|  * @param count, page count to erase
 | |
|  */
 | |
| bool api_hal_flash_erase(uint8_t page, uint8_t count);
 | |
| 
 | |
| /*
 | |
|  * Write double word (64 bits)
 | |
|  * Locking operation, uses HSEM to manage shared access.
 | |
|  * @param address - destination address, must be double word aligned.
 | |
|  * @param data - data to write
 | |
|  */
 | |
| bool api_hal_flash_write_dword(size_t address, uint64_t data);
 | |
| 
 | |
| /*
 | |
|  * Write double word (64 bits) from address
 | |
|  * Locking operation, uses HSEM to manage shared access.
 | |
|  * @param address - destination address, must be block aligned
 | |
|  * @param source_address - source address
 | |
|  */
 | |
| bool api_hal_flash_write_dword_from(size_t address, size_t source_address);
 |