mirror of https://github.com/wolfSSL/wolfBoot.git
Improvements to the clock calculation code (dynamic based on ratio). Remove execute bits on files. Make stage1 PIC. Disable L1/L2 for first stage. Add PLT/GOT to .data region.
parent
89b2303b87
commit
6f24981f03
7
arch.mk
7
arch.mk
|
@ -316,15 +316,16 @@ endif
|
||||||
|
|
||||||
ifeq ($(TARGET),nxp_p1021)
|
ifeq ($(TARGET),nxp_p1021)
|
||||||
# Power PC big endian
|
# Power PC big endian
|
||||||
ARCH_FLAGS=-m32 -mhard-float -mcpu=e500mc
|
ARCH_FLAGS=-m32 -mhard-float -mcpu=e500mc -mno-powerpc64
|
||||||
|
ARCH_FLAGS+=-fno-builtin -ffreestanding -nostartfiles
|
||||||
|
ARCH_FLAGS+=-mno-pointers-to-nested-functions
|
||||||
CFLAGS+=$(ARCH_FLAGS) -DBIG_ENDIAN_ORDER
|
CFLAGS+=$(ARCH_FLAGS) -DBIG_ENDIAN_ORDER
|
||||||
CFLAGS+=-DWOLFBOOT_DUALBOOT
|
CFLAGS+=-DWOLFBOOT_DUALBOOT
|
||||||
CFLAGS+=-pipe # use pipes instead of temp files
|
CFLAGS+=-pipe # use pipes instead of temp files
|
||||||
CFLAGS+=-feliminate-unused-debug-types
|
|
||||||
LDFLAGS+=$(ARCH_FLAGS)
|
LDFLAGS+=$(ARCH_FLAGS)
|
||||||
LDFLAGS+=-Wl,--hash-style=both # generate both sysv and gnu symbol hash table
|
|
||||||
LDFLAGS+=-Wl,--as-needed # remove weak functions not used
|
LDFLAGS+=-Wl,--as-needed # remove weak functions not used
|
||||||
UPDATE_OBJS:=src/update_ram.o
|
UPDATE_OBJS:=src/update_ram.o
|
||||||
|
|
||||||
ifeq ($(SPMATH),1)
|
ifeq ($(SPMATH),1)
|
||||||
MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
|
MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
|
||||||
else
|
else
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
#define ENABLE_ELBC
|
#define ENABLE_ELBC
|
||||||
#define ENABLE_DDR
|
#define ENABLE_DDR
|
||||||
|
#define ENABLE_BUS_CLK_CALC
|
||||||
#ifndef BUILD_LOADER_STAGE1
|
#ifndef BUILD_LOADER_STAGE1
|
||||||
#define ENABLE_PCIE
|
#define ENABLE_PCIE
|
||||||
#define ENABLE_CPLD /* Board Configuration and Status Registers (BCSR) */
|
#define ENABLE_CPLD /* Board Configuration and Status Registers (BCSR) */
|
||||||
|
@ -60,10 +60,11 @@ static int test_tpm(void);
|
||||||
|
|
||||||
|
|
||||||
/* P1021 Platform */
|
/* P1021 Platform */
|
||||||
//#define SYS_CLK (533000000) /* 533MHz */
|
/* System input clock */
|
||||||
#define SYS_CLK (400000000) /* 400MHz */
|
#define SYS_CLK (66666666) /* 66.666666 MHz */
|
||||||
|
|
||||||
#define RESET_BPTR ((volatile uint32_t*)(CCSRBAR + 0x42)) /* Boot page translation register */
|
/* Boot page translation register */
|
||||||
|
#define RESET_BPTR ((volatile uint32_t*)(CCSRBAR + 0x42))
|
||||||
|
|
||||||
/* Global Utilities (GUTS) */
|
/* Global Utilities (GUTS) */
|
||||||
#define GUTS_BASE (CCSRBAR + 0xE0000)
|
#define GUTS_BASE (CCSRBAR + 0xE0000)
|
||||||
|
@ -426,12 +427,25 @@ enum elbc_amask_sizes {
|
||||||
#define ESPI_CSMODE_CSAFT(x) (((x) & 0xF) << 8) /* CS assertion time in bits after frame end */
|
#define ESPI_CSMODE_CSAFT(x) (((x) & 0xF) << 8) /* CS assertion time in bits after frame end */
|
||||||
#define ESPI_CSMODE_CSCG(x) (((x) & 0xF) << 3) /* Clock gaps between transmitted frames according to this size */
|
#define ESPI_CSMODE_CSCG(x) (((x) & 0xF) << 3) /* Clock gaps between transmitted frames according to this size */
|
||||||
|
|
||||||
|
static uint32_t hal_get_bus_clk(void)
|
||||||
|
{
|
||||||
|
uint32_t bus_clk;
|
||||||
|
#ifdef ENABLE_BUS_CLK_CALC
|
||||||
|
/* compute bus clock (system input 66MHz * ratio */
|
||||||
|
uint32_t plat_ratio = get32(GUTS_PORPLLSR);
|
||||||
|
/* mask and shift by 1 to get platform ratio */
|
||||||
|
plat_ratio = ((plat_ratio & 0x3E) >> 1);
|
||||||
|
bus_clk = SYS_CLK * plat_ratio;
|
||||||
|
return bus_clk;
|
||||||
|
#else
|
||||||
|
return (uint32_t)(SYS_CLK * 6); /* can also be 8 */
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(ENABLE_ESPI) || defined(ENABLE_DDR)
|
#if defined(ENABLE_ESPI) || defined(ENABLE_DDR)
|
||||||
static void udelay(unsigned long delay_us)
|
static void udelay(unsigned long delay_us)
|
||||||
{
|
{
|
||||||
static const uint32_t oneus = (SYS_CLK / 1000000);
|
delay_us *= (hal_get_bus_clk() / 1000000);
|
||||||
delay_us *= oneus;
|
|
||||||
wait_ticks(delay_us);
|
wait_ticks(delay_us);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -439,7 +453,7 @@ static void udelay(unsigned long delay_us)
|
||||||
#ifdef ENABLE_ESPI
|
#ifdef ENABLE_ESPI
|
||||||
void hal_espi_init(uint32_t cs, uint32_t clock_hz, uint32_t mode)
|
void hal_espi_init(uint32_t cs, uint32_t clock_hz, uint32_t mode)
|
||||||
{
|
{
|
||||||
uint32_t spibrg = SYS_CLK / 2, pm, csmode;
|
uint32_t spibrg = hal_get_bus_clk() / 2, pm, csmode;
|
||||||
|
|
||||||
/* Enable eSPI with TX threadshold 4 and TX threshold 3 */
|
/* Enable eSPI with TX threadshold 4 and TX threshold 3 */
|
||||||
set32(ESPI_SPMODE, (ESPI_SPMODE_EN | ESPI_SPMODE_TXTHR(4) |
|
set32(ESPI_SPMODE, (ESPI_SPMODE_EN | ESPI_SPMODE_TXTHR(4) |
|
||||||
|
@ -536,17 +550,8 @@ void uart_init(void)
|
||||||
/* calc divisor for UART
|
/* calc divisor for UART
|
||||||
* baud rate = CCSRBAR frequency ÷ (16 x [UDMB||UDLB])
|
* baud rate = CCSRBAR frequency ÷ (16 x [UDMB||UDLB])
|
||||||
*/
|
*/
|
||||||
#if 1
|
/* compute UART divisor - round up */
|
||||||
/* build time computed UART divisor */
|
uint32_t div = (hal_get_bus_clk() + (16/2 * BAUD_RATE)) / (16 * BAUD_RATE);
|
||||||
const uint32_t div = (SYS_CLK / 16 / BAUD_RATE) + 1; /* round up */
|
|
||||||
#else
|
|
||||||
/* example for how to compute based on PORPLLSR */
|
|
||||||
uint32_t plat_ratio, bus_clk, div;
|
|
||||||
plat_ratio = (get32(GUTS_PORPLLSR) & 0x0000003E);
|
|
||||||
plat_ratio >>= 1; /* divide by two */
|
|
||||||
bus_clk = plat_ratio * SYS_CLK;
|
|
||||||
div = (bus_clk / 16 / BAUD_RATE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (!(get8(UART_LSR(UART_SEL)) & UART_LSR_TEMT))
|
while (!(get8(UART_LSR(UART_SEL)) & UART_LSR_TEMT))
|
||||||
;
|
;
|
||||||
|
@ -1066,23 +1071,11 @@ static void hal_io_init(void)
|
||||||
|
|
||||||
void hal_init(void)
|
void hal_init(void)
|
||||||
{
|
{
|
||||||
#ifdef GET_PSVR
|
|
||||||
uint32_t pvr, svr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG_UART
|
#ifdef DEBUG_UART
|
||||||
uart_init();
|
uart_init();
|
||||||
uart_write("wolfBoot HAL Init\n", 19);
|
uart_write("wolfBoot HAL Init\n", 19);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GET_PSVR
|
|
||||||
/* Platform and System version information */
|
|
||||||
pvr = GUTS_PVR;
|
|
||||||
svr = GUTS_SVR;
|
|
||||||
(void)pvr;
|
|
||||||
(void)svr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_PCIE
|
#ifdef ENABLE_PCIE
|
||||||
hal_pcie_init();
|
hal_pcie_init();
|
||||||
#endif
|
#endif
|
||||||
|
@ -1361,7 +1354,7 @@ void ext_flash_unlock(void)
|
||||||
#ifdef MMU
|
#ifdef MMU
|
||||||
void* hal_get_dts_address(void)
|
void* hal_get_dts_address(void)
|
||||||
{
|
{
|
||||||
return (void*)WOLFBOOT_LOAD_DTS_ADDRESS;
|
return NULL; /* WOLFBOOT_LOAD_DTS_ADDRESS not required */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,11 @@ ENTRY( _reset )
|
||||||
|
|
||||||
/* Adjust base address to 0xF8F80000 is debugging (run from L2 cache) */
|
/* Adjust base address to 0xF8F80000 is debugging (run from L2 cache) */
|
||||||
/* Boot ROM out of reset mapped to 0xFFFF0000 */
|
/* Boot ROM out of reset mapped to 0xFFFF0000 */
|
||||||
BASE_ADDR = 0xFFFF0000;
|
BASE_ADDR = 0xFFFF0000; /* 0xF8F80000 */
|
||||||
|
|
||||||
/* Boot ROM requires it must be < 4KB */
|
/* Boot ROM requires it must be < 4KB */
|
||||||
/* If debugging this can be increased */
|
/* If debugging this can be increased */
|
||||||
LOADER_STAGE1_SIZE = @WOLFBOOT_STAGE1_SIZE@;
|
LOADER_STAGE1_SIZE = @WOLFBOOT_STAGE1_SIZE@; /* 0x4000 */
|
||||||
|
|
||||||
/* Boot initialization code */
|
/* Boot initialization code */
|
||||||
BOOTSTRAP_TLB = BASE_ADDR;
|
BOOTSTRAP_TLB = BASE_ADDR;
|
||||||
|
@ -61,6 +61,10 @@ SECTIONS
|
||||||
.data : AT (_stored_data)
|
.data : AT (_stored_data)
|
||||||
{
|
{
|
||||||
_start_data = .;
|
_start_data = .;
|
||||||
|
KEEP(*(.iplt*))
|
||||||
|
KEEP(*(.plt*))
|
||||||
|
KEEP(*(.got1*))
|
||||||
|
KEEP(*(.got2*))
|
||||||
KEEP(*(.data*))
|
KEEP(*(.data*))
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
KEEP(*(.ramcode))
|
KEEP(*(.ramcode))
|
||||||
|
|
|
@ -26,8 +26,6 @@
|
||||||
#define CCSRBAR_DEF (0xFF700000) /* P1021RM 4.3 default base */
|
#define CCSRBAR_DEF (0xFF700000) /* P1021RM 4.3 default base */
|
||||||
#define CCSRBAR_SIZE BOOKE_PAGESZ_1M
|
#define CCSRBAR_SIZE BOOKE_PAGESZ_1M
|
||||||
#define MMU_V1
|
#define MMU_V1
|
||||||
#define ENABLE_L1_CACHE
|
|
||||||
#define ENABLE_L2_CACHE
|
|
||||||
|
|
||||||
/* Memory used for transferring blocks to/from NAND.
|
/* Memory used for transferring blocks to/from NAND.
|
||||||
* Maps to eLBC FCM internal 8KB region (by hardware) */
|
* Maps to eLBC FCM internal 8KB region (by hardware) */
|
||||||
|
@ -35,6 +33,9 @@
|
||||||
|
|
||||||
/* For full wolfBoot */
|
/* For full wolfBoot */
|
||||||
#ifndef BUILD_LOADER_STAGE1
|
#ifndef BUILD_LOADER_STAGE1
|
||||||
|
#define ENABLE_L1_CACHE
|
||||||
|
#define ENABLE_L2_CACHE
|
||||||
|
|
||||||
/* Relocate CCSRBAR */
|
/* Relocate CCSRBAR */
|
||||||
#define CCSRBAR 0xFFE00000
|
#define CCSRBAR 0xFFE00000
|
||||||
|
|
||||||
|
@ -134,6 +135,10 @@
|
||||||
#define L1_CACHE_SZ (32 * 1024)
|
#define L1_CACHE_SZ (32 * 1024)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef L1_CACHE_LINE_SIZE
|
||||||
|
#define L1_CACHE_LINE_SIZE (1 << L1_CACHE_LINE_SHIFT)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* MMU Assist Registers */
|
/* MMU Assist Registers */
|
||||||
#define MAS0 0x270
|
#define MAS0 0x270
|
||||||
|
|
|
@ -108,6 +108,31 @@ void boot_entry_C(void)
|
||||||
main();
|
main();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef BUILD_LOADER_STAGE1
|
||||||
|
void flush_cache(uint32_t start_addr, uint32_t size)
|
||||||
|
{
|
||||||
|
uint32_t addr, start, end;
|
||||||
|
|
||||||
|
start = start_addr & ~(L1_CACHE_LINE_SIZE - 1);
|
||||||
|
end = start_addr + size - 1;
|
||||||
|
|
||||||
|
for (addr = start; (addr <= end) && (addr >= start);
|
||||||
|
addr += L1_CACHE_LINE_SIZE) {
|
||||||
|
asm volatile("dcbst 0,%0" : : "r" (addr) : "memory");
|
||||||
|
}
|
||||||
|
/* wait for all dcbst to complete on bus */
|
||||||
|
asm volatile("sync" : : : "memory");
|
||||||
|
|
||||||
|
for (addr = start; (addr <= end) && (addr >= start);
|
||||||
|
addr += L1_CACHE_LINE_SIZE) {
|
||||||
|
asm volatile("icbi 0,%0" : : "r" (addr) : "memory");
|
||||||
|
}
|
||||||
|
asm volatile("sync" : : : "memory");
|
||||||
|
/* flush prefetch queue */
|
||||||
|
asm volatile("isync" : : : "memory");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MMU
|
#ifdef MMU
|
||||||
void do_boot(const uint32_t *app_offset, const uint32_t* dts_offset)
|
void do_boot(const uint32_t *app_offset, const uint32_t* dts_offset)
|
||||||
#else
|
#else
|
||||||
|
@ -119,6 +144,12 @@ void do_boot(const uint32_t *app_offset)
|
||||||
(void)dts_offset;
|
(void)dts_offset;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef BUILD_LOADER_STAGE1
|
||||||
|
/* invalidate cache */
|
||||||
|
flush_cache((uint32_t)app_offset, L1_CACHE_SZ);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* do branch unconditionally */
|
||||||
asm volatile("mtlr %0; blr":: "r"(app_offset));
|
asm volatile("mtlr %0; blr":: "r"(app_offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,12 +123,10 @@ Also see MPC8544ERM
|
||||||
|
|
||||||
_reset:
|
_reset:
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
/* CRM 9.9.2 and EREF 10.4 enable debug interrupt */
|
/* CRM 9.9.2 and EREF 10.4 enable debug interrupt */
|
||||||
/* Set MSR DE (Debug Interrupt Enable = 1) */
|
/* Set MSR DE (Debug Interrupt Enable = 1) */
|
||||||
li r1, MSR_DE
|
li r1, MSR_DE
|
||||||
mtmsr r1
|
mtmsr r1
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PLATFORM_nxp_p1021
|
#ifdef PLATFORM_nxp_p1021
|
||||||
/* Errata: A-005125 - force the core to process all snoops of IO device
|
/* Errata: A-005125 - force the core to process all snoops of IO device
|
||||||
|
@ -461,18 +459,16 @@ switch_as:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_l1:
|
setup_l1:
|
||||||
|
#ifdef ENABLE_L1_CACHE
|
||||||
/* L1 Instruction Cache */
|
/* L1 Instruction Cache */
|
||||||
l1_cache_invalidate(L1CSR1);
|
l1_cache_invalidate(L1CSR1);
|
||||||
#ifdef ENABLE_L1_CACHE
|
|
||||||
l1_cache_enable(L1CSR1);
|
l1_cache_enable(L1CSR1);
|
||||||
#endif
|
|
||||||
/* L1 Data Cache */
|
/* L1 Data Cache */
|
||||||
l1_cache_invalidate(L1CSR0);
|
l1_cache_invalidate(L1CSR0);
|
||||||
#ifdef ENABLE_L1_CACHE
|
|
||||||
l1_cache_enable(L1CSR0);
|
l1_cache_enable(L1CSR0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_L1_CACHE
|
|
||||||
l1_tlb:
|
l1_tlb:
|
||||||
|
|
||||||
/* L1: TLB 0, Supervisor X/R/W, TS=0, 16K */
|
/* L1: TLB 0, Supervisor X/R/W, TS=0, 16K */
|
||||||
|
@ -486,13 +482,15 @@ l1_tlb:
|
||||||
set_tlb(0, 0, L1_CACHE_ADDR+0x3000, L1_CACHE_ADDR+0x1000, 0,
|
set_tlb(0, 0, L1_CACHE_ADDR+0x3000, L1_CACHE_ADDR+0x1000, 0,
|
||||||
(MAS3_SX | MAS3_SW | MAS3_SR), 0, 0, BOOKE_PAGESZ_4K, 0, r3);
|
(MAS3_SX | MAS3_SW | MAS3_SR), 0, 0, BOOKE_PAGESZ_4K, 0, r3);
|
||||||
|
|
||||||
|
#ifdef ENABLE_L1_CACHE
|
||||||
l1_cache:
|
l1_cache:
|
||||||
/* setup L1 cache */
|
/* setup L1 cache */
|
||||||
lis r3, L1_CACHE_ADDR@h
|
lis r3, L1_CACHE_ADDR@h
|
||||||
ori r3, r3, L1_CACHE_ADDR@l
|
ori r3, r3, L1_CACHE_ADDR@l
|
||||||
|
/* read the cache size */
|
||||||
mfspr r2, L1CFG0
|
mfspr r2, L1CFG0
|
||||||
andi. r2, r2, 0x1FF
|
andi. r2, r2, 0x1FF
|
||||||
/* cache size * 1024 / (2 * L1 line size) */
|
/* calculate (cache size * 1024 / (2 * L1 line size)) */
|
||||||
slwi r2, r2, (10 - 1 - L1_CACHE_LINE_SHIFT)
|
slwi r2, r2, (10 - 1 - L1_CACHE_LINE_SHIFT)
|
||||||
mtctr r2
|
mtctr r2
|
||||||
li r0, 0
|
li r0, 0
|
||||||
|
@ -500,7 +498,7 @@ l1_cache:
|
||||||
l1_cache_init:
|
l1_cache_init:
|
||||||
dcbz r0, r3
|
dcbz r0, r3
|
||||||
dcbtls 0, r0, r3
|
dcbtls 0, r0, r3
|
||||||
addi r3, r3, (1 << L1_CACHE_LINE_SHIFT)
|
addi r3, r3, L1_CACHE_LINE_SIZE
|
||||||
bdnz l1_cache_init
|
bdnz l1_cache_init
|
||||||
#endif /* ENABLE_L1_CACHE */
|
#endif /* ENABLE_L1_CACHE */
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,9 @@ CFLAGS+= \
|
||||||
|
|
||||||
# Setup default optimizations (for GCC)
|
# Setup default optimizations (for GCC)
|
||||||
ifeq ($(USE_GCC_HEADLESS),1)
|
ifeq ($(USE_GCC_HEADLESS),1)
|
||||||
CFLAGS+=-Wall -Wextra -Wno-main -ffreestanding -Wno-unused -nostartfiles
|
CFLAGS+=-Wall -Wextra -Wno-main -Wno-unused
|
||||||
CFLAGS+=-ffunction-sections -fdata-sections -fomit-frame-pointer
|
CFLAGS+=-ffunction-sections -fdata-sections
|
||||||
LDFLAGS+=-Wl,-gc-sections -Wl,-Map=loader_stage1.map -ffreestanding -nostartfiles
|
LDFLAGS+=-Wl,-gc-sections -Wl,-Map=loader_stage1.map
|
||||||
LSCRIPT_FLAGS+=-T $(LSCRIPT)
|
LSCRIPT_FLAGS+=-T $(LSCRIPT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -73,6 +73,10 @@ CFLAGS+=\
|
||||||
# For printf support (disable NO_PRINTF_UART) and increase WOLFBOOT_STAGE1_SIZE
|
# For printf support (disable NO_PRINTF_UART) and increase WOLFBOOT_STAGE1_SIZE
|
||||||
CFLAGS+=-DNO_PRINTF_UART
|
CFLAGS+=-DNO_PRINTF_UART
|
||||||
|
|
||||||
|
# Use PIC (Position Independent Code) for first stage loader
|
||||||
|
CFLAGS+=-fPIC
|
||||||
|
|
||||||
|
|
||||||
BUILD_DIR=.
|
BUILD_DIR=.
|
||||||
LS1_OBJS=$(addprefix $(BUILD_DIR)/, $(notdir $(OBJS)))
|
LS1_OBJS=$(addprefix $(BUILD_DIR)/, $(notdir $(OBJS)))
|
||||||
vpath %.c $(dir ../src)
|
vpath %.c $(dir ../src)
|
||||||
|
|
|
@ -46,6 +46,14 @@
|
||||||
#include "hal/nxp_ppc.h"
|
#include "hal/nxp_ppc.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DO_BOOT
|
||||||
|
#ifdef MMU
|
||||||
|
#define DO_BOOT(addr) do_boot((addr), NULL)
|
||||||
|
#else
|
||||||
|
#define DO_BOOT(addr) do_boot((addr))
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
@ -71,7 +79,7 @@ int main(void)
|
||||||
memmove((void*)WOLFBOOT_STAGE1_BASE_ADDR, (void*)BOOT_ROM_ADDR,
|
memmove((void*)WOLFBOOT_STAGE1_BASE_ADDR, (void*)BOOT_ROM_ADDR,
|
||||||
BOOT_ROM_SIZE);
|
BOOT_ROM_SIZE);
|
||||||
|
|
||||||
do_boot(wolfboot_start); /* never returns */
|
DO_BOOT(wolfboot_start); /* never returns */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -88,7 +96,7 @@ int main(void)
|
||||||
uart_write("Jump to relocated wolfboot_start\r\n", 34);
|
uart_write("Jump to relocated wolfboot_start\r\n", 34);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
do_boot(wolfboot_start); /* never returns */
|
DO_BOOT(wolfboot_start); /* never returns */
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue