move softdevice to /lib #1

This commit is contained in:
hathach 2018-04-05 00:40:51 +07:00
parent df71d3444d
commit 276cfd5589
33 changed files with 31 additions and 572 deletions

View File

@ -1,35 +0,0 @@
Copyright (c) 2007 - 2018, Nordic Semiconductor ASA
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form, except as embedded into a Nordic
Semiconductor ASA integrated circuit in a product or a software update for
such product, must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
3. Neither the name of Nordic Semiconductor ASA nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
4. This software, with or without modification, must only be used with a
Nordic Semiconductor ASA integrated circuit.
5. Any software provided in binary form under this license must not be reverse
engineered, decompiled, modified and/or disassembled.
THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,165 +0,0 @@
:020000040000FA
:1000000000040020990900002D0600007909000075
:1000100037060000410600004B060000000000000B
:10002000000000000000000000000000BD0900000A
:1000300055060000000000005F0600006906000091
:10004000730600007D060000870600009106000090
:100050009B060000A5060000AF060000B9060000E0
:10006000C3060000CD060000D7060000E106000030
:10007000EB060000F5060000FF060000090700007F
:10008000130700001D0700002707000031070000CC
:100090003B070000450700004F070000590700001C
:1000A000630700006D07000077070000810700006C
:1000B0008B070000950700009F070000A9070000BC
:1000C000B3070000BD070000C7070000D10700000C
:1000D000DB070000E5070000EF070000F90700005C
:1000E000030800000D0800001708000021080000A8
:1000F0002B080000350800003F08000049080000F8
:10010000530800001FB500F003F88DE80F001FBD75
:1001100000F038BC70B50B46010B184400F6FF70B8
:10012000040B4FF080500022090303692403406947
:1001300043431D1B104600F0E9F929462046BDE85F
:10014000704000F0E3B9F0B54FF6FF734FF4B475AB
:100150001A466E1E12E0A94201D3344600E00C4656
:10016000B1EB040130F8027B641E3B441A44F9D120
:100170009CB204EB134394B204EB12420029EAD17F
:1001800098B200EB134002EB124140EA0140F0BD8F
:10019000C34992B00446D1E90001CDE91001FF2224
:1001A0004021684600F094FB94E80F008DE80F00B2
:1001B000684610A902E004C841F8042D8842FAD12B
:1001C00010216846FFF7BFFF1090AA208DF8440069
:1001D00000F0FAF800F0DDF84FF01024A0691022CA
:1001E0006946803000F0DEF8A069082210A900F00E
:1001F000D9F800F0C2F870B504460068A94D072888
:1002000069D2DFE800F033041929561E2500D4E92D
:10021000026564682946304600F0FDF82A4621460A
:10022000304600F0BFF8AA002146304600F024FB1B
:10023000002800D0032070BD00F0D6FB4FF48050A2
:1002400007E0201D00F0C6F80028F4D100F0CCFB38
:1002500060682860002070BD241D94E807009200AB
:1002600000F00AFB0028F6D00E2070BD00F0BEF8AA
:100270000028FAD1D4E9010100EB81034FF080504E
:10028000026945696A43934209D84FF010225369C5
:1002900003EB81030169406941438B4201D9092085
:1002A00070BD5069401C01D10F2070BD2046FFF782
:1002B0006FFF00F09BF80028F7D1201D00F08AF8AE
:1002C0000028F2D160680028F0D100F07DF800F03D
:1002D00060F800F052F8072070BD10B50C461828E1
:1002E00002D00120086010BD2068FFF784FF206065
:1002F00010BD4FF01024A069401C05D0A569A66967
:1003000080353079AA2808D06069401C2DD06069FA
:100310000068401C29D060692CE010212846FFF7B6
:1003200012FF316881421CD1A16901F18002C03104
:1003300005E030B108CA51F8040D984201D10120FE
:1003400000E000208A42F4D158B1286810B1042896
:1003500003D0FEE7284600F070F85249686808604C
:1003600008E000F016F800F008F84FF4805001683B
:10037000491C01D000F012FBFEE7BFF34F8F4A4843
:1003800001684A4A01F4E06111430160BFF34F8FF5
:10039000FEE74FF010208169491C02D0806900F00F
:1003A0008CB870472DE9F04117460D4606460024EB
:1003B00006E03046296800F093F8641C2D1D361DB8
:1003C000BC42F6D3BDE8F0814FF0102080694FF4B5
:1003D00080519FE64FF080510A69496900684A439D
:1003E000824201D810207047002070474FF08050A3
:1003F0000169406941434FF01020826902F5805243
:10040000914201D2092070478069401C01D0002030
:1004100070470420704770B50C4605464FF480665F
:1004200008E0284600F049F8B44205D3A4F58064FA
:1004300005F58055002CF4D170BD4168044609B122
:10044000012600E000264FF010256869A26892009E
:1004500000F012FAF8B1A06881006869FFF75AFE4F
:10046000BEB16E694FF08050A56864680169426949
:100470005143A1420DD9016940694143A94208D9BC
:1004800029463046FFF7C7FF2A4621463046FFF788
:1004900089FFFFF772FFFFF797FFFFF77AFFF8E793
:1004A0000C0A0000000000200CED00E00400FA053A
:1004B000144801680029FCD07047134A02211160DA
:1004C00010490B68002BFCD00F4B1B1D18600868EF
:1004D0000028FCD00020106008680028FCD070477D
:1004E000094B10B501221A60064A1468002CFCD092
:1004F000016010680028FCD00020186010680028F7
:10050000FCD010BD00E4014004E5014070B50C468C
:10051000054600F073F810B900F07EF828B12146C6
:100520002846BDE8704000F007B821462846BDE8DF
:10053000704000F037B800007FB5002200920192B1
:10054000029203920A0B000B6946012302440AE05F
:10055000440900F01F0651F8245003FA06F635430B
:1005600041F82450401C8242F2D80D490868009A94
:1005700010430860081D0168019A1143016000F0F2
:100580003DF800280AD0064910310868029A104345
:100590000860091D0868039A104308607FBD0000C9
:1005A0000006004030B50F4C002200BF04EB0213E0
:1005B000D3F800582DB9D3F8045815B9D3F8085812
:1005C0001DB1521C082AF1D330BD082AFCD204EB1D
:1005D0000212C2F80008C3F804180220C3F8080881
:1005E00030BD000000E001404FF08050D0F83001F5
:1005F000082801D000207047012070474FF080503C
:10060000D0F83011062905D0D0F83001401C01D0B7
:1006100000207047012070474FF08050D0F8300123
:100620000A2801D0002070470120704708208F4918
:1006300009680958084710208C4909680958084773
:1006400014208A4909680958084718208749096809
:100650000958084730208549096809580847382053
:1006600082490968095808473C20804909680958A7
:10067000084740207D4909680958084744207B49BC
:1006800009680958084748207849096809580847FF
:100690004C20764909680958084750207349096871
:1006A00009580847542071490968095808475820D3
:1006B0006E490968095808475C206C49096809585F
:1006C0000847602069490968095808476420674954
:1006D00009680958084768206449096809580847A3
:1006E0006C20624909680958084770205F49096809
:1006F0000958084774205D49096809580847782057
:100700005A490968095808477C2058490968095816
:1007100008478020554909680958084784205349EB
:100720000968095808478820504909680958084746
:100730008C204E4909680958084790204B490968A0
:1007400009580847942049490968095808479820DA
:1007500046490968095808479C20444909680958CE
:100760000847A0204149096809580847A4203F4983
:10077000096809580847A8203C49096809580847EA
:10078000AC203A49096809580847B0203749096838
:1007900009580847B4203549096809580847B8205E
:1007A0003249096809580847BC2030490968095886
:1007B0000847C0202D49096809580847C4202B491B
:1007C000096809580847C82028490968095808478E
:1007D000CC202649096809580847D02023490968D0
:1007E00009580847D4202149096809580847D820E2
:1007F0001E49096809580847DC201C49096809583E
:100800000847E0201949096809580847E4201749B2
:10081000096809580847E820144909680958084731
:10082000EC201249096809580847F0200F49096867
:1008300009580847F4200D49096809580847F82065
:100840000A49096809580847FC20084909680958F5
:1008500008475FF480700549096809580847000097
:1008600003480449024A034B70470000000000207F
:10087000180A0000180A000040EA010310B59B079F
:100880000FD1042A0DD310C808C9121F9C42F8D0FA
:1008900020BA19BA884201D9012010BD4FF0FF30AB
:1008A00010BD1AB1D30703D0521C07E0002010BDC1
:1008B00010F8013B11F8014B1B1B07D110F8013B4D
:1008C00011F8014B1B1B01D1921EF1D1184610BD2E
:1008D00002F0FF0343EA032242EA024200F005B8B5
:1008E0007047704770474FF000020429C0F0128033
:1008F00010F0030C00F01B80CCF1040CBCF1020FD3
:1009000018BF00F8012BA8BF20F8022BA1EB0C01A7
:1009100000F00DB85FEAC17C24BF00F8012B00F89D
:10092000012B48BF00F8012B70474FF0000200B5C3
:10093000134694469646203922BFA0E80C50A0E802
:100940000C50B1F12001BFF4F7AF090728BFA0E8B0
:100950000C5048BF0CC05DF804EB890028BF40F87C
:10096000042B08BF704748BF20F8022B11F0804FBE
:1009700018BF00F8012B7047014B1B68DB68184754
:100980000000002009480A497047FFF7FBFFFFF706
:10099000B9FB00BD20BFFDE7064B1847064A1060B3
:1009A000016881F30888406800470000180A0000C9
:1009B000180A0000F3020000000000201EF0040FDF
:1009C0000CBFEFF30881EFF30981886902380078E2
:1009D000182803D100E00000074A1047074A1268B0
:1009E0002C3212681047000000B5054B1B68054A01
:1009F0009B58984700BD0000DB020000000000206B
:100A0000080A0000040000000010000000000000C0
:080A100000FFFFFF0090D0037E
:040000050000099955
:00000001FF

View File

@ -1,242 +0,0 @@
/*
* Copyright (c) 2014 - 2017, Nordic Semiconductor ASA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form, except as embedded into a Nordic
* Semiconductor ASA integrated circuit in a product or a software update for
* such product, must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* 4. This software, with or without modification, must only be used with a
* Nordic Semiconductor ASA integrated circuit.
*
* 5. Any software provided in binary form under this license must not be reverse
* engineered, decompiled, modified and/or disassembled.
*
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
@defgroup nrf_mbr_api Master Boot Record API
@{
@brief APIs for updating SoftDevice and BootLoader
*/
#ifndef NRF_MBR_H__
#define NRF_MBR_H__
#include "nrf_svc.h"
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/** @addtogroup NRF_MBR_DEFINES Defines
* @{ */
/**@brief MBR SVC Base number. */
#define MBR_SVC_BASE (0x18)
/**@brief Page size in words. */
#define MBR_PAGE_SIZE_IN_WORDS (1024)
/** @brief The size that must be reserved for the MBR when a SoftDevice is written to flash.
This is the offset where the first byte of the SoftDevice hex file is written.*/
#define MBR_SIZE (0x1000)
/** @} */
/** @addtogroup NRF_MBR_ENUMS Enumerations
* @{ */
/**@brief nRF Master Boot Record API SVC numbers. */
enum NRF_MBR_SVCS
{
SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */
};
/**@brief Possible values for ::sd_mbr_command_t.command */
enum NRF_MBR_COMMANDS
{
SD_MBR_COMMAND_COPY_BL, /**< Copy a new BootLoader. @see ::sd_mbr_command_copy_bl_t*/
SD_MBR_COMMAND_COPY_SD, /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/
SD_MBR_COMMAND_INIT_SD, /**< Initialize forwarding interrupts to SD, and run reset function in SD. Does not require any parameters in ::sd_mbr_command_t params.*/
SD_MBR_COMMAND_COMPARE, /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/
SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Change the address the MBR starts after a reset. @see ::sd_mbr_command_vector_table_base_set_t*/
SD_MBR_COMMAND_RESERVED,
SD_MBR_COMMAND_IRQ_FORWARD_ADDRESS_SET, /**< Start forwarding all interrupts to this address. @see ::sd_mbr_command_irq_forward_address_set_t*/
};
/** @} */
/** @addtogroup NRF_MBR_TYPES Types
* @{ */
/**@brief This command copies part of a new SoftDevice
*
* The destination area is erased before copying.
* If dst is in the middle of a flash page, that whole flash page will be erased.
* If (dst+len) is in the middle of a flash page, that whole flash page will be erased.
*
* The user of this function is responsible for setting the BPROT registers.
*
* @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly.
* @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying.
*/
typedef struct
{
uint32_t *src; /**< Pointer to the source of data to be copied.*/
uint32_t *dst; /**< Pointer to the destination where the content is to be copied.*/
uint32_t len; /**< Number of 32 bit words to copy. Must be a multiple of @ref MBR_PAGE_SIZE_IN_WORDS words.*/
} sd_mbr_command_copy_sd_t;
/**@brief This command works like memcmp, but takes the length in words.
*
* @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal.
* @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal.
*/
typedef struct
{
uint32_t *ptr1; /**< Pointer to block of memory. */
uint32_t *ptr2; /**< Pointer to block of memory. */
uint32_t len; /**< Number of 32 bit words to compare.*/
} sd_mbr_command_compare_t;
/**@brief This command copies a new BootLoader.
*
* With this command, destination of BootLoader is always the address written in
* NRF_UICR->BOOTADDR.
*
* Destination is erased by this function.
* If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased.
*
* This function will use the flash protect peripheral (BPROT or ACL) to protect the flash that is
* not intended to be written.
*
* On success, this function will not return. It will start the new BootLoader from reset-vector as normal.
*
* @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen.
* @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set.
* @retval ::NRF_ERROR_INVALID_LENGTH if parameters attempts to read or write outside flash area.
* @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info)
*/
typedef struct
{
uint32_t *bl_src; /**< Pointer to the source of the Bootloader to be be copied.*/
uint32_t bl_len; /**< Number of 32 bit words to copy for BootLoader. */
} sd_mbr_command_copy_bl_t;
/**@brief Change the address the MBR starts after a reset
*
* Once this function has been called, this address is where the MBR will start to forward
* interrupts to after a reset.
*
* To restore default forwarding this function should be called with @ref address set to 0. The
* MBR will then start forwarding interrupts to the address in NFR_UICR->BOOTADDR or to the
* SoftDevice if the BOOTADDR is not set.
*
* On success, this function will not return. It will reset the device.
*
* @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen.
* @retval ::NRF_ERROR_INVALID_ADDR if parameter address is outside of the flash size.
* @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info)
*/
typedef struct
{
uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/
} sd_mbr_command_vector_table_base_set_t;
/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR
*
* Unlike sd_mbr_command_vector_table_base_set_t, this function does not reset, and it does not
* change where the MBR starts after reset.
*
* @retval ::NRF_SUCCESS
*/
typedef struct
{
uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/
} sd_mbr_command_irq_forward_address_set_t;
/**@brief Input structure containing data used when calling ::sd_mbr_command
*
* Depending on what command value that is set, the corresponding params value type must also be
* set. See @ref NRF_MBR_COMMANDS for command types and corresponding params value type. If command
* @ref SD_MBR_COMMAND_INIT_SD is set, it is not necessary to set any values under params.
*/
typedef struct
{
uint32_t command; /**< Type of command to be issued. See @ref NRF_MBR_COMMANDS. */
union
{
sd_mbr_command_copy_sd_t copy_sd; /**< Parameters for copy SoftDevice.*/
sd_mbr_command_compare_t compare; /**< Parameters for verify.*/
sd_mbr_command_copy_bl_t copy_bl; /**< Parameters for copy BootLoader. Requires parameter page. */
sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set. Requires parameter page.*/
sd_mbr_command_irq_forward_address_set_t irq_forward_address_set; /**< Parameters for irq forward address set*/
} params; /**< Command parameters. */
} sd_mbr_command_t;
/** @} */
/** @addtogroup NRF_MBR_FUNCTIONS Functions
* @{ */
/**@brief Issue Master Boot Record commands
*
* Commands used when updating a SoftDevice and bootloader.
*
* The @ref SD_MBR_COMMAND_COPY_BL and @ref SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET requires
* parameters to be retained by the MBR when resetting the IC. This is done in a separate flash
* page provided by the application. The UICR register UICR.NRFFW[1] must be set to an address
* corresponding to a page in the application flash space. This page will be cleared by the MBR and
* used to store the command before reset. When the UICR.NRFFW[1] field is set the page it refers
* to must not be used by the application. If the UICR.NRFFW[1] is set to 0xFFFFFFFF (the default)
* MBR commands which use flash will be unavailable and return @ref NRF_ERROR_NO_MEM.
*
* @param[in] param Pointer to a struct describing the command.
*
* @note For return values, see ::sd_mbr_command_copy_sd_t, ::sd_mbr_command_copy_bl_t,
* ::sd_mbr_command_compare_t, ::sd_mbr_command_vector_table_base_set_t,
* ::sd_mbr_command_irq_forward_address_set_t
*
* @retval ::NRF_ERROR_NO_MEM if UICR.NRFFW[1] is not set (i.e. is 0xFFFFFFFF).
* @retval ::NRF_ERROR_INVALID_PARAM if an invalid command is given.
*/
SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param));
/** @} */
#ifdef __cplusplus
}
#endif
#endif // NRF_MBR_H__
/**
@}
*/

View File

@ -1,90 +0,0 @@
/*
* Copyright (c) 2012 - 2017, Nordic Semiconductor ASA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form, except as embedded into a Nordic
* Semiconductor ASA integrated circuit in a product or a software update for
* such product, must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* 4. This software, with or without modification, must only be used with a
* Nordic Semiconductor ASA integrated circuit.
*
* 5. Any software provided in binary form under this license must not be reverse
* engineered, decompiled, modified and/or disassembled.
*
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef NRF_SVC__
#define NRF_SVC__
#include "stdint.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef SVCALL_AS_NORMAL_FUNCTION
#define SVCALL(number, return_type, signature) return_type signature
#else
#ifndef SVCALL
#if defined (__CC_ARM)
#define SVCALL(number, return_type, signature) return_type __svc(number) signature
#elif defined (__GNUC__)
#ifdef __cplusplus
#define GCC_CAST_CPP (uint16_t)
#else
#define GCC_CAST_CPP
#endif
#define SVCALL(number, return_type, signature) \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \
__attribute__((naked)) \
__attribute__((unused)) \
static return_type signature \
{ \
__asm( \
"svc %0\n" \
"bx r14" : : "I" (GCC_CAST_CPP number) : "r0" \
); \
} \
_Pragma("GCC diagnostic pop")
#elif defined (__ICCARM__)
#define PRAGMA(x) _Pragma(#x)
#define SVCALL(number, return_type, signature) \
PRAGMA(swi_number = (number)) \
__swi return_type signature;
#else
#define SVCALL(number, return_type, signature) return_type signature
#endif
#endif // SVCALL
#endif // SVCALL_AS_NORMAL_FUNCTION
#ifdef __cplusplus
}
#endif
#endif // NRF_SVC__

View File

@ -25,7 +25,7 @@ SD_VERSION = 6.0.0
SD_NAME_UPPER = $(subst s,S,$(SD_NAME)) SD_NAME_UPPER = $(subst s,S,$(SD_NAME))
SD_PATH = ../../softdevice/$(SD_VERSION) SD_PATH = ../../lib/softdevice/$(SD_VERSION)
SD_HEX = $(SD_PATH)/$(SD_NAME)/hex/$(SD_NAME)_nrf52_$(SD_VERSION)_softdevice.hex SD_HEX = $(SD_PATH)/$(SD_NAME)/hex/$(SD_NAME)_nrf52_$(SD_VERSION)_softdevice.hex
LINKER_SCRIPT = $(SRC_PATH)/$(SD_NAME)_$(SD_VERSION).ld LINKER_SCRIPT = $(SRC_PATH)/$(SD_NAME)_$(SD_VERSION).ld

View File

@ -25,7 +25,7 @@
gcc_entry_point="Reset_Handler" gcc_entry_point="Reset_Handler"
linker_memory_map_file="$(ProjectDir)/nRF52840_xxAA_MemoryMap.xml" linker_memory_map_file="$(ProjectDir)/nRF52840_xxAA_MemoryMap.xml"
linker_section_placement_file="$(ProjectDir)/flash_placement.xml" linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
macros="DeviceHeaderFile=$(PackagesDir)/nRF/CMSIS/Device/Include/nrf.h;DeviceLibraryIdentifier=M4lf;DeviceSystemFile=$(PackagesDir)/nRF/CMSIS/Device/Source/system_nrf52840.c;DeviceVectorsFile=$(PackagesDir)/nRF/Source/ses_nrf52840_Vectors.s;DeviceFamily=nRF;Target=nRF52840_xxAA;Placement=Flash;SdkDir=../../lib/sdk/components;Sdk11Dir=../../lib/sdk11/components;SdDir=../../softdevice/6.0.0;TusbDir=../../lib/tinyusb/tinyusb" macros="DeviceHeaderFile=$(PackagesDir)/nRF/CMSIS/Device/Include/nrf.h;DeviceLibraryIdentifier=M4lf;DeviceSystemFile=$(PackagesDir)/nRF/CMSIS/Device/Source/system_nrf52840.c;DeviceVectorsFile=$(PackagesDir)/nRF/Source/ses_nrf52840_Vectors.s;DeviceFamily=nRF;Target=nRF52840_xxAA;Placement=Flash;SdkDir=../../lib/sdk/components;Sdk11Dir=../../lib/sdk11/components;SdDir=../../lib/softdevice/6.0.0;TusbDir=../../lib/tinyusb/tinyusb"
project_directory="" project_directory=""
project_type="Executable" project_type="Executable"
target_reset_script="Reset();" target_reset_script="Reset();"
@ -66,44 +66,6 @@
gcc_optimization_level="Debug" gcc_optimization_level="Debug"
link_use_linker_script_file="No" link_use_linker_script_file="No"
linker_section_placement_file="flash_placement.xml" /> linker_section_placement_file="flash_placement.xml" />
<folder Name="softdevice">
<folder Name="6.0.0">
<folder Name="common" />
<folder Name="mbr">
<folder Name="nrf52840">
<folder Name="headers">
<file file_name="../../softdevice/6.0.0/mbr/nrf52840/headers/nrf_mbr.h" />
<file file_name="../../softdevice/6.0.0/mbr/nrf52840/headers/nrf_svc.h" />
</folder>
</folder>
</folder>
<folder Name="s140">
<folder Name="headers">
<file file_name="../../softdevice/6.0.0/s140/headers/ble.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_err.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_gap.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_gatt.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_gattc.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_gatts.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_hci.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_l2cap.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_ranges.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/ble_types.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_error.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_error_sdm.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_error_soc.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_nvic.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_sd_def.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_sdm.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_soc.h" />
<file file_name="../../softdevice/6.0.0/s140/headers/nrf_svc.h" />
<folder Name="nrf52">
<file file_name="../../softdevice/6.0.0/s140/headers/nrf52/nrf_mbr.h" />
</folder>
</folder>
</folder>
</folder>
</folder>
<configuration Name="Debug Single" gcc_optimization_level="Debug" /> <configuration Name="Debug Single" gcc_optimization_level="Debug" />
<configuration Name="Debug Dual" gcc_optimization_level="Debug" /> <configuration Name="Debug Dual" gcc_optimization_level="Debug" />
<configuration <configuration
@ -249,6 +211,35 @@
</folder> </folder>
</folder> </folder>
</folder> </folder>
<folder Name="softdevice">
<folder Name="6.0.0">
<folder Name="s140">
<folder Name="headers">
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_err.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_gap.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_gatt.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_gattc.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_gatts.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_hci.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_l2cap.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_ranges.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/ble_types.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_error.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_error_sdm.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_error_soc.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_nvic.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_sd_def.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_sdm.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_soc.h" />
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf_svc.h" />
<folder Name="nrf52">
<file file_name="../../lib/softdevice/6.0.0/s140/headers/nrf52/nrf_mbr.h" />
</folder>
</folder>
</folder>
</folder>
</folder>
</folder> </folder>
</project> </project>
<configuration <configuration