rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
backup_ram.cpp
Go to the documentation of this file.
1/**
2 * @file backup_ram.cpp
3 *
4 * @date Dec 19, 2017
5 */
6
7#include "backup_ram.h"
8
10#if HAL_USE_RTC
11 switch (idx) {
13 return RTCD1.rtc->BKP0R & 0xffff;
15 return (RTCD1.rtc->BKP0R >> 16) & 0xff;
16 default:
17 criticalError("Invalid backup ram idx %d", (int)idx);
18 return 0;
19 }
20#else
21 return 0;
22#endif /* HAL_USE_RTC */
23}
24
25void backupRamSave(backup_ram_e idx, uint32_t value) {
26#if HAL_USE_RTC
27 switch (idx) {
29 RTCD1.rtc->BKP0R = (RTCD1.rtc->BKP0R & ~0x0000ffff) | (value & 0xffff);
30 break;
32 RTCD1.rtc->BKP0R = (RTCD1.rtc->BKP0R & ~0x00ff0000) | ((value & 0xff) << 16);
33 break;
34 default:
35 criticalError("Invalid backup ram idx %d, value %lx", (int)idx, value);
36 break;
37 }
38#endif /* HAL_USE_RTC */
39}
40
41#if !defined(AT32F4XX)
42
43void backupRamFlush(void) {
44 // nothing to do here, in STM32 all data is saved instantaneously
45}
46
47// STM32 only has 4k bytes of backup SRAM
48static_assert(sizeof(BackupSramData) <= 4096);
49
50static BKUP_RAM_NOINIT BackupSramData backupSramData;
51
55
56#endif
Non-volatile backup-RAM registers support.
backup_ram_e
Definition backup_ram.h:14
uint32_t backupRamLoad(backup_ram_e idx)
void backupRamSave(backup_ram_e idx, uint32_t value)
void backupRamFlush(void)
BackupSramData * getBackupSram()
static BKUP_RAM_NOINIT BackupSramData backupSramData