-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathboot_nor.hh
38 lines (32 loc) · 907 Bytes
/
boot_nor.hh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once
#include "boot_image_def.hh"
#include "boot_loader.hh"
#include "drivers/pinconf.hh"
#include "norflash/qspi_norflash_read.h"
#include "print_messages.hh"
#include <cstdint>
struct BootNorLoader : BootLoader {
BootNorLoader()
{
PinConf d2{GPIO::F, PinNum::_7, PinAF::AF_9};
PinConf d3{GPIO::A, PinNum::_1, PinAF::AF_9};
d2.init(PinMode::Alt);
d3.init(PinMode::Alt);
QSPI_init();
}
BootImageDef::image_header read_image_header() override
{
BootImageDef::image_header header;
auto ok = QSPI_read_MM((uint8_t *)(&header), BootImageDef::NorFlashSSBLAddr, BootImageDef::HeaderSize);
if (!ok) {
pr_err("Failed reading NOR Flash\n");
return {};
}
return header;
}
bool load_image(uint32_t load_addr, uint32_t size) override
{
auto load_dst = reinterpret_cast<uint8_t *>(load_addr);
return QSPI_read_MM(load_dst, BootImageDef::NorFlashSSBLAddr, size);
}
};