From 18b96c98fb3d4f78d3539f924df28a01dc8557df Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Tue, 8 Dec 2020 23:39:02 -0600 Subject: [PATCH 01/13] Improve progen_compile.py --- tools/progen_compile.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tools/progen_compile.py b/tools/progen_compile.py index dab40e510..6ec648fa2 100755 --- a/tools/progen_compile.py +++ b/tools/progen_compile.py @@ -50,14 +50,16 @@ def load_project_list(path): return project_list -def build_projects(file, projects, tool, build=True, clean=False, ignore_errors=True): +def build_projects(file, projects, tool, build=True, clean=False, parallel=False, ignore_failures=False): generator = generate.Generator(file) - cores = 4 - try: - import multiprocessing - cores = multiprocessing.cpu_count() - except: - pass + cores = 1 + if parallel: + cores = 4 + try: + import multiprocessing + cores = multiprocessing.cpu_count() + except: + pass for p_name in projects: for project in generator.generate(p_name): @@ -77,7 +79,7 @@ def build_projects(file, projects, tool, build=True, clean=False, ignore_errors= if project.build(tool, jobs=cores) == -1: logger.error("Error building project %s", project.name) failed = True - if failed and not ignore_errors: + if failed and not ignore_failures: return -1 project_list = load_project_list(PROJECTS_YAML) @@ -88,16 +90,26 @@ def build_projects(file, projects, tool, build=True, clean=False, ignore_errors= nargs='*', type=str, default=[]) parser.add_argument('--release', dest='release', action='store_true', help='Create a release with the yaml version file') parser.add_argument('--release-folder', type=str, default='firmware', help='Directory to create and place files in') -parser.add_argument('--toolchain', type=str, default='GCC', help='Toolchain ("GCC" or "ARM", default: %(default)s', - choices=['GCC', 'ARM']) +parser.add_argument('--toolchain', type=str, default='GCC', help='Toolchain ("GCC", "ARMCC", "ARMCLANG", default: %(default)s', + choices=['GCC', 'ARMCC', "ARMCLANG"]) parser.add_argument('--clean', dest='clean', action='store_true', help='Rebuild or delete build folder before compile') +parser.add_argument('--ignore-failures', dest='ignore_failures', action='store_true', help='Continue build even in case of failures') +parser.add_argument('--parallel', dest='parallel', action='store_true', help='Build with multiple compilations in parallel') parser.add_argument('-v', dest='verbosity', action='count', help='Increase verbosity (can be specify multiple times)', default=0) parser.set_defaults(build=True) parser.set_defaults(clean=False) +parser.set_defaults(ignore_failures=False) +parser.set_defaults(parallel=False) parser.set_defaults(release=False) args = parser.parse_args() -toolchain = "make_gcc_arm" if args.toolchain in ['GCC'] else 'make_armcc' +toolchains = { + "GCC": "make_gcc_arm", + "ARMCC": "make_armcc", + "ARMCLANG": "make_armclang", +} + +toolchain = toolchains[args.toolchain] if args.toolchain in toolchains.keys() else 'make_gcc_arm' logging_level = logging.DEBUG if args.verbosity >= 2 else (logging.INFO if args.verbosity >= 1 else logging.WARNING) logging.basicConfig(format="%(asctime)s %(name)020s %(levelname)s\t%(message)s", level=logging_level) logger = logging.getLogger('progen_build') @@ -109,7 +121,7 @@ def build_projects(file, projects, tool, build=True, clean=False, ignore_errors= generate_version_file(version_git_dir) projects = args.projects if len(args.projects) > 0 else project_list -build_projects(PROJECTS_YAML, projects, toolchain, args.build, args.clean) +build_projects(PROJECTS_YAML, projects, toolchain, args.build, args.clean, args.parallel, args.ignore_failures) sys.path.append(os.path.join(daplink_dir, "test")) from info import SUPPORTED_CONFIGURATIONS, PROJECT_RELEASE_INFO From bcc56cb74a6e563c9f749246306f50ee8c5c8753 Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 9 Dec 2020 12:50:09 -0600 Subject: [PATCH 02/13] Extend verbose flag to the build system --- tools/progen_compile.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/progen_compile.py b/tools/progen_compile.py index 6ec648fa2..9c44f88e0 100755 --- a/tools/progen_compile.py +++ b/tools/progen_compile.py @@ -50,7 +50,7 @@ def load_project_list(path): return project_list -def build_projects(file, projects, tool, build=True, clean=False, parallel=False, ignore_failures=False): +def build_projects(file, projects, tool, build=True, clean=False, parallel=False, ignore_failures=False, verbose=False): generator = generate.Generator(file) cores = 1 if parallel: @@ -76,7 +76,7 @@ def build_projects(file, projects, tool, build=True, clean=False, parallel=False logger.error("Error generating project %s", project.name) failed = True if build and not failed: - if project.build(tool, jobs=cores) == -1: + if project.build(tool, jobs=cores, verbose=verbose) == -1: logger.error("Error building project %s", project.name) failed = True if failed and not ignore_failures: @@ -121,7 +121,8 @@ def build_projects(file, projects, tool, build=True, clean=False, parallel=False generate_version_file(version_git_dir) projects = args.projects if len(args.projects) > 0 else project_list -build_projects(PROJECTS_YAML, projects, toolchain, args.build, args.clean, args.parallel, args.ignore_failures) +build_projects(PROJECTS_YAML, projects, toolchain, args.build, args.clean, + args.parallel, args.ignore_failures, args.verbosity > 0) sys.path.append(os.path.join(daplink_dir, "test")) from info import SUPPORTED_CONFIGURATIONS, PROJECT_RELEASE_INFO From 2e3fe6df8a3593d767a9fae9fac0c419284e53a0 Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Mon, 14 Dec 2020 16:18:14 -0600 Subject: [PATCH 03/13] Fix for armclang support --- source/daplink/settings/settings_rom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/daplink/settings/settings_rom.c b/source/daplink/settings/settings_rom.c index d0908bd12..d1481d23e 100644 --- a/source/daplink/settings/settings_rom.c +++ b/source/daplink/settings/settings_rom.c @@ -61,7 +61,7 @@ COMPILER_ASSERT(sizeof(cfg_setting_t) < SECTOR_BUFFER_SIZE); COMPILER_ASSERT(SECTOR_BUFFER_SIZE % 8 == 0); // Configuration ROM -#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +#if defined(__CC_ARM) static volatile cfg_setting_t config_rom __attribute__((section("cfgrom"),zero_init)); #else static volatile cfg_setting_t config_rom __attribute__((section("cfgrom"))); From 988f33cdf109e3828686665ec7b16a14d850966b Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 9 Dec 2020 13:32:41 -0600 Subject: [PATCH 04/13] Additional gcc compilation flags --- records/tools/make_gcc_arm.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/records/tools/make_gcc_arm.yaml b/records/tools/make_gcc_arm.yaml index 24c45ae0d..afeabf242 100644 --- a/records/tools/make_gcc_arm.yaml +++ b/records/tools/make_gcc_arm.yaml @@ -27,15 +27,16 @@ tool_specific: - -fverbose-asm - -mno-unaligned-access ld_flags: - - -Wl,--no-wchar-size-warning - --specs=nano.specs - --specs=nosys.specs - - -Wl,--gc-sections + - -Wl,-check-sections - -Wl,--defsym=__stack_size__=0x200 - -Wl,--defsym=__heap_size__=0x0 + - -Wl,-fatal-warnings + - -Wl,--gc-sections + - -Wl,--no-wchar-size-warning + - -Wl,--print-memory-usage pre_build_script: - tools/pre_build_script.sh post_build_script: - tools/post_build_script_gcc.sh - - From c2ed7811692306e3c35d820f0176b4e6cca20d09 Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 9 Dec 2020 21:30:06 -0600 Subject: [PATCH 05/13] Fix portability issues for armclang --- source/daplink/HardFault_Handler.c | 2 +- source/daplink/bootloader/main.c | 18 +++++++++--------- source/daplink/compiler.h | 6 +++++- source/hic_hal/freescale/iap/fsl_flash.c | 2 ++ source/hic_hal/freescale/k20dx/MK20D5/MK20D5.h | 4 ++-- .../hic_hal/freescale/kl26z/MKL26Z4/MKL26Z4.h | 4 ++-- .../maxim/max32620/armcc/startup_MAX32620.S | 1 - .../maxim/max32625/armcc/startup_MAX32625.S | 1 - source/hic_hal/nxp/lpc4322/LPC43xx.h | 4 ++-- source/usb/usb_lib.c | 2 ++ 10 files changed, 25 insertions(+), 19 deletions(-) diff --git a/source/daplink/HardFault_Handler.c b/source/daplink/HardFault_Handler.c index 537e1ec2c..ff7d9ee84 100644 --- a/source/daplink/HardFault_Handler.c +++ b/source/daplink/HardFault_Handler.c @@ -70,7 +70,7 @@ __NO_RETURN void _fault_handler(uint32_t _lr) while (1); // Wait for reset } -#if defined(__CC_ARM) +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) void HardFault_Handler() { register unsigned int _lr __asm("lr"); diff --git a/source/daplink/bootloader/main.c b/source/daplink/bootloader/main.c index 6bdaf09ec..4969e20a6 100644 --- a/source/daplink/bootloader/main.c +++ b/source/daplink/bootloader/main.c @@ -48,15 +48,15 @@ __asm void modify_stack_pointer_and_start_app(uint32_t r0_sp, uint32_t r1_pc) void modify_stack_pointer_and_start_app(uint32_t r0_sp, uint32_t r1_pc) { uint32_t z = 0; - asm volatile ( "msr control, %[z] \n\t" - "isb \n\t" - "mov sp, %[r0_sp] \n\t" - "bx %[r1_pc]" - : - : [z] "l" (z), - [r0_sp] "l" (r0_sp), - [r1_pc] "l" (r1_pc) - ); + __ASM volatile ( "msr control, %[z] \n\t" + "isb \n\t" + "mov sp, %[r0_sp] \n\t" + "bx %[r1_pc]" + : + : [z] "l" (z), + [r0_sp] "l" (r0_sp), + [r1_pc] "l" (r1_pc) + ); } #else #error "Unknown compiler!" diff --git a/source/daplink/compiler.h b/source/daplink/compiler.h index 38d64bc36..0d9e73a65 100644 --- a/source/daplink/compiler.h +++ b/source/daplink/compiler.h @@ -44,11 +44,15 @@ extern "C" { #define NO_OPTIMIZE_PRE _Pragma("optimize = none") #define NO_OPTIMIZE_INLINE #define NO_OPTIMIZE_POST -#elif (defined(__CC_ARM)) +#elif (defined(__CC_ARM)) /* ARMCC */ #define NO_OPTIMIZE_PRE _Pragma("push") \ _Pragma("O0") #define NO_OPTIMIZE_INLINE #define NO_OPTIMIZE_POST _Pragma("pop") +#elif (defined(__ARMCC_VERSION)) /* ARMCLANG */ +#define NO_OPTIMIZE_PRE +#define NO_OPTIMIZE_INLINE +#define NO_OPTIMIZE_POST #elif (defined(__GNUC__)) #define NO_OPTIMIZE_PRE #define NO_OPTIMIZE_INLINE __attribute__((optimize("O0"))) diff --git a/source/hic_hal/freescale/iap/fsl_flash.c b/source/hic_hal/freescale/iap/fsl_flash.c index 77b145c78..b704c2791 100644 --- a/source/hic_hal/freescale/iap/fsl_flash.c +++ b/source/hic_hal/freescale/iap/fsl_flash.c @@ -2102,6 +2102,8 @@ void flash_cache_clear(flash_config_t *config) #pragma push #pragma O0 void flash_cache_clear(flash_config_t *config) +#elif (defined(__ARMCC_VERSION)) +void flash_cache_clear(flash_config_t *config) #elif (defined(__GNUC__)) /* #pragma GCC push_options */ /* #pragma GCC optimize("O0") */ diff --git a/source/hic_hal/freescale/k20dx/MK20D5/MK20D5.h b/source/hic_hal/freescale/k20dx/MK20D5/MK20D5.h index aa8c33d78..a2bab5705 100644 --- a/source/hic_hal/freescale/k20dx/MK20D5/MK20D5.h +++ b/source/hic_hal/freescale/k20dx/MK20D5/MK20D5.h @@ -353,7 +353,7 @@ typedef enum _dma_request_source ** Start of section using anonymous unions */ -#if defined(__ARMCC_VERSION) +#if defined(__CC_ARM) #pragma push #pragma anon_unions #elif defined(__CWCC__) @@ -7664,7 +7664,7 @@ typedef struct { ** End of section using anonymous unions */ -#if defined(__ARMCC_VERSION) +#if defined(__CC_ARM) #pragma pop #elif defined(__CWCC__) #pragma pop diff --git a/source/hic_hal/freescale/kl26z/MKL26Z4/MKL26Z4.h b/source/hic_hal/freescale/kl26z/MKL26Z4/MKL26Z4.h index 6be699344..5ef277acf 100644 --- a/source/hic_hal/freescale/kl26z/MKL26Z4/MKL26Z4.h +++ b/source/hic_hal/freescale/kl26z/MKL26Z4/MKL26Z4.h @@ -314,7 +314,7 @@ typedef enum _dma_request_source ** Start of section using anonymous unions */ -#if defined(__ARMCC_VERSION) +#if defined(__CC_ARM) #pragma push #pragma anon_unions #elif defined(__CWCC__) @@ -5839,7 +5839,7 @@ typedef struct { ** End of section using anonymous unions */ -#if defined(__ARMCC_VERSION) +#if defined(__CC_ARM) #pragma pop #elif defined(__CWCC__) #pragma pop diff --git a/source/hic_hal/maxim/max32620/armcc/startup_MAX32620.S b/source/hic_hal/maxim/max32620/armcc/startup_MAX32620.S index 9839266d9..376ae36ed 100644 --- a/source/hic_hal/maxim/max32620/armcc/startup_MAX32620.S +++ b/source/hic_hal/maxim/max32620/armcc/startup_MAX32620.S @@ -59,7 +59,6 @@ __heap_limit ; Vector Table Mapped to Address 0 at Reset AREA RESET, DATA, READONLY - EXPORT __initial_sp EXPORT __Vectors EXPORT __Vectors_End EXPORT __Vectors_Size diff --git a/source/hic_hal/maxim/max32625/armcc/startup_MAX32625.S b/source/hic_hal/maxim/max32625/armcc/startup_MAX32625.S index 657df9ccb..f68a64461 100755 --- a/source/hic_hal/maxim/max32625/armcc/startup_MAX32625.S +++ b/source/hic_hal/maxim/max32625/armcc/startup_MAX32625.S @@ -59,7 +59,6 @@ __heap_limit ; Vector Table Mapped to Address 0 at Reset AREA RESET, DATA, READONLY - EXPORT __initial_sp EXPORT __Vectors EXPORT __Vectors_End EXPORT __Vectors_Size diff --git a/source/hic_hal/nxp/lpc4322/LPC43xx.h b/source/hic_hal/nxp/lpc4322/LPC43xx.h index 9678ccaed..1b0006fac 100644 --- a/source/hic_hal/nxp/lpc4322/LPC43xx.h +++ b/source/hic_hal/nxp/lpc4322/LPC43xx.h @@ -40,7 +40,7 @@ extern "C" { ** Start of section using anonymous unions ** *********************************************/ -#if defined(__ARMCC_VERSION) +#if defined(__CC_ARM) #pragma push #pragma anon_unions #elif defined(__CWCC__) @@ -2161,7 +2161,7 @@ typedef struct { /*!< (@ 0x40101000) SGPIO Structure ** End of section using anonymous unions ** *********************************************/ -#if defined(__ARMCC_VERSION) +#if defined(__CC_ARM) #pragma pop #elif defined(__CWCC__) #pragma pop diff --git a/source/usb/usb_lib.c b/source/usb/usb_lib.c index 457d21c50..12f7b694f 100644 --- a/source/usb/usb_lib.c +++ b/source/usb/usb_lib.c @@ -25,8 +25,10 @@ #include "settings.h" #include "compiler.h" +#if defined(__CC_ARM) #pragma thumb #pragma O3 +#endif /*------------------------------------------------------------------------------ From e59cdffbfc2ace5ab974104067033749103046dd Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 9 Dec 2020 21:40:44 -0600 Subject: [PATCH 06/13] Add support for make_armclang tool --- projects.yaml | 1 + records/daplink/bootloader.yaml | 3 ++ records/daplink/interface.yaml | 3 ++ records/hic_hal/k20dx.yaml | 4 ++ records/hic_hal/k26f.yaml | 11 ++++++ records/hic_hal/kl26z.yaml | 4 ++ records/hic_hal/lpc11u35.yaml | 4 ++ records/hic_hal/lpc4322.yaml | 4 ++ records/hic_hal/m48ssidae.yaml | 4 ++ records/hic_hal/max32620.yaml | 4 ++ records/hic_hal/max32625.yaml | 4 ++ records/hic_hal/sam3u2c.yaml | 4 ++ records/hic_hal/stm32f103xb.yaml | 9 +++++ records/rtos/rtos-cm0.yaml | 4 ++ records/rtos/rtos-cm3.yaml | 4 ++ records/rtos/rtos-cm4.yaml | 4 ++ records/tools/make_armclang.yaml | 43 +++++++++++++++++++++ source/daplink/daplink.ac6.sct | 60 +++++++++++++++++++++++++++++ tools/post_build_script_armclang.sh | 36 +++++++++++++++++ 19 files changed, 210 insertions(+) create mode 100644 records/tools/make_armclang.yaml create mode 100644 source/daplink/daplink.ac6.sct create mode 100755 tools/post_build_script_armclang.sh diff --git a/projects.yaml b/projects.yaml index c176f9830..da60cbdea 100644 --- a/projects.yaml +++ b/projects.yaml @@ -10,6 +10,7 @@ module: tools: &module_tools - records/tools/make_gcc_arm.yaml - records/tools/make_armcc.yaml + - records/tools/make_armclang.yaml - records/tools/version.yaml bl: &module_bl - *module_tools diff --git a/records/daplink/bootloader.yaml b/records/daplink/bootloader.yaml index 8172074e9..1bc9a5b48 100644 --- a/records/daplink/bootloader.yaml +++ b/records/daplink/bootloader.yaml @@ -25,3 +25,6 @@ tool_specific: misc: ld_flags: - --predefine="-DDAPLINK_BL" + make_armclang: + linker_file: + - source/daplink/daplink.ac6.sct diff --git a/records/daplink/interface.yaml b/records/daplink/interface.yaml index 2584d5699..3dac19046 100644 --- a/records/daplink/interface.yaml +++ b/records/daplink/interface.yaml @@ -25,3 +25,6 @@ tool_specific: misc: ld_flags: - --predefine="-DDAPLINK_IF" + make_armclang: + linker_file: + - source/daplink/daplink.ac6.sct diff --git a/records/hic_hal/k20dx.yaml b/records/hic_hal/k20dx.yaml index 012336a69..f7433a0b0 100644 --- a/records/hic_hal/k20dx.yaml +++ b/records/hic_hal/k20dx.yaml @@ -38,6 +38,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/k20dx/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/freescale/k20dx/armcc make_gcc_arm: linker_file: - source/hic_hal/freescale/kinetis.ld diff --git a/records/hic_hal/k26f.yaml b/records/hic_hal/k26f.yaml index 3e11e17e9..bee835f22 100644 --- a/records/hic_hal/k26f.yaml +++ b/records/hic_hal/k26f.yaml @@ -51,6 +51,17 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/k26f/armcc + make_armclang: + misc: + c_flags: + - -mno-unaligned-access + cxx_flags: + - -mno-unaligned-access + asm_flags: + - -Wa,armasm,--no_unaligned_access + sources: + hic_hal: + - source/hic_hal/freescale/k26f/armcc make_gcc_arm: linker_file: - source/hic_hal/freescale/kinetis.ld diff --git a/records/hic_hal/kl26z.yaml b/records/hic_hal/kl26z.yaml index 1bea13e5f..224080a7a 100644 --- a/records/hic_hal/kl26z.yaml +++ b/records/hic_hal/kl26z.yaml @@ -38,6 +38,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/kl26z/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/freescale/kl26z/armcc make_gcc_arm: linker_file: - source/hic_hal/freescale/kinetis.ld diff --git a/records/hic_hal/lpc11u35.yaml b/records/hic_hal/lpc11u35.yaml index 4286ffa1a..ad1bebaa1 100644 --- a/records/hic_hal/lpc11u35.yaml +++ b/records/hic_hal/lpc11u35.yaml @@ -28,6 +28,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/nxp/lpc11u35/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/nxp/lpc11u35/armcc make_gcc_arm: linker_file: - source/hic_hal/nxp/lpc11u35/gcc/lpc11u35.ld diff --git a/records/hic_hal/lpc4322.yaml b/records/hic_hal/lpc4322.yaml index d3ce8ffc7..51d5b15a2 100644 --- a/records/hic_hal/lpc4322.yaml +++ b/records/hic_hal/lpc4322.yaml @@ -30,6 +30,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/nxp/lpc4322/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/nxp/lpc4322/armcc make_gcc_arm: includes: - source/hic_hal/nxp/lpc4322/gcc diff --git a/records/hic_hal/m48ssidae.yaml b/records/hic_hal/m48ssidae.yaml index c21fc8c36..5ce69317d 100644 --- a/records/hic_hal/m48ssidae.yaml +++ b/records/hic_hal/m48ssidae.yaml @@ -34,6 +34,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/nuvoton/m48ssidae/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/nuvoton/m48ssidae/armcc make_gcc_arm: includes: - source/hic_hal/nuvoton/m48ssidae/gcc diff --git a/records/hic_hal/max32620.yaml b/records/hic_hal/max32620.yaml index b24e1149d..041018657 100644 --- a/records/hic_hal/max32620.yaml +++ b/records/hic_hal/max32620.yaml @@ -28,6 +28,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/maxim/max32620/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/maxim/max32620/armcc make_gcc_arm: includes: - source/hic_hal/maxim/max32620/gcc diff --git a/records/hic_hal/max32625.yaml b/records/hic_hal/max32625.yaml index b4d806364..dc99e6bbd 100644 --- a/records/hic_hal/max32625.yaml +++ b/records/hic_hal/max32625.yaml @@ -28,6 +28,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/maxim/max32625/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/maxim/max32625/armcc make_gcc_arm: includes: - source/hic_hal/maxim/max32625/gcc diff --git a/records/hic_hal/sam3u2c.yaml b/records/hic_hal/sam3u2c.yaml index 6743dc8bd..d488a73e4 100644 --- a/records/hic_hal/sam3u2c.yaml +++ b/records/hic_hal/sam3u2c.yaml @@ -30,6 +30,10 @@ tool_specific: sources: hic_hal: - source/hic_hal/atmel/sam3u2c/armcc + make_armclang: + sources: + hic_hal: + - source/hic_hal/atmel/sam3u2c/armcc make_gcc_arm: includes: - source/hic_hal/atmel/sam3u2c/gcc diff --git a/records/hic_hal/stm32f103xb.yaml b/records/hic_hal/stm32f103xb.yaml index 991c5ce98..c25777fbe 100644 --- a/records/hic_hal/stm32f103xb.yaml +++ b/records/hic_hal/stm32f103xb.yaml @@ -37,6 +37,15 @@ tool_specific: sources: hic_hal: - source/hic_hal/stm32/stm32f103xb/armcc + make_armclang: + misc: + c_flags: + - -mcpu=cortex-m3 + asm_flags: + - -mcpu=cortex-m3 + sources: + hic_hal: + - source/hic_hal/stm32/stm32f103xb/armcc make_gcc_arm: includes: - source/hic_hal/stm32/stm32f103xb/gcc diff --git a/records/rtos/rtos-cm0.yaml b/records/rtos/rtos-cm0.yaml index d43556ef4..bd47ecd78 100644 --- a/records/rtos/rtos-cm0.yaml +++ b/records/rtos/rtos-cm0.yaml @@ -28,6 +28,10 @@ tool_specific: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm0.s + make_armclang: + sources: + rtos: + - source/rtos/RTX/Source/ARM/irq_cm0.s make_gcc_arm: sources: - source/rtos/RTX/Source/GCC/irq_cm0.S diff --git a/records/rtos/rtos-cm3.yaml b/records/rtos/rtos-cm3.yaml index 33697cac9..2bc042322 100644 --- a/records/rtos/rtos-cm3.yaml +++ b/records/rtos/rtos-cm3.yaml @@ -28,6 +28,10 @@ tool_specific: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s + make_armclang: + sources: + rtos: + - source/rtos/RTX/Source/ARM/irq_cm3.s make_gcc_arm: sources: - source/rtos/RTX/Source/GCC/irq_cm3.S diff --git a/records/rtos/rtos-cm4.yaml b/records/rtos/rtos-cm4.yaml index b3d6aeea1..d0942b9b4 100644 --- a/records/rtos/rtos-cm4.yaml +++ b/records/rtos/rtos-cm4.yaml @@ -30,6 +30,10 @@ tool_specific: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s + make_armclang: + sources: + rtos: + - source/rtos/RTX/Source/ARM/irq_cm3.s make_gcc_arm: sources: - source/rtos/RTX/Source/GCC/irq_cm3.S diff --git a/records/tools/make_armclang.yaml b/records/tools/make_armclang.yaml new file mode 100644 index 000000000..20157e3c8 --- /dev/null +++ b/records/tools/make_armclang.yaml @@ -0,0 +1,43 @@ +tool_specific: + make_armclang: + mcu: + - cortex-m0 + macros: + - + linker_file: + - source/daplink/daplink.sct + misc: + asm_flags: + - -g + cpp_flags: + - --target=arm-arm-none-eabi + c_flags: + - --target=arm-arm-none-eabi + - -Oz + - -g + - --std=c99 + - -fdata-sections + - -ffunction-sections + - -fno-builtin + - -fshort-enums + - -fshort-wchar + - -funsigned-char + - -masm=auto + - -nostdlib + - -Wall + - -Wno-error=cpp + - -Warmcc-pragma-thumb + - -Wno-ignored-optimization-argument + - -Wno-unused-command-line-argument + ld_flags: + - --bestdebug + - --summary_stderr + - --info=summarysizes,sizes,totals,unused,veneers + - --load_addr_map_info + - --xref + - --callgraph + - --symbols + pre_build_script: + - tools/pre_build_script.sh + post_build_script: + - tools/post_build_script_armclang.sh diff --git a/source/daplink/daplink.ac6.sct b/source/daplink/daplink.ac6.sct new file mode 100644 index 000000000..34bf02cd4 --- /dev/null +++ b/source/daplink/daplink.ac6.sct @@ -0,0 +1,60 @@ +;/** +; * @file daplink.sct +; * @brief Memory layout for DAPLink Interface Firmware +; * +; * DAPLink Interface Firmware +; * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the "License"); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * http://www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +#include "daplink_addr.h" + +LR_IROM1 DAPLINK_ROM_APP_START DAPLINK_ROM_APP_SIZE { + + ER_IROM1 DAPLINK_ROM_APP_START DAPLINK_ROM_APP_SIZE { + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + + RW_IRAM1 DAPLINK_RAM_APP_START DAPLINK_RAM_APP_SIZE { ; RW data + .ANY (ram_func) + .ANY (+RW +ZI) + main.o (+RW +ZI) + startup_*.o (+RW +ZI) + .ANY (RAM1) + } + + #if defined(DAPLINK_RAM_APP2_START) + RW_IRAM2 DAPLINK_RAM_APP2_START DAPLINK_RAM_APP2_SIZE { ; RW data + .ANY (+RW +ZI) + .ANY (RAM2) + } + #endif + + RW_CONFIG DAPLINK_RAM_SHARED_START UNINIT DAPLINK_RAM_SHARED_SIZE { + .ANY (cfgram) + } + + ER_IROM1_CRC (DAPLINK_ROM_APP_START + DAPLINK_ROM_APP_SIZE - 4) FIXED FILL 0xFFFFFFFF 4 { + ; reserve space for the CRC + } +} + +LR_CONFIG DAPLINK_ROM_CONFIG_USER_START DAPLINK_ROM_CONFIG_USER_SIZE { ; reserve last sector for config data + ER_CONFIG DAPLINK_ROM_CONFIG_USER_START UNINIT DAPLINK_ROM_CONFIG_USER_SIZE { + .ANY (cfgrom) + } +} diff --git a/tools/post_build_script_armclang.sh b/tools/post_build_script_armclang.sh new file mode 100755 index 000000000..c8fd0fce6 --- /dev/null +++ b/tools/post_build_script_armclang.sh @@ -0,0 +1,36 @@ +#!/bin/bash -e +## +## DAPLink Interface Firmware +## Copyright (c) 2009-2016, ARM Limited, All Rights Reserved +## SPDX-License-Identifier: Apache-2.0 +## +## Licensed under the Apache License, Version 2.0 (the "License"); you may +## not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## + +PROJECT_DIR=build +TOOLS=../../../tools +PROJECT_NAME=$(basename $PWD) + +INFILE=${PROJECT_DIR}/${PROJECT_NAME}.hex +OUTBASE=${PROJECT_DIR}/${PROJECT_NAME}_crc +CRCBIN=${OUTBASE}.bin + +fromelf --bincombined $PROJECT_DIR/${PROJECT_NAME}.axf --output=$PROJECT_DIR/firmware.bin + +fromelf --i32combined $PROJECT_DIR/${PROJECT_NAME}.axf --output=$PROJECT_DIR/firmware.hex + +# Only execute the post build script if the input is newer than output, or the +# output doesn't exist. +if [[ "$INFILE" -nt "$CRCBIN" ]]; then + python "${TOOLS}/post_build_script.py" "$INFILE" "$OUTBASE" +fi From 516eb211d645de2407e4b2f690da4eaf0a4a4a5f Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 9 Dec 2020 21:41:11 -0600 Subject: [PATCH 07/13] Minor cleanup --- records/hic_hal/k20dx.yaml | 3 ++- records/hic_hal/k26f.yaml | 3 ++- records/hic_hal/kl26z.yaml | 3 ++- records/hic_hal/sam3u2c.yaml | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/records/hic_hal/k20dx.yaml b/records/hic_hal/k20dx.yaml index f7433a0b0..12a28104f 100644 --- a/records/hic_hal/k20dx.yaml +++ b/records/hic_hal/k20dx.yaml @@ -14,7 +14,6 @@ common: includes: - source/hic_hal/freescale/k20dx - source/hic_hal/freescale/k20dx/MK20D5 - - projectfiles/uvision/k20dx_bl/build sources: hic_hal: - source/hic_hal/freescale @@ -28,6 +27,8 @@ tool_specific: misc: ld_flags: - --predefine="-I..\..\..\source\hic_hal\freescale\k20dx" + includes: + - projectfiles/uvision/k20dx_bl/build sources: hic_hal: - source/hic_hal/freescale/k20dx/armcc diff --git a/records/hic_hal/k26f.yaml b/records/hic_hal/k26f.yaml index bee835f22..ae122fb78 100644 --- a/records/hic_hal/k26f.yaml +++ b/records/hic_hal/k26f.yaml @@ -14,7 +14,6 @@ common: - source/hic_hal/freescale/k26f - source/hic_hal/freescale/k26f/MK26F18 - source/hic_hal/freescale/iap - - projectfiles/uvision/k26f_bl/build sources: hic_hal: - source/hic_hal/freescale/k26f @@ -34,6 +33,8 @@ tool_specific: - --no_unaligned_access asm_flags: - --no_unaligned_access + includes: + - projectfiles/uvision/k26f_bl/build sources: hic_hal: - source/hic_hal/freescale/k26f/armcc diff --git a/records/hic_hal/kl26z.yaml b/records/hic_hal/kl26z.yaml index 224080a7a..09e87f67b 100644 --- a/records/hic_hal/kl26z.yaml +++ b/records/hic_hal/kl26z.yaml @@ -14,7 +14,6 @@ common: includes: - source/hic_hal/freescale/kl26z - source/hic_hal/freescale/kl26z/MKL26Z4 - - projectfiles/uvision/kl26z_bl/build sources: hic_hal: - source/hic_hal/freescale @@ -28,6 +27,8 @@ tool_specific: misc: ld_flags: - --predefine="-I..\..\..\source\hic_hal\freescale\kl26z" + includes: + - projectfiles/uvision/kl26z_bl/build sources: hic_hal: - source/hic_hal/freescale/kl26z/armcc diff --git a/records/hic_hal/sam3u2c.yaml b/records/hic_hal/sam3u2c.yaml index d488a73e4..d127dd665 100644 --- a/records/hic_hal/sam3u2c.yaml +++ b/records/hic_hal/sam3u2c.yaml @@ -10,7 +10,6 @@ common: - OS_CLOCK=96000000 includes: - source/hic_hal/atmel/sam3u2c - - projectfiles/uvision/sam3u2c_bl/build sources: hic_hal: - source/hic_hal/atmel/sam3u2c @@ -20,6 +19,8 @@ tool_specific: misc: ld_flags: - --predefine="-I..\..\..\source\hic_hal\atmel\sam3u2c" + includes: + - projectfiles/uvision/sam3u2c_bl/build sources: hic_hal: - source/hic_hal/atmel/sam3u2c/armcc From 888d6daf1f9f34191b20311061da9178cd03524f Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Mon, 14 Dec 2020 16:32:37 -0600 Subject: [PATCH 08/13] The settings are compiler-specific not build tool-specific --- projects.yaml | 6 +++--- records/daplink/bootloader.yaml | 4 ++-- records/daplink/interface.yaml | 4 ++-- records/hic_hal/k20dx.yaml | 6 +++--- records/hic_hal/k26f.yaml | 6 +++--- records/hic_hal/kl26z.yaml | 6 +++--- records/hic_hal/lpc11u35.yaml | 6 +++--- records/hic_hal/lpc4322.yaml | 6 +++--- records/hic_hal/m48ssidae.yaml | 6 +++--- records/hic_hal/max32620.yaml | 6 +++--- records/hic_hal/max32625.yaml | 6 +++--- records/hic_hal/sam3u2c.yaml | 6 +++--- records/hic_hal/stm32f103xb.yaml | 6 +++--- records/rtos/rtos-cm0.yaml | 6 +++--- records/rtos/rtos-cm3.yaml | 6 +++--- records/rtos/rtos-cm4.yaml | 6 +++--- records/tools/{make_armcc.yaml => armcc.yaml} | 2 +- records/tools/{make_armclang.yaml => armclang.yaml} | 2 +- records/tools/{make_gcc_arm.yaml => gcc_arm.yaml} | 2 +- 19 files changed, 49 insertions(+), 49 deletions(-) rename records/tools/{make_armcc.yaml => armcc.yaml} (98%) rename records/tools/{make_armclang.yaml => armclang.yaml} (98%) rename records/tools/{make_gcc_arm.yaml => gcc_arm.yaml} (98%) diff --git a/projects.yaml b/projects.yaml index da60cbdea..8f1d2ec4c 100644 --- a/projects.yaml +++ b/projects.yaml @@ -8,9 +8,9 @@ settings: module: tools: &module_tools - - records/tools/make_gcc_arm.yaml - - records/tools/make_armcc.yaml - - records/tools/make_armclang.yaml + - records/tools/gcc_arm.yaml + - records/tools/armcc.yaml + - records/tools/armclang.yaml - records/tools/version.yaml bl: &module_bl - *module_tools diff --git a/records/daplink/bootloader.yaml b/records/daplink/bootloader.yaml index 1bc9a5b48..e390e4d9f 100644 --- a/records/daplink/bootloader.yaml +++ b/records/daplink/bootloader.yaml @@ -19,12 +19,12 @@ tool_specific: misc: ld_flags: - --predefine="-DDAPLINK_BL" - make_armcc: + armcc: linker_file: - source/daplink/daplink.sct misc: ld_flags: - --predefine="-DDAPLINK_BL" - make_armclang: + armclang: linker_file: - source/daplink/daplink.ac6.sct diff --git a/records/daplink/interface.yaml b/records/daplink/interface.yaml index 3dac19046..f3d517259 100644 --- a/records/daplink/interface.yaml +++ b/records/daplink/interface.yaml @@ -19,12 +19,12 @@ tool_specific: misc: ld_flags: - --predefine="-DDAPLINK_IF" - make_armcc: + armcc: linker_file: - source/daplink/daplink.sct misc: ld_flags: - --predefine="-DDAPLINK_IF" - make_armclang: + armclang: linker_file: - source/daplink/daplink.ac6.sct diff --git a/records/hic_hal/k20dx.yaml b/records/hic_hal/k20dx.yaml index 12a28104f..9448dd79d 100644 --- a/records/hic_hal/k20dx.yaml +++ b/records/hic_hal/k20dx.yaml @@ -32,18 +32,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/k20dx/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\freescale\k20dx" sources: hic_hal: - source/hic_hal/freescale/k20dx/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/freescale/k20dx/armcc - make_gcc_arm: + gcc_arm: linker_file: - source/hic_hal/freescale/kinetis.ld includes: diff --git a/records/hic_hal/k26f.yaml b/records/hic_hal/k26f.yaml index ae122fb78..b3880d64a 100644 --- a/records/hic_hal/k26f.yaml +++ b/records/hic_hal/k26f.yaml @@ -38,7 +38,7 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/k26f/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\freescale\k26f" @@ -52,7 +52,7 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/k26f/armcc - make_armclang: + armclang: misc: c_flags: - -mno-unaligned-access @@ -63,7 +63,7 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/k26f/armcc - make_gcc_arm: + gcc_arm: linker_file: - source/hic_hal/freescale/kinetis.ld includes: diff --git a/records/hic_hal/kl26z.yaml b/records/hic_hal/kl26z.yaml index 09e87f67b..7e578f2ca 100644 --- a/records/hic_hal/kl26z.yaml +++ b/records/hic_hal/kl26z.yaml @@ -32,18 +32,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/freescale/kl26z/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\freescale\kl26z" sources: hic_hal: - source/hic_hal/freescale/kl26z/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/freescale/kl26z/armcc - make_gcc_arm: + gcc_arm: linker_file: - source/hic_hal/freescale/kinetis.ld includes: diff --git a/records/hic_hal/lpc11u35.yaml b/records/hic_hal/lpc11u35.yaml index ad1bebaa1..1d8861c1e 100644 --- a/records/hic_hal/lpc11u35.yaml +++ b/records/hic_hal/lpc11u35.yaml @@ -21,18 +21,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/nxp/lpc11u35/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\nxp\lpc11u35" sources: hic_hal: - source/hic_hal/nxp/lpc11u35/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/nxp/lpc11u35/armcc - make_gcc_arm: + gcc_arm: linker_file: - source/hic_hal/nxp/lpc11u35/gcc/lpc11u35.ld includes: diff --git a/records/hic_hal/lpc4322.yaml b/records/hic_hal/lpc4322.yaml index 51d5b15a2..30b895561 100644 --- a/records/hic_hal/lpc4322.yaml +++ b/records/hic_hal/lpc4322.yaml @@ -23,18 +23,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/nxp/lpc4322/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\nxp\lpc4322" sources: hic_hal: - source/hic_hal/nxp/lpc4322/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/nxp/lpc4322/armcc - make_gcc_arm: + gcc_arm: includes: - source/hic_hal/nxp/lpc4322/gcc sources: diff --git a/records/hic_hal/m48ssidae.yaml b/records/hic_hal/m48ssidae.yaml index 5ce69317d..25a6d4d9c 100644 --- a/records/hic_hal/m48ssidae.yaml +++ b/records/hic_hal/m48ssidae.yaml @@ -27,18 +27,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/nuvoton/m48ssidae/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\nuvoton\m48ssidae" sources: hic_hal: - source/hic_hal/nuvoton/m48ssidae/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/nuvoton/m48ssidae/armcc - make_gcc_arm: + gcc_arm: includes: - source/hic_hal/nuvoton/m48ssidae/gcc sources: diff --git a/records/hic_hal/max32620.yaml b/records/hic_hal/max32620.yaml index 041018657..25638ea6b 100644 --- a/records/hic_hal/max32620.yaml +++ b/records/hic_hal/max32620.yaml @@ -21,18 +21,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/maxim/max32620/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\maxim\max32620" sources: hic_hal: - source/hic_hal/maxim/max32620/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/maxim/max32620/armcc - make_gcc_arm: + gcc_arm: includes: - source/hic_hal/maxim/max32620/gcc sources: diff --git a/records/hic_hal/max32625.yaml b/records/hic_hal/max32625.yaml index dc99e6bbd..0cb34defa 100644 --- a/records/hic_hal/max32625.yaml +++ b/records/hic_hal/max32625.yaml @@ -21,18 +21,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/maxim/max32625/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\maxim\max32625" sources: hic_hal: - source/hic_hal/maxim/max32625/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/maxim/max32625/armcc - make_gcc_arm: + gcc_arm: includes: - source/hic_hal/maxim/max32625/gcc sources: diff --git a/records/hic_hal/sam3u2c.yaml b/records/hic_hal/sam3u2c.yaml index d127dd665..1d5645e37 100644 --- a/records/hic_hal/sam3u2c.yaml +++ b/records/hic_hal/sam3u2c.yaml @@ -24,18 +24,18 @@ tool_specific: sources: hic_hal: - source/hic_hal/atmel/sam3u2c/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\atmel\sam3u2c" sources: hic_hal: - source/hic_hal/atmel/sam3u2c/armcc - make_armclang: + armclang: sources: hic_hal: - source/hic_hal/atmel/sam3u2c/armcc - make_gcc_arm: + gcc_arm: includes: - source/hic_hal/atmel/sam3u2c/gcc sources: diff --git a/records/hic_hal/stm32f103xb.yaml b/records/hic_hal/stm32f103xb.yaml index c25777fbe..9fb26f90c 100644 --- a/records/hic_hal/stm32f103xb.yaml +++ b/records/hic_hal/stm32f103xb.yaml @@ -30,14 +30,14 @@ tool_specific: sources: hic_hal: - source/hic_hal/stm32/stm32f103xb/armcc - make_armcc: + armcc: misc: ld_flags: - --predefine="-Isource\hic_hal\stm32\stm32f103xb" sources: hic_hal: - source/hic_hal/stm32/stm32f103xb/armcc - make_armclang: + armclang: misc: c_flags: - -mcpu=cortex-m3 @@ -46,7 +46,7 @@ tool_specific: sources: hic_hal: - source/hic_hal/stm32/stm32f103xb/armcc - make_gcc_arm: + gcc_arm: includes: - source/hic_hal/stm32/stm32f103xb/gcc sources: diff --git a/records/rtos/rtos-cm0.yaml b/records/rtos/rtos-cm0.yaml index bd47ecd78..d306e57d5 100644 --- a/records/rtos/rtos-cm0.yaml +++ b/records/rtos/rtos-cm0.yaml @@ -24,14 +24,14 @@ tool_specific: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm0.s - make_armcc: + armcc: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm0.s - make_armclang: + armclang: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm0.s - make_gcc_arm: + gcc_arm: sources: - source/rtos/RTX/Source/GCC/irq_cm0.S diff --git a/records/rtos/rtos-cm3.yaml b/records/rtos/rtos-cm3.yaml index 2bc042322..8114d5628 100644 --- a/records/rtos/rtos-cm3.yaml +++ b/records/rtos/rtos-cm3.yaml @@ -24,14 +24,14 @@ tool_specific: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s - make_armcc: + armcc: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s - make_armclang: + armclang: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s - make_gcc_arm: + gcc_arm: sources: - source/rtos/RTX/Source/GCC/irq_cm3.S diff --git a/records/rtos/rtos-cm4.yaml b/records/rtos/rtos-cm4.yaml index d0942b9b4..5443960d6 100644 --- a/records/rtos/rtos-cm4.yaml +++ b/records/rtos/rtos-cm4.yaml @@ -26,14 +26,14 @@ tool_specific: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s - make_armcc: + armcc: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s - make_armclang: + armclang: sources: rtos: - source/rtos/RTX/Source/ARM/irq_cm3.s - make_gcc_arm: + gcc_arm: sources: - source/rtos/RTX/Source/GCC/irq_cm3.S diff --git a/records/tools/make_armcc.yaml b/records/tools/armcc.yaml similarity index 98% rename from records/tools/make_armcc.yaml rename to records/tools/armcc.yaml index 7104877ca..6e01229c2 100644 --- a/records/tools/make_armcc.yaml +++ b/records/tools/armcc.yaml @@ -1,5 +1,5 @@ tool_specific: - make_armcc: + armcc: mcu: - cortex-m0 macros: diff --git a/records/tools/make_armclang.yaml b/records/tools/armclang.yaml similarity index 98% rename from records/tools/make_armclang.yaml rename to records/tools/armclang.yaml index 20157e3c8..0d8d2f457 100644 --- a/records/tools/make_armclang.yaml +++ b/records/tools/armclang.yaml @@ -1,5 +1,5 @@ tool_specific: - make_armclang: + armclang: mcu: - cortex-m0 macros: diff --git a/records/tools/make_gcc_arm.yaml b/records/tools/gcc_arm.yaml similarity index 98% rename from records/tools/make_gcc_arm.yaml rename to records/tools/gcc_arm.yaml index afeabf242..3d3424290 100644 --- a/records/tools/make_gcc_arm.yaml +++ b/records/tools/gcc_arm.yaml @@ -1,5 +1,5 @@ tool_specific: - make_gcc_arm: + gcc_arm: mcu: - cortex-m0 macros: From 2e29b0a6ce911a1c16c9c94bc1369f91252ae5be Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Mon, 14 Dec 2020 17:55:52 -0600 Subject: [PATCH 09/13] Align armclang flags with project-generator changes --- records/tools/armclang.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/records/tools/armclang.yaml b/records/tools/armclang.yaml index 0d8d2f457..a3a80b8c9 100644 --- a/records/tools/armclang.yaml +++ b/records/tools/armclang.yaml @@ -9,6 +9,8 @@ tool_specific: misc: asm_flags: - -g + - -x assembler-with-cpp + - -masm=auto cpp_flags: - --target=arm-arm-none-eabi c_flags: From 334878d33f08d0209b7ba48562c47bbe55cac4ad Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 16 Dec 2020 19:35:38 -0600 Subject: [PATCH 10/13] Better detection and handling of build failures --- tools/progen_compile.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/progen_compile.py b/tools/progen_compile.py index 9c44f88e0..874f602a1 100755 --- a/tools/progen_compile.py +++ b/tools/progen_compile.py @@ -137,10 +137,19 @@ def build_projects(file, projects, tool, build=True, clean=False, parallel=False hex = output + ".hex" crc = output + "_crc" + if not os.path.exists(hex): + # Build failed + if args.ignore_failures: + logger.warnig("Missing file %s (build failed)" % (hex)) + continue + else: + logger.error("Missing file %s (build failed)" % (hex)) + exit(-1) + # TODO: I think this part is already done as part of the progen build with the call # to the post_build_script_gcc.sh. Remove the next block if confirmed. # We use the same check as the shell wrapper guard to run it only if necessary. - if os.path.getmtime(hex) >= os.path.getmtime(crc + '.bin'): + if not os.path.exists(crc + '.bin') or os.path.getmtime(hex) >= os.path.getmtime(crc + '.bin'): logger.debug("Generating %s" % (crc + '.bin')) post_build_script(hex, crc) From 6b90557cd781eb097f45bb6e2d83536653bbbe2e Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 16 Dec 2020 19:36:42 -0600 Subject: [PATCH 11/13] Add LTO for Musca targets with GCC (code size too large) --- projects.yaml | 3 +++ records/tools/gcc_arm_lto.yaml | 9 +++++++++ 2 files changed, 12 insertions(+) create mode 100644 records/tools/gcc_arm_lto.yaml diff --git a/projects.yaml b/projects.yaml index 8f1d2ec4c..15e330f52 100644 --- a/projects.yaml +++ b/projects.yaml @@ -611,14 +611,17 @@ projects: - *module_if - *module_hic_lpc11u35 - records/board/musca_a.yaml + - records/tools/gcc_arm_lto.yaml lpc11u35_musca_b_if: - *module_if - *module_hic_lpc11u35 - records/board/musca_b.yaml + - records/tools/gcc_arm_lto.yaml lpc11u35_musca_b_eflash_if: - *module_if - *module_hic_lpc11u35 - records/board/musca_b_eflash.yaml + - records/tools/gcc_arm_lto.yaml max32620_max32625mbed_if: - *module_if - *module_hic_max32620 diff --git a/records/tools/gcc_arm_lto.yaml b/records/tools/gcc_arm_lto.yaml new file mode 100644 index 000000000..cfedab4cc --- /dev/null +++ b/records/tools/gcc_arm_lto.yaml @@ -0,0 +1,9 @@ +tool_specific: + gcc_arm: + misc: + common_flags: + - -flto + ld_flags: + - -flto + - -flto-partition=none + - -fuse-linker-plugin From 38c2ff12422bf8be178cb79cd449dc1672bb250a Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Wed, 16 Dec 2020 19:38:16 -0600 Subject: [PATCH 12/13] The $@ trick only works with make --- records/tools/gcc_arm.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/records/tools/gcc_arm.yaml b/records/tools/gcc_arm.yaml index 3d3424290..f2befd94b 100644 --- a/records/tools/gcc_arm.yaml +++ b/records/tools/gcc_arm.yaml @@ -23,7 +23,6 @@ tool_specific: - -fshort-wchar - -fno-common - -ffreestanding - - -Wa,-adln=$@.lst - -fverbose-asm - -mno-unaligned-access ld_flags: @@ -40,3 +39,7 @@ tool_specific: - tools/pre_build_script.sh post_build_script: - tools/post_build_script_gcc.sh + make_gcc_arm: + misc: + common_flags: + - -Wa,-adln=$@.lst From 0a63092a04f3f892a87f10e3a4748815d409b6ba Mon Sep 17 00:00:00 2001 From: Mathias Brossard Date: Thu, 17 Dec 2020 22:23:47 -0600 Subject: [PATCH 13/13] Fixes to remove armclang warnings --- source/daplink/cmsis-dap/SW_DP.c | 4 ++-- source/daplink/interface/bootloader_update.c | 2 ++ source/usb/usb_lib.c | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/source/daplink/cmsis-dap/SW_DP.c b/source/daplink/cmsis-dap/SW_DP.c index 932cfceb8..59d22d934 100644 --- a/source/daplink/cmsis-dap/SW_DP.c +++ b/source/daplink/cmsis-dap/SW_DP.c @@ -32,7 +32,7 @@ #pragma push #pragma O3 #pragma Otime -#elif defined(__GNUC__) +#elif defined(__GNUC__) && !defined(__ARMCC_VERSION) #pragma GCC push_options #pragma GCC optimize("O3") #endif @@ -296,6 +296,6 @@ uint8_t SWD_Transfer(uint32_t request, uint32_t *data) { #if defined(__CC_ARM) #pragma pop -#elif defined(__GNUC__) +#elif defined(__GNUC__) && !defined(__ARMCC_VERSION) #pragma GCC pop_options #endif diff --git a/source/daplink/interface/bootloader_update.c b/source/daplink/interface/bootloader_update.c index c02170670..2af91401b 100644 --- a/source/daplink/interface/bootloader_update.c +++ b/source/daplink/interface/bootloader_update.c @@ -29,9 +29,11 @@ #include "daplink.h" #include "crc.h" +#if defined(__CC_ARM) // Supress the warning 'null argument provided for parameter marked with attribute "nonnull"' // since the vector table is at address 0 #pragma diag_suppress 2748 +#endif #if !defined(DAPLINK_BOOTLOADER_UPDATE) #define DAPLINK_BOOTLOADER_UPDATE 0 diff --git a/source/usb/usb_lib.c b/source/usb/usb_lib.c index 12f7b694f..cbf06ff96 100644 --- a/source/usb/usb_lib.c +++ b/source/usb/usb_lib.c @@ -162,7 +162,7 @@ U8 USBD_Bulk_BulkOutBuf[USBD_BULK_MAX_PACKET]; #if (USBD_HID_ENABLE) #ifndef __RTX -void USBD_Configure_Event(void) +__WEAK void USBD_Configure_Event(void) { USBD_HID_Configure_Event(); } @@ -1056,7 +1056,7 @@ BOOL USBD_EndPoint0_Out_CLS_ReqToEP(void) #if ((USBD_CDC_ACM_ENABLE)) #ifndef __RTX -void USBD_Reset_Event(void) +__WEAK void USBD_Reset_Event(void) { #if (USBD_CDC_ACM_ENABLE) USBD_CDC_ACM_Reset_Event(); @@ -1070,7 +1070,7 @@ void USBD_Reset_Event(void) #if ((USBD_HID_ENABLE) || (USBD_ADC_ENABLE) || (USBD_CDC_ACM_ENABLE) || (USBD_CLS_ENABLE)) #ifndef __RTX -void USBD_SOF_Event(void) +__WEAK void USBD_SOF_Event(void) { #if (USBD_HID_ENABLE) USBD_HID_SOF_Event();