diff --git a/boards/nxp/fmurt1062-v1/nuttx-config/scripts/script.ld b/boards/nxp/fmurt1062-v1/nuttx-config/scripts/script.ld index 613e943e98..621ff50dbe 100644 --- a/boards/nxp/fmurt1062-v1/nuttx-config/scripts/script.ld +++ b/boards/nxp/fmurt1062-v1/nuttx-config/scripts/script.ld @@ -43,7 +43,7 @@ MEMORY { flash (rx) : ORIGIN = 0x60000000, LENGTH = 8M - sram (rwx) : ORIGIN = 0x20200000, LENGTH = 512M + sram (rwx) : ORIGIN = 0x20200000, LENGTH = 768K itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 128K dtcm (rwx) : ORIGIN = 0x20000000, LENGTH = 128K } @@ -51,8 +51,8 @@ MEMORY OUTPUT_ARCH(arm) EXTERN(_vectors) EXTERN(flash_config) -EXTERN(image_vector_table) -EXTERN(boot_data) +EXTERN(g_image_vector_table) +EXTERN(g_boot_data) ENTRY(_stext) diff --git a/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.c b/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.c index 6ef051e9e0..f69b385f2e 100644 --- a/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.c +++ b/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.c @@ -44,21 +44,21 @@ ****************************************************************************/ __attribute__((section(".boot_hdr.ivt"))) -const struct ivt_s image_vector_table = { +const struct ivt_s g_image_vector_table = { IVT_HEADER, /* IVT Header */ - 0x60002000, /* Image Entry Function */ + IMAGE_ENTRY_ADDRESS, /* Image Entry Function */ IVT_RSVD, /* Reserved = 0 */ (uint32_t)DCD_ADDRESS, /* Address where DCD information is stored */ (uint32_t)BOOT_DATA_ADDRESS, /* Address where BOOT Data Structure is stored */ - (uint32_t) &image_vector_table, /* Pointer to IVT Self (absolute address */ + (uint32_t)IMAG_VECTOR_TABLE, /* Pointer to IVT Self (absolute address */ (uint32_t)CSF_ADDRESS, /* Address where CSF file is stored */ IVT_RSVD /* Reserved = 0 */ }; __attribute__((section(".boot_hdr.boot_data"))) -const struct boot_data_s boot_data = { - FLASH_BASE, /* boot start location */ - (FLASH_END - FLASH_BASE), /* size */ - PLUGIN_FLAG, /* Plugin flag*/ - 0xFFFFFFFF /* empty - extra data word */ +const struct boot_data_s g_boot_data = { + IMAGE_DEST, /* boot start location */ + (IMAGE_DEST_END - IMAGE_DEST), /* size */ + PLUGIN_FLAG, /* Plugin flag */ + 0xffffffff /* empty - extra data word */ }; diff --git a/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.h b/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.h index ebc39e8d73..b8daecb7fe 100644 --- a/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.h +++ b/boards/nxp/fmurt1062-v1/src/imxrt_flexspi_nor_boot.h @@ -1,5 +1,5 @@ /**************************************************************************** - * config/imxrt1060-evk/src/imxrt_flexspi_nor_boot.h + * boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_boot.h * * Copyright (C) 2018 Gregory Nutt. All rights reserved. * Authors: Ivan Ucherdzhiev @@ -34,8 +34,8 @@ * ****************************************************************************/ -#ifndef __CONFIGS_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H -#define __CONFIGS_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H +#ifndef __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H +#define __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H /**************************************************************************** * Included Files @@ -76,17 +76,44 @@ #define FLASH_BASE 0x60000000 #define FLASH_END 0x7f7fffff + +/* This needs to take into account bootloader */ + +#define ROM_BOOTLOADER_OCRAM_RES 0x8000 +#define OCRAM_BASE (0x20200000 + ROM_BOOTLOADER_OCRAM_RES) +#define OCRAM_END (OCRAM_BASE + (512 * 1024) + (256 * 1024) -\ + ROM_BOOTLOADER_OCRAM_RES) + + #define SCLK 1 +#if defined(CONFIG_BOOT_RUNFROMFLASH) +# define IMAGE_DEST FLASH_BASE +# define IMAGE_DEST_END FLASH_END +# define IMAGE_DEST_OFFSET 0 +#else +# define IMAGE_DEST OCRAM_BASE +# define IMAGE_DEST_END OCRAM_END +# define IMAGE_DEST_OFFSET IVT_SIZE +#endif + +#define LOCATE_IN_DEST(x) (((uint32_t)(x)) - FLASH_BASE + IMAGE_DEST) #define DCD_ADDRESS 0 -#define BOOT_DATA_ADDRESS &boot_data +#define BOOT_DATA_ADDRESS LOCATE_IN_DEST(&g_boot_data) #define CSF_ADDRESS 0 #define PLUGIN_FLAG (uint32_t)0 +/* Located in Destination Memory */ + +#define IMAGE_ENTRY_ADDRESS ((uint32_t)&_vectors) +#define IMAG_VECTOR_TABLE LOCATE_IN_DEST(&g_image_vector_table) + /**************************************************************************** * Public Types ****************************************************************************/ +extern uint32_t _vectors[]; + /* IVT Data */ struct ivt_s { @@ -116,11 +143,11 @@ struct ivt_s { uint32_t boot_data; - /* Absolute address of the IVT.*/ + /* Absolute address of the IVT. */ uint32_t self; - /* Absolute address of the image CSF.*/ + /* Absolute address of the image CSF. */ uint32_t csf; @@ -142,6 +169,6 @@ struct boot_data_s { * Public Data ****************************************************************************/ -extern const struct boot_data_s boot_data; +extern const struct boot_data_s g_boot_data; -#endif /* __CONFIGS_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */ +#endif /* __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */