From 846741cdd465d3fa7efdb97d5d0a74f46a7cb053 Mon Sep 17 00:00:00 2001 From: Roland Sahlsten Date: Tue, 27 Sep 2011 20:44:01 +0000 Subject: added FreeRTOS and CMSIS git-svn-id: https://svn.spreadspace.org/mur.sat@175 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- contrib/FreeRTOS_Library/demo_code/basic_io.c | 66 ++++++++++++++++++++++ contrib/FreeRTOS_Library/demo_code/basic_io.h | 40 +++++++++++++ contrib/FreeRTOS_Library/demo_code/consoleprint.c | 68 +++++++++++++++++++++++ contrib/FreeRTOS_Library/demo_code/consoleprint.h | 52 +++++++++++++++++ 4 files changed, 226 insertions(+) create mode 100644 contrib/FreeRTOS_Library/demo_code/basic_io.c create mode 100644 contrib/FreeRTOS_Library/demo_code/basic_io.h create mode 100644 contrib/FreeRTOS_Library/demo_code/consoleprint.c create mode 100644 contrib/FreeRTOS_Library/demo_code/consoleprint.h (limited to 'contrib/FreeRTOS_Library/demo_code') 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 +#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 +#include +#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_ */ -- cgit v1.2.3