From 61d1204e05b600d4be9945fb35a4c55dbdc0cbb5 Mon Sep 17 00:00:00 2001 From: GustavWi Date: Wed, 4 Feb 2015 11:29:31 +0100 Subject: [PATCH] Added IAR support for NRF51822. IAR's linker can not merge hex files as a section only binarys. I added a binary under TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR that represents the soft_device. I added support in the python scripts to also copy binaries to the build/mbed dir and also added support for the exporter to copy binaries from resources into the exported zip file. --- .../TARGET_MCU_NORDIC_16K/nRF51822_QFAA.icf | 43 + .../startup_NRF51822_IAR.s | 237 +++++ .../TARGET_MCU_NORDIC_32K/nRF51822_QFAA.icf | 43 + .../startup_NRF51822_IAR.s | 237 +++++ .../s110_nrf51822_7.1.0_softdevice.bin | Bin 0 -> 86540 bytes workspace_tools/build_api.py | 1 + workspace_tools/build_release.py | 2 +- workspace_tools/export/exporters.py | 2 +- workspace_tools/export/iar.py | 1 + workspace_tools/export/iar_nrf51822.ewp.tmpl | 958 ++++++++++++++++++ workspace_tools/targets.py | 4 +- workspace_tools/toolchains/__init__.py | 6 + 12 files changed, 1530 insertions(+), 4 deletions(-) create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/nRF51822_QFAA.icf create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/startup_NRF51822_IAR.s create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/nRF51822_QFAA.icf create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/startup_NRF51822_IAR.s create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/s110_nrf51822_7.1.0_softdevice.bin create mode 100644 workspace_tools/export/iar_nrf51822.ewp.tmpl diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/nRF51822_QFAA.icf b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/nRF51822_QFAA.icf new file mode 100644 index 0000000000..22e3abd0be --- /dev/null +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/nRF51822_QFAA.icf @@ -0,0 +1,43 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00016000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x000160c0; +define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20002000; +define symbol __ICFEDIT_region_RAM_end__ = 0x20003FFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x800; +define symbol __ICFEDIT_size_heap__ = 0xF00; +/**** End of ICF editor section. ###ICF###*/ + +define symbol __code_start_soft_device__ = 0x0; + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +keep { section .intvec }; +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; +place in ROM_region { readonly }; +place in RAM_region { readwrite, + block CSTACK, + block HEAP }; + +/*This is used for mbed applications build inside the Embedded workbench +Applications build with the python scritps use a hex merge so need to merge it +inside the linker. The linker can only use binary files so the hex merge is not possible +through the linker. That is why a binary is used instead of a hex image for the embedded project. +*/ +if(isdefinedsymbol(SOFT_DEVICE_BIN)) +{ + place at address mem:__code_start_soft_device__ { section .noinit_softdevice }; +} \ No newline at end of file diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/startup_NRF51822_IAR.s b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/startup_NRF51822_IAR.s new file mode 100644 index 0000000000..b1e263009c --- /dev/null +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_16K/startup_NRF51822_IAR.s @@ -0,0 +1,237 @@ +;; Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved. +;; The information contained herein is confidential property of Nordic +;; Semiconductor ASA.Terms and conditions of usage are described in detail +;; in NORDIC SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. +;; Licensees are granted free, non-transferable use of the information. NO +;; WARRANTY of ANY KIND is provided. This heading must NOT be removed from +;; the file. + +;; Description message + + MODULE ?cstartup + + ;; Stack size default : 1024 + ;; Heap size default : 2048 + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + PUBLIC __vector_table + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + DCD NMI_Handler + DCD HardFault_Handler + DCD 0 + DCD 0 + DCD 0 +;__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD 0 + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + ; External Interrupts + DCD POWER_CLOCK_IRQHandler ;POWER_CLOCK + DCD RADIO_IRQHandler ;RADIO + DCD UART0_IRQHandler ;UART0 + DCD SPI0_TWI0_IRQHandler ;SPI0_TWI0 + DCD SPI1_TWI1_IRQHandler ;SPI1_TWI1 + DCD 0 ;Reserved + DCD GPIOTE_IRQHandler ;GPIOTE + DCD ADC_IRQHandler ;ADC + DCD TIMER0_IRQHandler ;TIMER0 + DCD TIMER1_IRQHandler ;TIMER1 + DCD TIMER2_IRQHandler ;TIMER2 + DCD RTC0_IRQHandler ;RTC0 + DCD TEMP_IRQHandler ;TEMP + DCD RNG_IRQHandler ;RNG + DCD ECB_IRQHandler ;ECB + DCD CCM_AAR_IRQHandler ;CCM_AAR + DCD WDT_IRQHandler ;WDT + DCD RTC1_IRQHandler ;RTC1 + DCD QDEC_IRQHandler ;QDEC + DCD LPCOMP_COMP_IRQHandler ;LPCOMP_COMP + DCD SWI0_IRQHandler ;SWI0 + DCD SWI1_IRQHandler ;SWI1 + DCD SWI2_IRQHandler ;SWI2 + DCD SWI3_IRQHandler ;SWI3 + DCD SWI4_IRQHandler ;SWI4 + DCD SWI5_IRQHandler ;SWI5 + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + + +__Vectors_End +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors +NRF_POWER_RAMON_ADDRESS EQU 0x40000524 ; NRF_POWER->RAMON address +NRF_POWER_RAMON_RAMxON_ONMODE_Msk EQU 0xF ; All RAM blocks on in onmode bit mask + +; Default handlers. + THUMB + + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + LDR R0, =NRF_POWER_RAMON_ADDRESS + LDR R2, [R0] + MOVS R1, #NRF_POWER_RAMON_RAMxON_ONMODE_Msk + ORRS R2, R2, R1 + STR R2, [R0] + LDR R0, =SystemInit + BLX R0 + LDR R0, =__iar_program_start + BX R0 + + ; Dummy exception handlers + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B . + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B . + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B . + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B . + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B . + + ; Dummy interrupt handlers + + PUBWEAK POWER_CLOCK_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +POWER_CLOCK_IRQHandler + B . + PUBWEAK RADIO_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RADIO_IRQHandler + B . + PUBWEAK UART0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +UART0_IRQHandler + B . + PUBWEAK SPI0_TWI0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SPI0_TWI0_IRQHandler + B . + PUBWEAK SPI1_TWI1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SPI1_TWI1_IRQHandler + B . + PUBWEAK GPIOTE_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +GPIOTE_IRQHandler + B . + PUBWEAK ADC_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ADC_IRQHandler + B . + PUBWEAK TIMER0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TIMER0_IRQHandler + B . + PUBWEAK TIMER1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TIMER1_IRQHandler + B . + PUBWEAK TIMER2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TIMER2_IRQHandler + B . + PUBWEAK RTC0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RTC0_IRQHandler + B . + PUBWEAK TEMP_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TEMP_IRQHandler + B . + PUBWEAK RNG_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RNG_IRQHandler + B . + PUBWEAK ECB_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ECB_IRQHandler + B . + PUBWEAK CCM_AAR_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +CCM_AAR_IRQHandler + B . + PUBWEAK WDT_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +WDT_IRQHandler + B . + PUBWEAK RTC1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RTC1_IRQHandler + B . + PUBWEAK QDEC_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +QDEC_IRQHandler + B . + PUBWEAK LPCOMP_COMP_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +LPCOMP_COMP_IRQHandler + B . + PUBWEAK SWI0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI0_IRQHandler + B . + PUBWEAK SWI1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI1_IRQHandler + B . + PUBWEAK SWI2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI2_IRQHandler + B . + PUBWEAK SWI3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI3_IRQHandler + B . + PUBWEAK SWI4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI4_IRQHandler + B . + PUBWEAK SWI5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI5_IRQHandler + B . + + + END diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/nRF51822_QFAA.icf b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/nRF51822_QFAA.icf new file mode 100644 index 0000000000..4a169b0e78 --- /dev/null +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/nRF51822_QFAA.icf @@ -0,0 +1,43 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00016000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x000160c0; +define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20002000; +define symbol __ICFEDIT_region_RAM_end__ = 0x20007FFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x1000; +define symbol __ICFEDIT_size_heap__ = 0x1000; +/**** End of ICF editor section. ###ICF###*/ + +define symbol __code_start_soft_device__ = 0x0; + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +keep { section .intvec }; +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; +place in ROM_region { readonly }; +place in RAM_region { readwrite, + block CSTACK, + block HEAP }; + +/*This is used for mbed applications build inside the Embedded workbench +Applications build with the python scritps use a hex merge so need to merge it +inside the linker. The linker can only use binary files so the hex merge is not possible +through the linker. That is why a binary is used instead of a hex image for the embedded project. +*/ +if(isdefinedsymbol(SOFT_DEVICE_BIN)) +{ + place at address mem:__code_start_soft_device__ { section .noinit_softdevice }; +} diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/startup_NRF51822_IAR.s b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/startup_NRF51822_IAR.s new file mode 100644 index 0000000000..c0a2b08eab --- /dev/null +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/TARGET_MCU_NORDIC_32K/startup_NRF51822_IAR.s @@ -0,0 +1,237 @@ +;; Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved. +;; The information contained herein is confidential property of Nordic +;; Semiconductor ASA.Terms and conditions of usage are described in detail +;; in NORDIC SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. +;; Licensees are granted free, non-transferable use of the information. NO +;; WARRANTY of ANY KIND is provided. This heading must NOT be removed from +;; the file. + +;; Description message + + MODULE ?cstartup + + ;; Stack size default : 1024 + ;; Heap size default : 2048 + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + PUBLIC __vector_table + PUBLIC __Vectors + PUBLIC __Vectors_End + PUBLIC __Vectors_Size + + DATA + +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler + DCD NMI_Handler + DCD HardFault_Handler + DCD 0 + DCD 0 + DCD 0 +;__vector_table_0x1c + DCD 0 + DCD 0 + DCD 0 + DCD 0 + DCD SVC_Handler + DCD 0 + DCD 0 + DCD PendSV_Handler + DCD SysTick_Handler + + ; External Interrupts + DCD POWER_CLOCK_IRQHandler ;POWER_CLOCK + DCD RADIO_IRQHandler ;RADIO + DCD UART0_IRQHandler ;UART0 + DCD SPI0_TWI0_IRQHandler ;SPI0_TWI0 + DCD SPI1_TWI1_IRQHandler ;SPI1_TWI1 + DCD 0 ;Reserved + DCD GPIOTE_IRQHandler ;GPIOTE + DCD ADC_IRQHandler ;ADC + DCD TIMER0_IRQHandler ;TIMER0 + DCD TIMER1_IRQHandler ;TIMER1 + DCD TIMER2_IRQHandler ;TIMER2 + DCD RTC0_IRQHandler ;RTC0 + DCD TEMP_IRQHandler ;TEMP + DCD RNG_IRQHandler ;RNG + DCD ECB_IRQHandler ;ECB + DCD CCM_AAR_IRQHandler ;CCM_AAR + DCD WDT_IRQHandler ;WDT + DCD RTC1_IRQHandler ;RTC1 + DCD QDEC_IRQHandler ;QDEC + DCD LPCOMP_COMP_IRQHandler ;LPCOMP_COMP + DCD SWI0_IRQHandler ;SWI0 + DCD SWI1_IRQHandler ;SWI1 + DCD SWI2_IRQHandler ;SWI2 + DCD SWI3_IRQHandler ;SWI3 + DCD SWI4_IRQHandler ;SWI4 + DCD SWI5_IRQHandler ;SWI5 + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + DCD 0 ;Reserved + + +__Vectors_End +__Vectors EQU __vector_table +__Vectors_Size EQU __Vectors_End - __Vectors +NRF_POWER_RAMON_ADDRESS EQU 0x40000524 ; NRF_POWER->RAMON address +NRF_POWER_RAMON_RAMxON_ONMODE_Msk EQU 0xF ; All RAM blocks on in onmode bit mask + +; Default handlers. + THUMB + + PUBWEAK Reset_Handler + SECTION .text:CODE:REORDER:NOROOT(2) +Reset_Handler + LDR R0, =NRF_POWER_RAMON_ADDRESS + LDR R2, [R0] + MOVS R1, #NRF_POWER_RAMON_RAMxON_ONMODE_Msk + ORRS R2, R2, R1 + STR R2, [R0] + LDR R0, =SystemInit + BLX R0 + LDR R0, =__iar_program_start + BX R0 + + ; Dummy exception handlers + + PUBWEAK NMI_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +NMI_Handler + B . + + PUBWEAK HardFault_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +HardFault_Handler + B . + + PUBWEAK SVC_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SVC_Handler + B . + + PUBWEAK PendSV_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +PendSV_Handler + B . + + PUBWEAK SysTick_Handler + SECTION .text:CODE:REORDER:NOROOT(1) +SysTick_Handler + B . + + ; Dummy interrupt handlers + + PUBWEAK POWER_CLOCK_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +POWER_CLOCK_IRQHandler + B . + PUBWEAK RADIO_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RADIO_IRQHandler + B . + PUBWEAK UART0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +UART0_IRQHandler + B . + PUBWEAK SPI0_TWI0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SPI0_TWI0_IRQHandler + B . + PUBWEAK SPI1_TWI1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SPI1_TWI1_IRQHandler + B . + PUBWEAK GPIOTE_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +GPIOTE_IRQHandler + B . + PUBWEAK ADC_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ADC_IRQHandler + B . + PUBWEAK TIMER0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TIMER0_IRQHandler + B . + PUBWEAK TIMER1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TIMER1_IRQHandler + B . + PUBWEAK TIMER2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TIMER2_IRQHandler + B . + PUBWEAK RTC0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RTC0_IRQHandler + B . + PUBWEAK TEMP_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +TEMP_IRQHandler + B . + PUBWEAK RNG_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RNG_IRQHandler + B . + PUBWEAK ECB_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +ECB_IRQHandler + B . + PUBWEAK CCM_AAR_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +CCM_AAR_IRQHandler + B . + PUBWEAK WDT_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +WDT_IRQHandler + B . + PUBWEAK RTC1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +RTC1_IRQHandler + B . + PUBWEAK QDEC_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +QDEC_IRQHandler + B . + PUBWEAK LPCOMP_COMP_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +LPCOMP_COMP_IRQHandler + B . + PUBWEAK SWI0_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI0_IRQHandler + B . + PUBWEAK SWI1_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI1_IRQHandler + B . + PUBWEAK SWI2_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI2_IRQHandler + B . + PUBWEAK SWI3_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI3_IRQHandler + B . + PUBWEAK SWI4_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI4_IRQHandler + B . + PUBWEAK SWI5_IRQHandler + SECTION .text:CODE:REORDER:NOROOT(1) +SWI5_IRQHandler + B . + + + END \ No newline at end of file diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/s110_nrf51822_7.1.0_softdevice.bin b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_IAR/s110_nrf51822_7.1.0_softdevice.bin new file mode 100644 index 0000000000000000000000000000000000000000..151801682bba504439ea4361758e0fd3c64855ad GIT binary patch literal 86540 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%0AqT9*#>UZs)L}Y;Dvchi8ht&Z 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

A312TeSIad?q5-({=C`@Bjmt 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 A-2eap literal 0 HcmV?d00001 diff --git a/workspace_tools/build_api.py b/workspace_tools/build_api.py index 2bfaff0d81..c2e85e9c0f 100644 --- a/workspace_tools/build_api.py +++ b/workspace_tools/build_api.py @@ -217,6 +217,7 @@ def build_mbed_libs(target, toolchain_name, options=None, verbose=False, clean=F toolchain.copy_files(resources.headers, BUILD_TARGET) toolchain.copy_files(resources.linker_script, BUILD_TOOLCHAIN) + toolchain.copy_files(resources.bin_files, BUILD_TOOLCHAIN) objects = toolchain.compile_sources(resources, TMP_PATH) toolchain.copy_files(objects, BUILD_TOOLCHAIN) diff --git a/workspace_tools/build_release.py b/workspace_tools/build_release.py index 1f513e4cdb..c6c55cbf91 100755 --- a/workspace_tools/build_release.py +++ b/workspace_tools/build_release.py @@ -72,7 +72,7 @@ OFFICIAL_MBED_LIBRARY_BUILD = ( ('ARCH_MAX', ('ARM', 'GCC_ARM')), - ('NRF51822', ('ARM', 'GCC_ARM')), + ('NRF51822', ('ARM', 'GCC_ARM', 'IAR')), ('NRF51_DK', ('ARM', 'GCC_ARM')), ('NRF51_DONGLE', ('ARM', 'GCC_ARM')), ('HRM1017', ('ARM', 'GCC_ARM')), diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 097e7abaf4..60bfc7d3e6 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -36,7 +36,7 @@ class Exporter(): for r_type in ['headers', 's_sources', 'c_sources', 'cpp_sources', 'objects', 'libraries', 'linker_script', - 'lib_builds', 'lib_refs', 'repo_files', 'hex_files']: + 'lib_builds', 'lib_refs', 'repo_files', 'hex_files', 'bin_files']: r = getattr(resources, r_type) if r: self.toolchain.copy_files(r, trg_path, rel_path=src_path) diff --git a/workspace_tools/export/iar.py b/workspace_tools/export/iar.py index 9c937faeb4..a3fe1a7be3 100644 --- a/workspace_tools/export/iar.py +++ b/workspace_tools/export/iar.py @@ -56,6 +56,7 @@ class IAREmbeddedWorkbench(Exporter): 'MTS_MDOT_F405RG', 'MTS_MDOT_F411RE', 'MTS_DRAGONFLY_F411RE', + 'NRF51822', ] def generate(self): diff --git a/workspace_tools/export/iar_nrf51822.ewp.tmpl b/workspace_tools/export/iar_nrf51822.ewp.tmpl new file mode 100644 index 0000000000..223ea68d2c --- /dev/null +++ b/workspace_tools/export/iar_nrf51822.ewp.tmpl @@ -0,0 +1,958 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + {% for files in source_files %} + + $PROJ_DIR$\{{files}} + + {% endfor %} + + + diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index a1d9c44163..e01da5275c 100644 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -715,7 +715,7 @@ class NRF51822(Target): Target.__init__(self) self.core = "Cortex-M0" self.extra_labels = ["NORDIC", "NRF51822_MKIT", "MCU_NRF51822", "MCU_NORDIC_16K"] - self.supported_toolchains = ["ARM", "GCC_ARM"] + self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"] self.is_disk_virtual = True self.detect_code = ["1070"] @@ -723,7 +723,7 @@ class NRF51822(Target): return 6 def init_hooks(self, hook, toolchain_name): - if toolchain_name in ['ARM_STD', 'ARM_MICRO', 'GCC_ARM']: + if toolchain_name in ['ARM_STD', 'ARM_MICRO', 'GCC_ARM', 'IAR']: hook.hook_add_binary("post", self.binary_hook) @staticmethod diff --git a/workspace_tools/toolchains/__init__.py b/workspace_tools/toolchains/__init__.py index dd1a02a72d..76ac0f25a9 100644 --- a/workspace_tools/toolchains/__init__.py +++ b/workspace_tools/toolchains/__init__.py @@ -110,6 +110,7 @@ class Resources: # Other files self.hex_files = [] + self.bin_files = [] def add(self, resources): self.inc_dirs += resources.inc_dirs @@ -133,6 +134,7 @@ class Resources: self.linker_script = resources.linker_script self.hex_files += resources.hex_files + self.bin_files += resources.bin_files def relative_to(self, base, dot=False): for field in ['inc_dirs', 'headers', 's_sources', 'c_sources', @@ -168,6 +170,7 @@ class Resources: ('Libraries', self.libraries), ('Hex files', self.hex_files), + ('Hex files', self.bin_files), ): if resources: s.append('%s:\n ' % label + '\n '.join(resources)) @@ -387,6 +390,9 @@ class mbedToolchain: elif ext == '.hex': resources.hex_files.append(file_path) + + elif ext == '.bin': + resources.bin_files.append(file_path) return resources