From: richardbarry Date: Sun, 13 Jun 2010 13:57:47 +0000 (+0000) Subject: Removed outdated AVR32 demo. X-Git-Tag: V6.1.0~107 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=38cd7626d66606cb4568a88e9883afe500b04094;p=freertos Removed outdated AVR32 demo. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1028 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- diff --git a/Demo/AVR32_UC3/FreeRTOSConfig.h b/Demo/AVR32_UC3/FreeRTOSConfig.h deleted file mode 100644 index 5b22c861c..000000000 --- a/Demo/AVR32_UC3/FreeRTOSConfig.h +++ /dev/null @@ -1,139 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FreeRTOS demonstration for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include "board.h" - - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( FOSC0 ) /* Hz clk gen */ -#define configPBA_CLOCK_HZ ( FOSC0 ) -#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) -#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 8 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 ) -/* configTOTAL_HEAP_SIZE is not used when heap_3.c is used. */ -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 1024*25 ) ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 0 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 0 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 0 -#define INCLUDE_xTaskGetSchedulerState 1 - -/* configTICK_USE_TC is a boolean indicating whether to use a Timer Counter - for the tick generation. Timer Counter will generate an accurate Tick; - otherwise the CPU will generate a tick but with time drift. - configTICK_TC_CHANNEL is the TC channel. */ -#define configTICK_USE_TC 1 -#define configTICK_TC_CHANNEL 2 - -/* configHEAP_INIT is a boolean indicating whether to initialize the heap with - 0xA5 in order to be able to determine the maximal heap consumption. */ -#define configHEAP_INIT 0 - -/* Debug trace configuration. - configDBG is a boolean indicating whether to activate the debug trace. */ -#if BOARD == EVK1100 -#define configDBG 1 -#define configDBG_USART (&AVR32_USART1) -#define configDBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -#define configDBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -#define configDBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -#define configDBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -#define configDBG_USART_BAUDRATE 57600 -#define serialPORT_USART (&AVR32_USART0) -#define serialPORT_USART_RX_PIN AVR32_USART0_RXD_0_PIN -#define serialPORT_USART_RX_FUNCTION AVR32_USART0_RXD_0_FUNCTION -#define serialPORT_USART_TX_PIN AVR32_USART0_TXD_0_PIN -#define serialPORT_USART_TX_FUNCTION AVR32_USART0_TXD_0_FUNCTION -#define serialPORT_USART_IRQ AVR32_USART0_IRQ -#define serialPORT_USART_BAUDRATE 57600 -#elif BOARD == EVK1101 -#define configDBG 1 -#define configDBG_USART (&AVR32_USART1) -#define configDBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -#define configDBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -#define configDBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -#define configDBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -#define configDBG_USART_BAUDRATE 57600 -#define serialPORT_USART (&AVR32_USART1) -#define serialPORT_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -#define serialPORT_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -#define serialPORT_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -#define serialPORT_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -#define serialPORT_USART_IRQ AVR32_USART1_IRQ -#define serialPORT_USART_BAUDRATE 57600 -#endif - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/Demo/AVR32_UC3/documentation.h b/Demo/AVR32_UC3/documentation.h deleted file mode 100644 index aefc799be..000000000 --- a/Demo/AVR32_UC3/documentation.h +++ /dev/null @@ -1,72 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FreeRTOS application example for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/*! \mainpage - * \section intro Introduction - * - * This is the documentation for the data structures, functions, variables, - * defines, enums, and typedefs for the FreeRTOS application. - * - * \image html freertos.gif - * - * FreeRTOS.orgTM is a portable, open source, mini Real Time Kernel - a - * free to download and royalty free RTOS that can be used in commercial - * applications (see license text). This site shows how a complete embedded - * real time system can be created from a Windows host using quality open - * source development tools (where available). See the FreeRTOS.org features - * summary. - * Highlights include: - * - Free RTOS kernel - preemptive, cooperative and hybrid configuration options. - * - Designed to be small, simple and easy to use. - * - Very portable code structure predominantly written in C. - * - Supports both tasks and co-routines. - * - No software restriction on the number of tasks that can be created. - * - No software restriction on the number of priorities that can be used. - * - No restrictions imposed on priority assignment - more than one task can be assigned the same priority. - * - Queues and semaphores for communication and synchronisation between tasks, or between tasks and interrupts. - * - Free embedded software source code. - * - Royalty free. - * - Cross development from a standard Windows host. - * - Pre-configured demo applications for selected single board computers allowing 'out of the box' operation and fast learning curve. - * - Compile time configuration allows small FLASH footprint - * - The SafeRTOS derivative product provides a high level of confidence in the code integrity. - * - * \section files Main Files - * - main.c : FreeRTOS example - * - * \section compilinfo Compilation Information - * This software is written for GNU GCC for AVR32 and for IAR Embedded Workbench - * for Atmel AVR32. Other compilers may or may not work. - * - * \section deviceinfo Device Information - * All AVR32 devices can be used. - * - * \section configinfo Configuration Information - * This example has been tested with the following configuration: - * - EVK1100 evaluation kit; - * - CPU clock: 12 MHz; - * - USART0 connected to a PC serial port via a standard RS232 DB9 cable; - * - PC terminal settings: - * - 57600 bps, - * - 8 data bits, - * - no parity bit, - * - 1 stop bit, - * - no flow control. - * - * \section contactinfo Contact Information - * For further information, visit - * Atmel AVR32. and - * FreeRTOS home page.\n - * Support and FAQ: http://support.atmel.no/ - */ diff --git a/Demo/AVR32_UC3/doxyfile.doxygen b/Demo/AVR32_UC3/doxyfile.doxygen deleted file mode 100644 index 17d8679e9..000000000 --- a/Demo/AVR32_UC3/doxyfile.doxygen +++ /dev/null @@ -1,231 +0,0 @@ -# Doxyfile 1.4.7 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "AVR32 UC3 - FreeRTOS Real Time Kernel" -PROJECT_NUMBER = -OUTPUT_DIRECTORY = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = YES -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 4 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = YES -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = NO -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ./ ./../../Source ./../Common/include ./../Common/Minimal -FILE_PATTERNS = *.c \ - *.h -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = ./ -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = YES -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = DOC -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = RTF -COMPACT_RTF = NO -RTF_HYPERLINKS = YES -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = __GNUC__=4 \ - __attribute__()= \ - __AVR32__=1 \ - __AVR32_UC3A0512__=1 \ - __AVR32_ABI_COMPILER__ \ - BOARD=EVK1100 -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = NO -COLLABORATION_GRAPH = NO -GROUP_GRAPHS = NO -UML_LOOK = YES -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = NO -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = NO -DIRECTORY_GRAPH = NO -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/Demo/AVR32_UC3/freertos.gif b/Demo/AVR32_UC3/freertos.gif deleted file mode 100644 index 1ca6d2ec4..000000000 Binary files a/Demo/AVR32_UC3/freertos.gif and /dev/null differ diff --git a/Demo/AVR32_UC3/main.c b/Demo/AVR32_UC3/main.c deleted file mode 100644 index 18aebf036..000000000 --- a/Demo/AVR32_UC3/main.c +++ /dev/null @@ -1,492 +0,0 @@ -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FreeRTOS Real Time Kernel example. - * - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the demo application tasks. - * - * Main. c also creates a task called "Check". This only executes every three - * seconds but has the highest priority so is guaranteed to get processor time. - * Its main function is to check that all the other tasks are still operational. - * Each task that does not flash an LED maintains a unique count that is - * incremented each time the task successfully completes its function. Should - * any error occur within such a task the count is permanently halted. The - * check task inspects the count of each task to ensure it has changed since - * the last time the check task executed. If all the count variables have - * changed all the tasks are still executing error free, and the check task - * toggles an LED. Should any task contain an error at any time the LED toggle - * will stop. - * - * The LED flash and communications test tasks do not maintain a count. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with GPIO. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* - FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd. - - *************************************************************************** - * * - * If you are: * - * * - * + New to FreeRTOS, * - * + Wanting to learn FreeRTOS or multitasking in general quickly * - * + Looking for basic training, * - * + Wanting to improve your FreeRTOS skills and productivity * - * * - * then take a look at the FreeRTOS eBook * - * * - * "Using the FreeRTOS Real Time Kernel - a Practical Guide" * - * http://www.FreeRTOS.org/Documentation * - * * - * A pdf reference manual is also available. Both are usually delivered * - * to your inbox within 20 minutes to two hours when purchased between 8am * - * and 8pm GMT (although please allow up to 24 hours in case of * - * exceptional circumstances). Thank you for your support! * - * * - *************************************************************************** - - 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 -#include - -/* Environment header files. */ -#include "pm.h" - -/* Scheduler header files. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo file headers. */ -#include "partest.h" -#include "serial.h" -#include "integer.h" -#include "comtest.h" -#include "flash.h" -#include "PollQ.h" -#include "semtest.h" -#include "dynamic.h" -#include "BlockQ.h" -#include "death.h" -#include "flop.h" - -/*! \name Priority definitions for most of the tasks in the demo application. - * Some tasks just use the idle priority. - */ -//! @{ -#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -//! @} - -//! Baud rate used by the serial port tasks. -#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 57600 ) - -//! LED used by the serial port tasks. This is toggled on each character Tx, -//! and mainCOM_TEST_LED + 1 is toggled on each character Rx. -#define mainCOM_TEST_LED ( 3 ) - -//! LED that is toggled by the check task. The check task periodically checks -//! that all the other tasks are operating without error. If no errors are found -//! the LED is toggled. If an error is found at any time the LED toggles faster. -#define mainCHECK_TASK_LED ( 6 ) - -//! LED that is set upon error. -#define mainERROR_LED ( 7 ) - -//! The period between executions of the check task. -#define mainCHECK_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS ) - -//! If an error is detected in a task, the vErrorChecks task will enter in an -//! infinite loop flashing the LED at this rate. -#define mainERROR_FLASH_RATE ( (portTickType) 500 / portTICK_RATE_MS ) - -/*! \name Constants used by the vMemCheckTask() task. - */ -//! @{ -#define mainCOUNT_INITIAL_VALUE ( ( unsigned portLONG ) 0 ) -#define mainNO_TASK ( 0 ) -//! @} - -/*! \name The size of the memory blocks allocated by the vMemCheckTask() task. - */ -//! @{ -#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 ) -#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 ) -#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 15 ) -//! @} - - -/*-----------------------------------------------------------*/ - -/* - * The task that executes at the highest priority and calls - * prvCheckOtherTasksAreStillRunning(). See the description at the top - * of the file. - */ -static void vErrorChecks( void *pvParameters ); - -/* - * Checks that all the demo application tasks are still executing without error - * - as described at the top of the file. - */ -static portBASE_TYPE prvCheckOtherTasksAreStillRunning( void ); - -/* - * A task that exercises the memory allocator. - */ -static void vMemCheckTask( void *pvParameters ); - -/* - * Called by the check task following the detection of an error to set the - * LEDs into a state that shows an error has beeen found. - */ -static void prvIndicateError( void ); - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Start the crystal oscillator 0 and switch the main clock to it. */ - pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); - - portDBG_TRACE("Starting the FreeRTOS AVR32 UC3 Demo..."); - - /* Setup the LED's for output. */ - vParTestInitialise(); - - /* Start the standard demo tasks. See the WEB documentation for more - information. */ - vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); - vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( tskIDLE_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartDynamicPriorityTasks(); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vStartMathTasks( tskIDLE_PRIORITY ); - - /* Start the demo tasks defined within this file, specifically the check - task as described at the top of this file. */ - xTaskCreate( - vErrorChecks - , (const signed portCHAR *)"ErrCheck" - , configMINIMAL_STACK_SIZE - , NULL - , mainCHECK_TASK_PRIORITY - , NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - - return 0; -} -/*-----------------------------------------------------------*/ - -/*! - * \brief The task function for the "Check" task. - */ -static void vErrorChecks( void *pvParameters ) -{ -static volatile unsigned portLONG ulDummyVariable = 3UL; -unsigned portLONG ulMemCheckTaskRunningCount; -xTaskHandle xCreatedTask; -portBASE_TYPE bSuicidalTask = 0; - - /* The parameters are not used. Prevent compiler warnings. */ - ( void ) pvParameters; - - /* Cycle for ever, delaying then checking all the other tasks are still - operating without error. - - In addition to the standard tests the memory allocator is tested through - the dynamic creation and deletion of a task each cycle. Each time the - task is created memory must be allocated for its stack. When the task is - deleted this memory is returned to the heap. If the task cannot be created - then it is likely that the memory allocation failed. */ - - for( ;; ) - { - /* Do this only once. */ - if( bSuicidalTask == 0 ) - { - bSuicidalTask++; - - /* This task has to be created last as it keeps account of the number of - tasks it expects to see running. However its implementation expects - to be called before vTaskStartScheduler(). We're in the case here where - vTaskStartScheduler() has already been called (thus the hidden IDLE task - has already been spawned). Since vCreateSuicidalTask() supposes that the - IDLE task isn't included in the response from uxTaskGetNumberOfTasks(), - let the MEM_CHECK task play that role. => this is why vCreateSuicidalTasks() - is not called as the last task. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - } - - /* Reset xCreatedTask. This is modified by the task about to be - created so we can tell if it is executing correctly or not. */ - xCreatedTask = mainNO_TASK; - - /* Dynamically create a task - passing ulMemCheckTaskRunningCount as a - parameter. */ - ulMemCheckTaskRunningCount = mainCOUNT_INITIAL_VALUE; - - if( xTaskCreate( vMemCheckTask, - ( signed portCHAR * ) "MEM_CHECK", - configMINIMAL_STACK_SIZE, - ( void * ) &ulMemCheckTaskRunningCount, - tskIDLE_PRIORITY, &xCreatedTask ) != pdPASS ) - { - /* Could not create the task - we have probably run out of heap. - Don't go any further and flash the LED faster to provide visual - feedback of the error. */ - prvIndicateError(); - } - - /* Delay until it is time to execute again. */ - vTaskDelay( mainCHECK_PERIOD ); - - /* Delete the dynamically created task. */ - if( xCreatedTask != mainNO_TASK ) - { - vTaskDelete( xCreatedTask ); - } - - /* Perform a bit of 32bit maths to ensure the registers used by the - integer tasks get some exercise. The result here is not important - - see the demo application documentation for more info. */ - ulDummyVariable *= 3; - - /* Check all other tasks are still operating without error. - Check that vMemCheckTask did increment the counter. */ - if( ( prvCheckOtherTasksAreStillRunning() != pdFALSE ) - || ( ulMemCheckTaskRunningCount == mainCOUNT_INITIAL_VALUE ) ) - { - /* An error has occurred in one of the tasks. - Don't go any further and flash the LED faster to give visual - feedback of the error. */ - prvIndicateError(); - } - else - { - /* Toggle the LED if everything is okay. */ - vParTestToggleLED( mainCHECK_TASK_LED ); - } - } -} -/*-----------------------------------------------------------*/ - - -/*! - * \brief Checks that all the demo application tasks are still executing without error. - */ -static portBASE_TYPE prvCheckOtherTasksAreStillRunning( void ) -{ -static portBASE_TYPE xErrorHasOccurred = pdFALSE; - - if( xAreComTestTasksStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xAreMathsTaskStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xErrorHasOccurred = pdTRUE; - } - - return ( xErrorHasOccurred ); -} -/*-----------------------------------------------------------*/ - - -/*! - * \brief Dynamically created and deleted during each cycle of the vErrorChecks() - * task. This is done to check the operation of the memory allocator. - * See the top of vErrorChecks for more details. - * - * \param *pvParameters Parameters for the task (can be of any kind) - */ -static void vMemCheckTask( void *pvParameters ) -{ -unsigned portLONG *pulMemCheckTaskRunningCounter; -void *pvMem1, *pvMem2, *pvMem3; -static portLONG lErrorOccurred = pdFALSE; - - /* This task is dynamically created then deleted during each cycle of the - vErrorChecks task to check the operation of the memory allocator. Each time - the task is created memory is allocated for the stack and TCB. Each time - the task is deleted this memory is returned to the heap. This task itself - exercises the allocator by allocating and freeing blocks. - - The task executes at the idle priority so does not require a delay. - - pulMemCheckTaskRunningCounter is incremented each cycle to indicate to the - vErrorChecks() task that this task is still executing without error. */ - - pulMemCheckTaskRunningCounter = ( unsigned portLONG * ) pvParameters; - - for( ;; ) - { - if( lErrorOccurred == pdFALSE ) - { - /* We have never seen an error so increment the counter. */ - ( *pulMemCheckTaskRunningCounter )++; - } - else - { - /* There has been an error so reset the counter so the check task - can tell that an error occurred. */ - *pulMemCheckTaskRunningCounter = mainCOUNT_INITIAL_VALUE; - } - - /* Allocate some memory - just to give the allocator some extra - exercise. This has to be in a critical section to ensure the - task does not get deleted while it has memory allocated. */ - - vTaskSuspendAll(); - { - pvMem1 = pvPortMalloc( mainMEM_CHECK_SIZE_1 ); - - if( pvMem1 == NULL ) - { - lErrorOccurred = pdTRUE; - } - else - { - memset( pvMem1, 0xaa, mainMEM_CHECK_SIZE_1 ); - vPortFree( pvMem1 ); - } - } - xTaskResumeAll(); - - /* Again - with a different size block. */ - vTaskSuspendAll(); - { - pvMem2 = pvPortMalloc( mainMEM_CHECK_SIZE_2 ); - - if( pvMem2 == NULL ) - { - lErrorOccurred = pdTRUE; - } - else - { - memset( pvMem2, 0xaa, mainMEM_CHECK_SIZE_2 ); - vPortFree( pvMem2 ); - } - } - xTaskResumeAll(); - - /* Again - with a different size block. */ - vTaskSuspendAll(); - { - pvMem3 = pvPortMalloc( mainMEM_CHECK_SIZE_3 ); - if( pvMem3 == NULL ) - { - lErrorOccurred = pdTRUE; - } - else - { - memset( pvMem3, 0xaa, mainMEM_CHECK_SIZE_3 ); - vPortFree( pvMem3 ); - } - } - xTaskResumeAll(); - } -} -/*-----------------------------------------------------------*/ - -static void prvIndicateError( void ) -{ - /* The check task has found an error in one of the other tasks. - Set the LEDs to a state that indicates this. */ - vParTestSetLED(mainERROR_LED,pdTRUE); - - for(;;) - { - #if( BOARD==EVK1100 ) - vParTestToggleLED( mainCHECK_TASK_LED ); - vTaskDelay( mainERROR_FLASH_RATE ); - #endif - #if ( BOARD==EVK1101 ) - vParTestSetLED( 0, pdTRUE ); - vParTestSetLED( 1, pdTRUE ); - vParTestSetLED( 2, pdTRUE ); - vParTestSetLED( 3, pdTRUE ); - #endif - } -} -