diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2019-05-05 14:28:55 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2019-05-06 15:46:57 +0000 |
commit | af05d40c27b0d290ae68220c663b6448aadf4413 (patch) | |
tree | 170aba525aca4dd2d64c320fa2e9000cae90558f /examples | |
parent | 8877aae0050e6323b79b1d77d83309a2928724ec (diff) |
baremetal: Add example for SDCC toolchain for 8051 architecture
Change-Id: I4a7dfadcefdca0b8c26167188c46fbc5cdd4766b
Reviewed-by: Richard Weickelt <richard@weickelt.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/baremetal/cc2540usbdongle/greenblink/greenblink.qbs | 10 | ||||
-rw-r--r-- | examples/baremetal/cc2540usbdongle/greenblink/system.h | 14 |
2 files changed, 19 insertions, 5 deletions
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 @@ -105,6 +106,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 <intrinsics.h> # 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 <intrins.h> # define system_nop() _nop_() -# define SFR(name, addr) sfr name = addr; +# define DEFINE_SFR(name, addr) sfr name = addr; +#elif defined (__SDCC_mcs51) +#include <mcs51/compiler.h> +# 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 } |