aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2019-05-05 14:28:55 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2019-05-06 15:46:57 +0000
commitaf05d40c27b0d290ae68220c663b6448aadf4413 (patch)
tree170aba525aca4dd2d64c320fa2e9000cae90558f /examples
parent8877aae0050e6323b79b1d77d83309a2928724ec (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.qbs10
-rw-r--r--examples/baremetal/cc2540usbdongle/greenblink/system.h14
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
}