The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_MIMXRT1050_EVK/TOOLCHAIN_IAR/fsl_flexspi_nor_boot.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 170:e95d10626187 | 1 | /* |
AnnaBridge | 170:e95d10626187 | 2 | * The Clear BSD License |
AnnaBridge | 170:e95d10626187 | 3 | * Copyright 2017 NXP |
AnnaBridge | 170:e95d10626187 | 4 | * All rights reserved. |
AnnaBridge | 170:e95d10626187 | 5 | * |
AnnaBridge | 170:e95d10626187 | 6 | * Redistribution and use in source and binary forms, with or without modification, |
AnnaBridge | 170:e95d10626187 | 7 | * are permitted (subject to the limitations in the disclaimer below) provided |
AnnaBridge | 170:e95d10626187 | 8 | * that the following conditions are met: |
AnnaBridge | 170:e95d10626187 | 9 | * |
AnnaBridge | 170:e95d10626187 | 10 | * o Redistributions of source code must retain the above copyright notice, this list |
AnnaBridge | 170:e95d10626187 | 11 | * of conditions and the following disclaimer. |
AnnaBridge | 170:e95d10626187 | 12 | * |
AnnaBridge | 170:e95d10626187 | 13 | * o Redistributions in binary form must reproduce the above copyright notice, this |
AnnaBridge | 170:e95d10626187 | 14 | * list of conditions and the following disclaimer in the documentation and/or |
AnnaBridge | 170:e95d10626187 | 15 | * other materials provided with the distribution. |
AnnaBridge | 170:e95d10626187 | 16 | * |
AnnaBridge | 170:e95d10626187 | 17 | * o Neither the name of the copyright holder nor the names of its |
AnnaBridge | 170:e95d10626187 | 18 | * contributors may be used to endorse or promote products derived from this |
AnnaBridge | 170:e95d10626187 | 19 | * software without specific prior written permission. |
AnnaBridge | 170:e95d10626187 | 20 | * |
AnnaBridge | 170:e95d10626187 | 21 | * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. |
AnnaBridge | 170:e95d10626187 | 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
AnnaBridge | 170:e95d10626187 | 23 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
AnnaBridge | 170:e95d10626187 | 24 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
AnnaBridge | 170:e95d10626187 | 25 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
AnnaBridge | 170:e95d10626187 | 26 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
AnnaBridge | 170:e95d10626187 | 27 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
AnnaBridge | 170:e95d10626187 | 28 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
AnnaBridge | 170:e95d10626187 | 29 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
AnnaBridge | 170:e95d10626187 | 30 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
AnnaBridge | 170:e95d10626187 | 31 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
AnnaBridge | 170:e95d10626187 | 32 | */ |
AnnaBridge | 170:e95d10626187 | 33 | |
AnnaBridge | 170:e95d10626187 | 34 | #ifndef __FLEXSPI_NOR_BOOT_H__ |
AnnaBridge | 170:e95d10626187 | 35 | #define __FLEXSPI_NOR_BOOT_H__ |
AnnaBridge | 170:e95d10626187 | 36 | |
AnnaBridge | 170:e95d10626187 | 37 | #include <stdint.h> |
AnnaBridge | 170:e95d10626187 | 38 | #include "device.h" |
AnnaBridge | 170:e95d10626187 | 39 | |
AnnaBridge | 170:e95d10626187 | 40 | /************************************* |
AnnaBridge | 170:e95d10626187 | 41 | * IVT Data |
AnnaBridge | 170:e95d10626187 | 42 | *************************************/ |
AnnaBridge | 170:e95d10626187 | 43 | typedef struct _ivt_ { |
AnnaBridge | 170:e95d10626187 | 44 | /** @ref hdr with tag #HAB_TAG_IVT, length and HAB version fields |
AnnaBridge | 170:e95d10626187 | 45 | * (see @ref data) |
AnnaBridge | 170:e95d10626187 | 46 | */ |
AnnaBridge | 170:e95d10626187 | 47 | uint32_t hdr; |
AnnaBridge | 170:e95d10626187 | 48 | /** Absolute address of the first instruction to execute from the |
AnnaBridge | 170:e95d10626187 | 49 | * image |
AnnaBridge | 170:e95d10626187 | 50 | */ |
AnnaBridge | 170:e95d10626187 | 51 | uint32_t entry; |
AnnaBridge | 170:e95d10626187 | 52 | /** Reserved in this version of HAB: should be NULL. */ |
AnnaBridge | 170:e95d10626187 | 53 | uint32_t reserved1; |
AnnaBridge | 170:e95d10626187 | 54 | /** Absolute address of the image DCD: may be NULL. */ |
AnnaBridge | 170:e95d10626187 | 55 | uint32_t dcd; |
AnnaBridge | 170:e95d10626187 | 56 | /** Absolute address of the Boot Data: may be NULL, but not interpreted |
AnnaBridge | 170:e95d10626187 | 57 | * any further by HAB |
AnnaBridge | 170:e95d10626187 | 58 | */ |
AnnaBridge | 170:e95d10626187 | 59 | uint32_t boot_data; |
AnnaBridge | 170:e95d10626187 | 60 | /** Absolute address of the IVT.*/ |
AnnaBridge | 170:e95d10626187 | 61 | uint32_t self; |
AnnaBridge | 170:e95d10626187 | 62 | /** Absolute address of the image CSF.*/ |
AnnaBridge | 170:e95d10626187 | 63 | uint32_t csf; |
AnnaBridge | 170:e95d10626187 | 64 | /** Reserved in this version of HAB: should be zero. */ |
AnnaBridge | 170:e95d10626187 | 65 | uint32_t reserved2; |
AnnaBridge | 170:e95d10626187 | 66 | } ivt; |
AnnaBridge | 170:e95d10626187 | 67 | |
AnnaBridge | 170:e95d10626187 | 68 | #define IVT_MAJOR_VERSION 0x4 |
AnnaBridge | 170:e95d10626187 | 69 | #define IVT_MAJOR_VERSION_SHIFT 0x4 |
AnnaBridge | 170:e95d10626187 | 70 | #define IVT_MAJOR_VERSION_MASK 0xF |
AnnaBridge | 170:e95d10626187 | 71 | #define IVT_MINOR_VERSION 0x1 |
AnnaBridge | 170:e95d10626187 | 72 | #define IVT_MINOR_VERSION_SHIFT 0x0 |
AnnaBridge | 170:e95d10626187 | 73 | #define IVT_MINOR_VERSION_MASK 0xF |
AnnaBridge | 170:e95d10626187 | 74 | |
AnnaBridge | 170:e95d10626187 | 75 | #define IVT_VERSION(major, minor) \ |
AnnaBridge | 170:e95d10626187 | 76 | ((((major) & IVT_MAJOR_VERSION_MASK) << IVT_MAJOR_VERSION_SHIFT) | \ |
AnnaBridge | 170:e95d10626187 | 77 | (((minor) & IVT_MINOR_VERSION_MASK) << IVT_MINOR_VERSION_SHIFT)) |
AnnaBridge | 170:e95d10626187 | 78 | |
AnnaBridge | 170:e95d10626187 | 79 | /* IVT header */ |
AnnaBridge | 170:e95d10626187 | 80 | #define IVT_TAG_HEADER 0xD1 /**< Image Vector Table */ |
AnnaBridge | 170:e95d10626187 | 81 | #define IVT_SIZE 0x2000 |
AnnaBridge | 170:e95d10626187 | 82 | #define IVT_PAR IVT_VERSION(IVT_MAJOR_VERSION, IVT_MINOR_VERSION) |
AnnaBridge | 170:e95d10626187 | 83 | #define IVT_HEADER (IVT_TAG_HEADER | (IVT_SIZE << 8) | (IVT_PAR << 24)) |
AnnaBridge | 170:e95d10626187 | 84 | |
AnnaBridge | 170:e95d10626187 | 85 | /* Set resume entry */ |
AnnaBridge | 172:65be27845400 | 86 | #if defined(__CC_ARM) || defined(__ARMCC_VERSION) |
AnnaBridge | 170:e95d10626187 | 87 | extern uint32_t __Vectors[]; |
AnnaBridge | 170:e95d10626187 | 88 | extern uint32_t Image$$RW_m_config_text$$Base[]; |
AnnaBridge | 170:e95d10626187 | 89 | #define IMAGE_ENTRY_ADDRESS ((uint32_t)__Vectors) |
AnnaBridge | 170:e95d10626187 | 90 | #define FLASH_BASE ((uint32_t)Image$$RW_m_config_text$$Base) |
AnnaBridge | 170:e95d10626187 | 91 | #elif defined(__MCUXPRESSO) |
AnnaBridge | 170:e95d10626187 | 92 | extern uint32_t __Vectors[]; |
AnnaBridge | 170:e95d10626187 | 93 | extern uint32_t __boot_hdr_start__[]; |
AnnaBridge | 170:e95d10626187 | 94 | #define IMAGE_ENTRY_ADDRESS ((uint32_t)__Vectors) |
AnnaBridge | 170:e95d10626187 | 95 | #define FLASH_BASE ((uint32_t)__boot_hdr_start__) |
AnnaBridge | 170:e95d10626187 | 96 | #elif defined(__ICCARM__) |
AnnaBridge | 170:e95d10626187 | 97 | extern uint32_t __VECTOR_TABLE[]; |
AnnaBridge | 170:e95d10626187 | 98 | extern uint32_t m_boot_hdr_conf_start[]; |
AnnaBridge | 170:e95d10626187 | 99 | #define IMAGE_ENTRY_ADDRESS ((uint32_t)__VECTOR_TABLE) |
AnnaBridge | 170:e95d10626187 | 100 | #define FLASH_BASE ((uint32_t)m_boot_hdr_conf_start) |
AnnaBridge | 170:e95d10626187 | 101 | #elif defined(__GNUC__) |
AnnaBridge | 170:e95d10626187 | 102 | extern uint32_t __VECTOR_TABLE[]; |
AnnaBridge | 170:e95d10626187 | 103 | extern uint32_t __FLASH_BASE[]; |
AnnaBridge | 170:e95d10626187 | 104 | #define IMAGE_ENTRY_ADDRESS ((uint32_t)__VECTOR_TABLE) |
AnnaBridge | 170:e95d10626187 | 105 | #define FLASH_BASE ((uint32_t)__FLASH_BASE) |
AnnaBridge | 170:e95d10626187 | 106 | #endif |
AnnaBridge | 170:e95d10626187 | 107 | |
AnnaBridge | 170:e95d10626187 | 108 | #define DCD_ADDRESS dcd_data |
AnnaBridge | 170:e95d10626187 | 109 | #define BOOT_DATA_ADDRESS &boot_data |
AnnaBridge | 170:e95d10626187 | 110 | #define CSF_ADDRESS 0 |
AnnaBridge | 170:e95d10626187 | 111 | #define IVT_RSVD (uint32_t)(0x00000000) |
AnnaBridge | 170:e95d10626187 | 112 | |
AnnaBridge | 170:e95d10626187 | 113 | /************************************* |
AnnaBridge | 170:e95d10626187 | 114 | * Boot Data |
AnnaBridge | 170:e95d10626187 | 115 | *************************************/ |
AnnaBridge | 170:e95d10626187 | 116 | typedef struct _boot_data_ { |
AnnaBridge | 170:e95d10626187 | 117 | uint32_t start; /* boot start location */ |
AnnaBridge | 170:e95d10626187 | 118 | uint32_t size; /* size */ |
AnnaBridge | 170:e95d10626187 | 119 | uint32_t plugin; /* plugin flag - 1 if downloaded application is plugin */ |
AnnaBridge | 170:e95d10626187 | 120 | uint32_t placeholder; /* placehoder to make even 0x10 size */ |
AnnaBridge | 170:e95d10626187 | 121 | }BOOT_DATA_T; |
AnnaBridge | 170:e95d10626187 | 122 | |
AnnaBridge | 170:e95d10626187 | 123 | #define FLASH_SIZE BOARD_FLASH_SIZE |
AnnaBridge | 170:e95d10626187 | 124 | #define PLUGIN_FLAG (uint32_t)0 |
AnnaBridge | 170:e95d10626187 | 125 | |
AnnaBridge | 170:e95d10626187 | 126 | /* External Variables */ |
AnnaBridge | 170:e95d10626187 | 127 | const BOOT_DATA_T boot_data; |
AnnaBridge | 170:e95d10626187 | 128 | extern const uint8_t dcd_data[]; |
AnnaBridge | 170:e95d10626187 | 129 | |
AnnaBridge | 170:e95d10626187 | 130 | #endif /* __FLEXSPI_NOR_BOOT_H__ */ |
AnnaBridge | 170:e95d10626187 | 131 |