This commit is contained in:
cfif 2024-12-04 13:10:48 +03:00
commit 2c71246c93
3 changed files with 80 additions and 0 deletions

12
Inc/BootJump.h Normal file
View File

@ -0,0 +1,12 @@
//
// Created by xemon on 02.11.22.
//
#ifndef UVEOS_ON_NATION_BOOTLOADER_JUMP_H
#define UVEOS_ON_NATION_BOOTLOADER_JUMP_H
#include "stdint.h"
void BootJumpToAddress(const uint32_t address);
#endif //UVEOS_ON_NATION_BOOTLOADER_JUMP_H

51
Src/BootJump.c Normal file
View File

@ -0,0 +1,51 @@
//
// Created by xemon on 02.11.22.
//
#include "n32g45x.h"
typedef void (*pFunction)(void);
#pragma GCC push_options
#pragma GCC optimize ("O0")
void BootJumpToAddress(const uint32_t address) {
uint32_t appStack;
pFunction appEntry;
// get the application stack pointer (1st entry in the app vector table)
appStack = (uint32_t) *((__IO uint32_t *) address);
// Get the app entry point (2nd entry in the app vector table
appEntry = (pFunction) *(__IO uint32_t *) (address + 4);
// HAL_RCC_DeInit();
// HAL_DeInit();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
uint32_t i = SCB->VTOR;
i++;
// Reconfigure vector table offset to match the app location
//#if (SET_VECTOR_TABLE)
// SCB->VTOR = address;
//#endif
//
//// __disable_irq(); // disable interrupt
//// __enable_irq();
//// __set_PRIMASK(1);
// __set_MSP(appStack); // Set app stack pointer
__disable_irq();
__set_MSP(appStack);
SCB->VTOR = address;
__enable_irq();
appEntry(); // Start the app
while (1); // never reached
}
#pragma GCC pop_options

17
modular.json Normal file
View File

@ -0,0 +1,17 @@
{
"dep": [
{
"type": "git",
"provider": "NAVIGATOR_UVEOS_NATION_TELIT",
"repo": "PeripheralDriver_NATION_N32G45X"
}
],
"cmake": {
"inc_dirs": [
"Inc"
],
"srcs": [
"Src/**.c"
]
}
}