From af05d40c27b0d290ae68220c663b6448aadf4413 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Sun, 5 May 2019 14:28:55 +0300 Subject: baremetal: Add example for SDCC toolchain for 8051 architecture Change-Id: I4a7dfadcefdca0b8c26167188c46fbc5cdd4766b Reviewed-by: Richard Weickelt Reviewed-by: Christian Kandeler --- .../baremetal/cc2540usbdongle/greenblink/greenblink.qbs | 10 ++++++++++ examples/baremetal/cc2540usbdongle/greenblink/system.h | 14 +++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'examples') diff --git a/examples/baremetal/cc2540usbdongle/greenblink/greenblink.qbs b/examples/baremetal/cc2540usbdongle/greenblink/greenblink.qbs index 4dc400404..eb0be6b34 100644 --- a/examples/baremetal/cc2540usbdongle/greenblink/greenblink.qbs +++ b/examples/baremetal/cc2540usbdongle/greenblink/greenblink.qbs @@ -56,6 +56,7 @@ CppApplication { return false; return qbs.toolchain.contains("iar") || qbs.toolchain.contains("keil") + || qbs.toolchain.contains("sdcc") } name: "greenblink" cpp.positionIndependentCode: false @@ -104,6 +105,15 @@ CppApplication { ] } + // + // SDCC-specific properties and sources. + // + + Properties { + condition: qbs.toolchain.contains("sdcc") + cpp.commonCompilerFlags: ["-mmcs51"] + } + // // Common code. // diff --git a/examples/baremetal/cc2540usbdongle/greenblink/system.h b/examples/baremetal/cc2540usbdongle/greenblink/system.h index 0b5027bf9..cdc6302d4 100644 --- a/examples/baremetal/cc2540usbdongle/greenblink/system.h +++ b/examples/baremetal/cc2540usbdongle/greenblink/system.h @@ -58,18 +58,22 @@ extern "C" { #if defined(__ICC8051__) #include # define system_nop() __no_operation() -# define SFR(name,addr) __sfr __no_init volatile unsigned char name @ addr; +# define DEFINE_SFR(name,addr) __sfr __no_init volatile unsigned char name @ addr; #elif defined (__C51__) #include # define system_nop() _nop_() -# define SFR(name, addr) sfr name = addr; +# define DEFINE_SFR(name, addr) sfr name = addr; +#elif defined (__SDCC_mcs51) +#include +# define DEFINE_SFR(name, addr) __sfr __at(addr) name; +# define system_nop() NOP() #else #error "Unsupported toolchain" #endif -SFR(P0 , 0x80u) // Port 0. -SFR(P0SEL, 0xF3u) // Port 0 function select. -SFR(P0DIR, 0xFDu) // Port 0 direction select. +DEFINE_SFR(P0 , 0x80u) // Port 0. +DEFINE_SFR(P0SEL, 0xF3u) // Port 0 function select. +DEFINE_SFR(P0DIR, 0xFDu) // Port 0 direction select. #ifdef __cplusplus } -- cgit v1.2.3