mirror of https://github.com/ArduPilot/ardupilot
AP_Bootloader: add support for app start offset
This commit is contained in:
parent
1f16aa8360
commit
2edcd852eb
|
@ -51,9 +51,9 @@ int main(void)
|
|||
{
|
||||
board_info.board_type = APJ_BOARD_ID;
|
||||
board_info.board_rev = 0;
|
||||
board_info.fw_size = (BOARD_FLASH_SIZE - (FLASH_BOOTLOADER_LOAD_KB + FLASH_RESERVE_END_KB))*1024;
|
||||
board_info.fw_size = (BOARD_FLASH_SIZE - (FLASH_BOOTLOADER_LOAD_KB + FLASH_RESERVE_END_KB + APP_START_OFFSET_KB))*1024;
|
||||
if (BOARD_FLASH_SIZE > 1024 && check_limit_flash_1M()) {
|
||||
board_info.fw_size = (1024 - FLASH_BOOTLOADER_LOAD_KB)*1024;
|
||||
board_info.fw_size = (1024 - (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB))*1024;
|
||||
}
|
||||
|
||||
bool try_boot = false;
|
||||
|
|
|
@ -203,7 +203,7 @@ do_jump(uint32_t stacktop, uint32_t entrypoint)
|
|||
: : "r"(stacktop), "r"(entrypoint) :);
|
||||
}
|
||||
|
||||
#define APP_START_ADDRESS (FLASH_LOAD_ADDRESS + FLASH_BOOTLOADER_LOAD_KB*1024U)
|
||||
#define APP_START_ADDRESS (FLASH_LOAD_ADDRESS + (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB)*1024U)
|
||||
|
||||
void
|
||||
jump_to_app()
|
||||
|
|
|
@ -569,8 +569,8 @@ bool can_check_firmware(void)
|
|||
return false;
|
||||
}
|
||||
const uint8_t sig[8] = { 0x40, 0xa2, 0xe4, 0xf1, 0x64, 0x68, 0x91, 0x06 };
|
||||
const uint8_t *flash = (const uint8_t *)(FLASH_LOAD_ADDRESS + FLASH_BOOTLOADER_LOAD_KB*1024);
|
||||
const uint32_t flash_size = (BOARD_FLASH_SIZE - FLASH_BOOTLOADER_LOAD_KB)*1024;
|
||||
const uint8_t *flash = (const uint8_t *)(FLASH_LOAD_ADDRESS + (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB)*1024);
|
||||
const uint32_t flash_size = (BOARD_FLASH_SIZE - (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB))*1024;
|
||||
const app_descriptor *ad = (const app_descriptor *)memmem(flash, flash_size-sizeof(app_descriptor), sig, sizeof(sig));
|
||||
if (ad == nullptr) {
|
||||
// no application signature
|
||||
|
|
|
@ -71,7 +71,7 @@ void cout(uint8_t *data, uint32_t len)
|
|||
|
||||
static uint32_t flash_base_page;
|
||||
static uint8_t num_pages;
|
||||
static const uint8_t *flash_base = (const uint8_t *)(0x08000000 + FLASH_BOOTLOADER_LOAD_KB*1024U);
|
||||
static const uint8_t *flash_base = (const uint8_t *)(0x08000000 + (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB)*1024U);
|
||||
|
||||
/*
|
||||
initialise flash_base_page and num_pages
|
||||
|
@ -81,9 +81,9 @@ void flash_init(void)
|
|||
uint32_t reserved = 0;
|
||||
num_pages = stm32_flash_getnumpages();
|
||||
/*
|
||||
advance flash_base_page to account for FLASH_BOOTLOADER_LOAD_KB
|
||||
advance flash_base_page to account for (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB)
|
||||
*/
|
||||
while (reserved < FLASH_BOOTLOADER_LOAD_KB * 1024U &&
|
||||
while (reserved < (FLASH_BOOTLOADER_LOAD_KB + APP_START_OFFSET_KB) * 1024U &&
|
||||
flash_base_page < num_pages) {
|
||||
reserved += stm32_flash_getpagesize(flash_base_page);
|
||||
flash_base_page++;
|
||||
|
@ -104,7 +104,7 @@ void flash_set_keep_unlocked(bool set)
|
|||
}
|
||||
|
||||
/*
|
||||
read a word at offset relative to FLASH_BOOTLOADER_LOAD_KB
|
||||
read a word at offset relative to flash base
|
||||
*/
|
||||
uint32_t flash_func_read_word(uint32_t offset)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue