123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- #ifndef NRF_BOOTLOADER_INFO_H__
- #define NRF_BOOTLOADER_INFO_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "app_util.h"
- #include "nrf.h"
- #include "nrf_mbr.h"
- #ifndef BOOTLOADER_START_ADDR
- #if (__LINT__ == 1)
- #define BOOTLOADER_START_ADDR (0x3AC00)
- #elif defined(CODE_START)
- #define BOOTLOADER_START_ADDR (CODE_START)
- #else
- #error Not a valid compiler/linker for BOOTLOADER_START_ADDR.
- #endif
- #endif
- #ifndef BOOTLOADER_SIZE
- #if (__LINT__ == 1)
- #define BOOTLOADER_SIZE (0x6000)
- #elif defined ( NRF51 )
- #define BOOTLOADER_SIZE (BOOTLOADER_SETTINGS_ADDRESS - BOOTLOADER_START_ADDR)
- #elif defined( NRF52_SERIES )
- #define BOOTLOADER_SIZE (NRF_MBR_PARAMS_PAGE_ADDRESS - BOOTLOADER_START_ADDR)
- #endif
- #endif
- #define SD_INFO_ABS_OFFSET_GET(baseaddr, offset) ((baseaddr) + (SOFTDEVICE_INFO_STRUCT_OFFSET) + (offset))
- #define SD_OFFSET_GET_UINT32(baseaddr, offset) (*((uint32_t *) SD_INFO_ABS_OFFSET_GET(baseaddr, offset)))
- #define SD_OFFSET_GET_UINT16(baseaddr, offset) (*((uint16_t *) SD_INFO_ABS_OFFSET_GET(baseaddr, offset)))
- #define SD_OFFSET_GET_UINT8(baseaddr, offset) (*((uint8_t *) SD_INFO_ABS_OFFSET_GET(baseaddr, offset)))
- #if defined(BLE_STACK_SUPPORT_REQD) || defined(ANT_STACK_SUPPORT_REQD)
- #include "nrf_sdm.h"
- #else
- #define SOFTDEVICE_INFO_STRUCT_OFFSET (0x2000)
- #define SD_INFO_STRUCT_SIZE(baseaddr) SD_OFFSET_GET_UINT8(baseaddr, 0x00)
- #ifndef SD_SIZE_GET
- #define SD_SIZE_GET(baseaddr) SD_OFFSET_GET_UINT32(baseaddr, 0x08)
- #endif
- #ifndef SD_VERSION_GET
- #define SD_VERSION_GET(baseaddr) ((SD_INFO_STRUCT_SIZE(baseaddr) > (0x14)) \
- ? SD_OFFSET_GET_UINT32(baseaddr, 0x14) \
- : 0)
- #endif
- #ifndef SD_ID_GET
- #define SD_ID_GET(baseaddr) ((SD_INFO_STRUCT_SIZE(baseaddr) > 0x10) \
- ? SD_OFFSET_GET_UINT32(baseaddr, 0x10) : 0)
- #endif
- #endif
- #ifndef SD_MAGIC_NUMBER_GET
- #define SD_MAGIC_NUMBER_GET(baseaddr) SD_OFFSET_GET_UINT32(baseaddr, 0x04)
- #endif
- #define SD_MAGIC_NUMBER_ABS_OFFSET_GET(baseaddr) SD_INFO_ABS_OFFSET_GET(baseaddr, 0x04)
- #define SD_MAGIC_NUMBER ((uint32_t)0x51B1E5DB)
- #ifndef SD_PRESENT
- #define SD_PRESENT ((SD_MAGIC_NUMBER_GET(MBR_SIZE)) == (SD_MAGIC_NUMBER))
- #endif
- #define SD_MAJOR_VERSION_MULTIPLIER (1000000)
- #define SD_MAJOR_VERSION_EXTRACT(raw_version) ((raw_version)/SD_MAJOR_VERSION_MULTIPLIER)
- #define BOOTLOADER_DFU_GPREGRET_MASK (0xF8)
- #define BOOTLOADER_DFU_GPREGRET (0xB0)
- #define BOOTLOADER_DFU_START_BIT_MASK (0x01)
- #define BOOTLOADER_DFU_GPREGRET2_MASK (0xF8)
- #define BOOTLOADER_DFU_GPREGRET2 (0xA8)
- #define BOOTLOADER_DFU_SKIP_CRC_BIT_MASK (0x01)
- #define BOOTLOADER_DFU_START (BOOTLOADER_DFU_GPREGRET | BOOTLOADER_DFU_START_BIT_MASK)
- #define BOOTLOADER_DFU_SKIP_CRC (BOOTLOADER_DFU_GPREGRET2 | BOOTLOADER_DFU_SKIP_CRC_BIT_MASK)
- #ifndef NRF_DFU_DEBUG
- #ifdef NRF_DFU_DEBUG_VERSION
- #define NRF_DFU_DEBUG 1
- #else
- #define NRF_DFU_DEBUG 0
- #endif
- #endif
- void nrf_bootloader_mbr_addrs_populate(void);
- void nrf_bootloader_debug_port_disable(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|