CTS-SAT-1-OBC-Firmware
Loading...
Searching...
No Matches
stm32_internal_flash_drivers.h
Go to the documentation of this file.
1#ifndef INCLUDE_GUARD__STM32_INTERNAL_FLASH_DRIVERS_H__
2#define INCLUDE_GUARD__STM32_INTERNAL_FLASH_DRIVERS_H__
3
4#include <stdint.h>
5
6#include "stm32l4xx_hal.h"
7#include "stm32l4xx_hal_flash.h"
8
9#define FLASH_BANK_1_START_PAGE 0u
10#define FLASH_BANK_1_END_PAGE 255u
11#define FLASH_BANK_2_START_PAGE 256u
12#define FLASH_BANK_2_END_PAGE 511u
13#define NUMBER_OF_PAGES_PER_FLASH_BANK 256u
14
26
27typedef struct
28{
29 HAL_StatusTypeDef lock_status;
30 HAL_StatusTypeDef unlock_status;
31 HAL_StatusTypeDef write_status;
33
44
45STM32_internal_flash_write_return_t STM32_internal_flash_write(uint32_t address, uint8_t *data, uint32_t length, STM32_internal_flash_write_status_t *status);
46
47uint8_t STM32_internal_flash_read(uint32_t address, uint8_t *buffer, uint32_t length);
48
49uint8_t STM32_internal_flash_page_erase(uint8_t flash_bank, uint16_t start_page_erase, uint16_t number_of_pages_to_erase, uint32_t *page_error);
50
51uint8_t STM32_internal_flash_bank_erase(uint8_t flash_bank, uint32_t *bank_erase_error);
52
53uint8_t STM32_internal_flash_get_option_bytes(FLASH_OBProgramInitTypeDef *ob_data);
54
55uint8_t STM32_internal_flash_set_active_flash_bank(uint8_t wanted_active_flash_bank);
56
58
59uint8_t STM32_internal_flash_what_bank_is_this_address(uint32_t address, uint32_t length);
60
62 uint32_t address,
63 uint32_t length,
64 uint8_t hash[32]
65);
66
67#endif // INCLUDE_GUARD__STM32_INTERNAL_FLASH_DRIVERS_H__
uint8_t STM32_internal_flash_set_active_flash_bank(uint8_t wanted_active_flash_bank)
Sets the active flash bank to either 1 or 2 (only if it is different than the current active flash ba...
Definition stm32_internal_flash_drivers.c:263
uint8_t STM32_internal_flash_bank_erase(uint8_t flash_bank, uint32_t *bank_erase_error)
Erase flash bank.
Definition stm32_internal_flash_drivers.c:196
STM32_internal_flash_write_return_t
Definition stm32_internal_flash_drivers.h:35
@ STM32_INTERNAL_FLASH_WRITE_LOCK_FAILED
Definition stm32_internal_flash_drivers.h:41
@ STM32_INTERNAL_FLASH_WRITE_OPERATION_FAILED
Definition stm32_internal_flash_drivers.h:42
@ STM32_INTERNAL_FLASH_WRITE_UNLOCK_FAILED
Definition stm32_internal_flash_drivers.h:40
@ STM32_INTERNAL_FLASH_WRITE_ADDRESS_OVERLAPS_BOTH_FLASH_BANKS
Definition stm32_internal_flash_drivers.h:39
@ STM32_INTERNAL_FLASH_WRITE_SUCCESS
Definition stm32_internal_flash_drivers.h:36
@ STM32_INTERNAL_FLASH_WRITE_ADDRESS_TOO_HIGH
Definition stm32_internal_flash_drivers.h:38
@ STM32_INTERNAL_FLASH_WRITE_ADDRESS_TOO_LOW
Definition stm32_internal_flash_drivers.h:37
uint8_t STM32_internal_flash_what_bank_is_this_address(uint32_t address, uint32_t length)
Data-only operation to determine what bank (1 or 2) the address is in.
Definition stm32_internal_flash_drivers.c:337
STM32_INTERNAL_FLASH_memory_region_addresses_t
Flash Partitions.
Definition stm32_internal_flash_drivers.h:19
@ STM32_INTERNAL_FLASH_MEMORY_REGION_FLASH_BANK_1_ADDRESS
Definition stm32_internal_flash_drivers.h:23
@ STM32_INTERNAL_FLASH_MEMORY_REGION_RAM_2_ADDRESS
Definition stm32_internal_flash_drivers.h:21
@ STM32_INTERNAL_FLASH_MEMORY_REGION_FLASH_BANK_2_ADDRESS
Definition stm32_internal_flash_drivers.h:24
@ STM32_INTERNAL_FLASH_MEMORY_REGION_RAM_3_ADDRESS
Definition stm32_internal_flash_drivers.h:22
@ STM32_INTERNAL_FLASH_MEMORY_REGION_RAM_ADDRESS
Definition stm32_internal_flash_drivers.h:20
uint8_t STM32_internal_flash_get_option_bytes(FLASH_OBProgramInitTypeDef *ob_data)
Gets option bytes configuration from the stm32 internal flash memory.
Definition stm32_internal_flash_drivers.c:251
STM32_internal_flash_write_return_t STM32_internal_flash_write(uint32_t address, uint8_t *data, uint32_t length, STM32_internal_flash_write_status_t *status)
Writes data to the flash memory in chunks of 8 bytes.
Definition stm32_internal_flash_drivers.c:19
uint8_t STM32_internal_flash_read(uint32_t address, uint8_t *buffer, uint32_t length)
Reads data from the flash memory.
Definition stm32_internal_flash_drivers.c:103
uint8_t STM32_internal_flash_calculate_sha256(uint32_t address, uint32_t length, uint8_t hash[32])
Calculates the SHA256 hash of a chunk of STM32 internal flash.
Definition stm32_internal_flash_drivers.c:362
uint8_t STM32_internal_flash_get_active_flash_bank()
Returns active flash bank.
Definition stm32_internal_flash_drivers.c:326
uint8_t STM32_internal_flash_page_erase(uint8_t flash_bank, uint16_t start_page_erase, uint16_t number_of_pages_to_erase, uint32_t *page_error)
Erase pages from provided flash bank of flash memory.
Definition stm32_internal_flash_drivers.c:124
Definition stm32_internal_flash_drivers.h:28
HAL_StatusTypeDef lock_status
Definition stm32_internal_flash_drivers.h:29
HAL_StatusTypeDef unlock_status
Definition stm32_internal_flash_drivers.h:30
HAL_StatusTypeDef write_status
Definition stm32_internal_flash_drivers.h:31