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.

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?

UserRevisionLine numberNew 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