summaryrefslogtreecommitdiff
path: root/contrib/FreeRTOS_Library/demo_code
diff options
context:
space:
mode:
authorRoland Sahlsten <Roland.Sahlsten.ASE10@fh-joanneum.at>2011-09-27 20:44:01 +0000
committerRoland Sahlsten <Roland.Sahlsten.ASE10@fh-joanneum.at>2011-09-27 20:44:01 +0000
commit846741cdd465d3fa7efdb97d5d0a74f46a7cb053 (patch)
tree47a928308610ce6f42ff092604c5e62d0f5d817e /contrib/FreeRTOS_Library/demo_code
parentadded contrib dir (diff)
added FreeRTOS and CMSIS
git-svn-id: https://svn.spreadspace.org/mur.sat@175 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'contrib/FreeRTOS_Library/demo_code')
-rw-r--r--contrib/FreeRTOS_Library/demo_code/basic_io.c66
-rw-r--r--contrib/FreeRTOS_Library/demo_code/basic_io.h40
-rw-r--r--contrib/FreeRTOS_Library/demo_code/consoleprint.c68
-rw-r--r--contrib/FreeRTOS_Library/demo_code/consoleprint.h52
4 files changed, 226 insertions, 0 deletions
diff --git a/contrib/FreeRTOS_Library/demo_code/basic_io.c b/contrib/FreeRTOS_Library/demo_code/basic_io.c
new file mode 100644
index 0000000..69f9ebb
--- /dev/null
+++ b/contrib/FreeRTOS_Library/demo_code/basic_io.c
@@ -0,0 +1,66 @@
+/*
+ FreeRTOS V6.0.0 - Copyright (C) 2009 Real Time Engineers Ltd.
+
+ This file is part of the FreeRTOS distribution.
+
+ FreeRTOS is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License (version 2) as published by the
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
+ ***NOTE*** The exception to the GPL is included to allow you to distribute
+ a combined work that includes FreeRTOS without being obliged to provide the
+ source code for proprietary components outside of the FreeRTOS kernel.
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details. You should have received a copy of the GNU General Public
+ License and the FreeRTOS license exception along with FreeRTOS; if not it
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained
+ by writing to Richard Barry, contact details for whom are available on the
+ FreeRTOS WEB site.
+
+ 1 tab == 4 spaces!
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+#include <stdio.h>
+#include "consoleprint.h"
+
+#include "FreeRTOS.h"
+#include "task.h"
+
+#define ioMAX_MSG_LEN ( 50 )
+static char cBuffer[ ioMAX_MSG_LEN ];
+
+void vPrintString( const char *pcString )
+{
+ /* Print the string, suspending the scheduler as method of mutual
+ exclusion. */
+ vTaskSuspendAll();
+ {
+ sprintf( cBuffer, "%s", pcString );
+ consoleprint( cBuffer );
+ }
+ xTaskResumeAll();
+}
+/*-----------------------------------------------------------*/
+
+void vPrintStringAndNumber( const char *pcString, unsigned long ulValue )
+{
+ /* Print the string, suspending the scheduler as method of mutual
+ exclusion. */
+ vTaskSuspendAll();
+ {
+ sprintf( cBuffer, "%s %lu\n", pcString, ulValue );
+ consoleprint( cBuffer );
+ }
+ xTaskResumeAll();
+}
+
+
diff --git a/contrib/FreeRTOS_Library/demo_code/basic_io.h b/contrib/FreeRTOS_Library/demo_code/basic_io.h
new file mode 100644
index 0000000..aa8b8f6
--- /dev/null
+++ b/contrib/FreeRTOS_Library/demo_code/basic_io.h
@@ -0,0 +1,40 @@
+/*
+ FreeRTOS V6.0.0 - Copyright (C) 2009 Real Time Engineers Ltd.
+
+ This file is part of the FreeRTOS distribution.
+
+ FreeRTOS is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License (version 2) as published by the
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
+ ***NOTE*** The exception to the GPL is included to allow you to distribute
+ a combined work that includes FreeRTOS without being obliged to provide the
+ source code for proprietary components outside of the FreeRTOS kernel.
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details. You should have received a copy of the GNU General Public
+ License and the FreeRTOS license exception along with FreeRTOS; if not it
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained
+ by writing to Richard Barry, contact details for whom are available on the
+ FreeRTOS WEB site.
+
+ 1 tab == 4 spaces!
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+#ifndef BASIC_IO_H
+#define BASIC_IO_H
+
+void vPrintString( const portCHAR *pcString );
+void vPrintStringAndNumber( const portCHAR *pcString, unsigned portLONG ulValue );
+
+#endif
+
diff --git a/contrib/FreeRTOS_Library/demo_code/consoleprint.c b/contrib/FreeRTOS_Library/demo_code/consoleprint.c
new file mode 100644
index 0000000..569a7a1
--- /dev/null
+++ b/contrib/FreeRTOS_Library/demo_code/consoleprint.c
@@ -0,0 +1,68 @@
+//*****************************************************************************
+// +--+
+// | ++----+
+// +-++ |
+// | |
+// +-+--+ |
+// | +--+--+
+// +----+ Copyright (c) 2009 Code Red Technologies Ltd.
+//
+// consoleprint.c - provides a "print string to console" function that uses
+// the CodeRed semihosting debug channel functionality.
+//
+// Software License Agreement
+//
+// The software is owned by Code Red Technologies and/or its suppliers, and is
+// protected under applicable copyright laws. All rights are reserved. Any
+// use in violation of the foregoing restrictions may subject the user to criminal
+// sanctions under applicable laws, as well as to civil liability for the breach
+// of the terms and conditions of this license.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
+// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
+// USE OF THIS SOFTWARE FOR COMMERCIAL DEVELOPMENT AND/OR EDUCATION IS SUBJECT
+// TO A CURRENT END USER LICENSE AGREEMENT (COMMERCIAL OR EDUCATIONAL) WITH
+// CODE RED TECHNOLOGIES LTD.
+//
+//*****************************************************************************
+
+#include <stdio.h>
+#include <string.h>
+#include "consoleprint.h"
+
+/*
+ * Prototype for Code Red library stub function that carries out
+ * semihosting "SYS_WRITE" operation. Note that Code Red makes no
+ * guarantees that the interface to this stub function will not
+ * change in future versions of the tools.
+ */
+#if (defined(__NEWLIB__))
+#define LIBSTUB_SYS_WRITE _swiwrite
+#else // __REDLIB__
+#define LIBSTUB_SYS_WRITE __write
+#endif
+int LIBSTUB_SYS_WRITE (int, char *, int);
+
+/*
+ * consoleprint() - provides a "print string to console" function that uses
+ * the CodeRed semihosting debug channel functionality. Because this can
+ * send a full string in one operation, rather than a single character (as
+ * using printf will) this will provide faster prints to the console.
+ *
+ * Input - pointer to zero-terminated character string
+ * Returns 0 if successful
+ *
+ * Note that in order to consoleprint() to actually display to the console,
+ * the semihosting interface using stdout must have been setup. The easiest
+ * way to do this is to call printf() once at the start of your application
+ */
+int consoleprint(char *cpstring)
+{
+ int slen, res;
+ // Calculate length of string
+ slen = strlen (cpstring);
+ // Call function to carry out semihosting "SYS_WRITE" operation
+ res = LIBSTUB_SYS_WRITE (0, cpstring,slen); // Note that '0' represents stdout
+ return res;
+}
diff --git a/contrib/FreeRTOS_Library/demo_code/consoleprint.h b/contrib/FreeRTOS_Library/demo_code/consoleprint.h
new file mode 100644
index 0000000..f9eb6af
--- /dev/null
+++ b/contrib/FreeRTOS_Library/demo_code/consoleprint.h
@@ -0,0 +1,52 @@
+//*****************************************************************************
+// +--+
+// | ++----+
+// +-++ |
+// | |
+// +-+--+ |
+// | +--+--+
+// +----+ Copyright (c) 2009 Code Red Technologies Ltd.
+//
+// consoleprint.h - provides a "print string to console" function that uses
+// the CodeRed semihosting debug channel functionality.
+//
+// Software License Agreement
+//
+// The software is owned by Code Red Technologies and/or its suppliers, and is
+// protected under applicable copyright laws. All rights are reserved. Any
+// use in violation of the foregoing restrictions may subject the user to criminal
+// sanctions under applicable laws, as well as to civil liability for the breach
+// of the terms and conditions of this license.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
+// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
+// USE OF THIS SOFTWARE FOR COMMERCIAL DEVELOPMENT AND/OR EDUCATION IS SUBJECT
+// TO A CURRENT END USER LICENSE AGREEMENT (COMMERCIAL OR EDUCATIONAL) WITH
+// CODE RED TECHNOLOGIES LTD.
+//
+//*****************************************************************************
+
+#ifndef CONSOLEPRINT_H_
+#define CONSOLEPRINT_H_
+
+//#if !(defined(__REDLIB__))
+//#error "consoleprint.c can only be built for projects built with Redlib"
+//#endif
+
+/*
+ * consoleprint() - provides a "print string to console" function that uses
+ * the CodeRed semihosting debug channel functionality. Because this can
+ * send a full string in one operation, rather than a single character (as
+ * using printf will) this will provide faster prints to the console.
+ *
+ * Input - pointer to zero-terminated character string
+ * Returns 0 if successful
+ *
+ * Note that in order to consoleprint() to actually display to the console,
+ * the semihosting interface using stdout must have been setup. The easiest
+ * way to do this is to call printf() once at the start of your application
+ */
+int consoleprint(char *cpstring);
+
+#endif /* LED_CONFIG_H_ */