Автоопределение JTAG
This commit is contained in:
parent
3651bb6161
commit
6f14e36bf9
62
APP/main.c
62
APP/main.c
|
|
@ -12,34 +12,6 @@
|
|||
#define _BootloaderBegin 0x01000000
|
||||
#define _FirmwareMainBegin (_BootloaderBegin + _BootloaderSize)
|
||||
|
||||
/*
|
||||
static void swap_bank(uint8_t eBank)
|
||||
{
|
||||
uint32_t u32RegVal = FMC1->OTA_CTRL[1];
|
||||
|
||||
if (u32RegVal == 0U) { // Аппаратный OTA не включен
|
||||
|
||||
// 1. Снимаем блокировку OTA (бит 6 = 0)
|
||||
u32RegVal &= ~(1u << 6u);
|
||||
|
||||
// 2. Устанавливаем активный банк (бит 5)
|
||||
if (0 == eBank) {
|
||||
u32RegVal &= ~(1u << 5u); // Банк 0
|
||||
} else {
|
||||
u32RegVal |= (1u << 5u); // Банк 1
|
||||
}
|
||||
|
||||
// 3. Устанавливаем OTA_EN = 0xA (биты 4-0)
|
||||
// НЕЛЬЗЯ использовать & ~0x1F, потому что это сбросит бит 5!
|
||||
u32RegVal = (u32RegVal & ~0x1F) | 0xA; // ← ОСТАВЛЯЕМ БИТ 5
|
||||
|
||||
// 4. Записываем обратно
|
||||
FMC1->OTA_CTRL[1] = u32RegVal;
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#define FMC_FB_FPELCK_COUNT_V2 3
|
||||
#define FMC_FB_CPELCK_COUNT_V2 2
|
||||
#define FMC_OTA_VER_LOC_COUNT_V2 2
|
||||
|
|
@ -81,18 +53,11 @@ static void swap_bank(uint8_t eBank) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void DefaultISR(void) {
|
||||
// *((volatile unsigned int *)(0x40014030)) = 0x00000A55;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//#define vPortSVCHandler SVC_Handler
|
||||
//#define xPortPendSVHandler PendSV_Handler
|
||||
|
||||
//void xPortPendSVHandler(void) __attribute__((naked));
|
||||
//void vPortSVCHandler(void) __attribute__((naked));
|
||||
|
||||
static void Boot2App(void) {
|
||||
uint32_t u32StackAddr = *((uint32_t *) ((uint32_t) _FirmwareMainBegin));
|
||||
uint32_t u32ResetAddr = *((uint32_t *) (((uint32_t) _FirmwareMainBegin) + 4U));
|
||||
|
|
@ -109,6 +74,7 @@ static void Boot2App(void) {
|
|||
|
||||
|
||||
#define CHECK_JTAG_DEBUG_ACTIVE ((CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk) != 0)
|
||||
#define CHECK_PARALLEL_ENABLE (((*(volatile uint32_t*)0x044000E8) & 0x0000000F) != 0x00000005)
|
||||
|
||||
uint64_t NumberBank = 0;
|
||||
|
||||
|
|
@ -117,17 +83,23 @@ int main(void) {
|
|||
|
||||
if (CHECK_JTAG_DEBUG_ACTIVE) {
|
||||
D_bInternalFlashPage_Clear(0x04000000, NULL, NULL);
|
||||
}
|
||||
|
||||
NumberBank = (*(__IO uint64_t *) (0x04000000));
|
||||
|
||||
if (NumberBank == 0x1122334455667788) {
|
||||
swap_bank(1);
|
||||
} else {
|
||||
swap_bank(0);
|
||||
}
|
||||
// swap_bank(0);
|
||||
} else {
|
||||
|
||||
if (CHECK_PARALLEL_ENABLE) {
|
||||
swap_bank(0);
|
||||
} else {
|
||||
|
||||
NumberBank = (*(__IO uint64_t *) (0x04000000));
|
||||
|
||||
if (NumberBank == 0x1122334455667788) {
|
||||
swap_bank(1);
|
||||
} else {
|
||||
swap_bank(0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// BootJumpToAddress(_FirmwareMainBegin);
|
||||
// BootFastJumpToAddress(_FirmwareMainBegin);
|
||||
|
|
|
|||
Loading…
Reference in New Issue