diff --git a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.cproject b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.cproject index 72d6f0a049..5aee497bd8 100644 --- a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.cproject +++ b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.cproject @@ -69,18 +69,6 @@ </tool> </toolChain> </folderInfo> - <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.debug.840887560.620646012" name="/" resourcePath="FreeRTOS+CLI/Examples"> - <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.debug.2111927848" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.debug" unusedChildren=""> - <option id="cdt.managedbuild.option.gnu.cross.prefix.1982152472.1688335078" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix.1982152472"/> - <option id="cdt.managedbuild.option.gnu.cross.path.859871788.1933970670" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path.859871788"/> - <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.941709227" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler.909202128"/> - <tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.2304967" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler.81973727"/> - <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.344179079" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker.451869963"/> - <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.285236367" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker.372124763"/> - <tool id="cdt.managedbuild.tool.gnu.cross.archiver.1219871621" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver.550935274"/> - <tool id="cdt.managedbuild.tool.gnu.cross.assembler.105343637" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler.738229482"/> - </toolChain> - </folderInfo> <sourceEntries> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> </sourceEntries> @@ -99,5 +87,9 @@ </scannerConfigBuildInfo> </storageModule> <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> - <storageModule moduleId="refreshScope"/> + <storageModule moduleId="refreshScope" versionNumber="2"> + <configuration configurationName="Debug"> + <resource resourceType="PROJECT" workspacePath="/RTOSDemo"/> + </configuration> + </storageModule> </cproject> diff --git a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.project b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.project index b15285eb01..0efd9f6da3 100644 --- a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.project +++ b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/.project @@ -40,10 +40,15 @@ <locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common</locationURI> </link> <link> - <name>FreeRTOS+CLI/Examples</name> + <name>FreeRTOS+CLI/CLI_Examples</name> <type>2</type> <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos</locationURI> </link> + <link> + <name>FreeRTOS+CLI/Examples</name> + <type>2</type> + <location>C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos</location> + </link> </linkedResources> <filteredResources> <filter> @@ -65,7 +70,25 @@ </matcher> </filter> <filter> - <id>1412167807232</id> + <id>1412856477507</id> + <name>FreeRTOS+CLI/CLI_Examples</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-Sample-CLI-commands.c</arguments> + </matcher> + </filter> + <filter> + <id>1412856477537</id> + <name>FreeRTOS+CLI/CLI_Examples</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-UARTCommandConsole.c</arguments> + </matcher> + </filter> + <filter> + <id>1412859886777</id> <name>FreeRTOS+CLI/Examples</name> <type>5</type> <matcher> @@ -74,7 +97,7 @@ </matcher> </filter> <filter> - <id>1412167807242</id> + <id>1412859886785</id> <name>FreeRTOS+CLI/Examples</name> <type>5</type> <matcher> diff --git a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/Altera_Code/SoCSupport/uart0_support.c b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/Altera_Code/SoCSupport/uart0_support.c index 356a3e1a92..855f4ba1ae 100644 --- a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/Altera_Code/SoCSupport/uart0_support.c +++ b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/Altera_Code/SoCSupport/uart0_support.c @@ -56,7 +56,7 @@ ALT_STATUS_CODE uart0_init(void) { ALT_STATUS_CODE uart0_uninit(void) { - ALT_STATUS_CODE status; + ALT_STATUS_CODE status = 0; status += alt_16550_disable(&g_uart0_handle); diff --git a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/FreeRTOSConfig.h index 5f5d9d57ed..cfa2a3fd93 100644 --- a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/FreeRTOSConfig.h +++ b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/FreeRTOSConfig.h @@ -109,6 +109,17 @@ */ #define configMAX_API_CALL_INTERRUPT_PRIORITY 18 +/* The application will define the array used as the RTOS heap to ensure it can +be located in the (faster) on-chip RAM. Whe this parameter is set to 1 the +application must define an array using the name and size as follows below, but +is free to locate the array in any suitable RAM region (the faster the better as +the stacks used by the tasks are allocated from this array): + +uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; + +*/ +#define configAPPLICATION_ALLOCATED_HEAP 1 + #define configCPU_CLOCK_HZ /* Not used in this portabsciex.com. */ #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 #define configUSE_TICKLESS_IDLE 0 diff --git a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/main.c b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/main.c index 27580cdb12..5847350b91 100644 --- a/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/main.c +++ b/FreeRTOS/Demo/CORTEX_A9_Cyclone_V_SoC_DK/main.c @@ -114,7 +114,7 @@ * When mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0 the comprehensive test * and demo application will be run. */ -#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0 +#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1 /*-----------------------------------------------------------*/ @@ -142,6 +142,21 @@ void vApplicationTickHook( void ); /*-----------------------------------------------------------*/ +/* configAPPLICATION_ALLOCATED_HEAP is set to 1 in FreeRTOSConfig.h so the +application can define the array used as the FreeRTOS heap. This is done so the +heap can be forced into fast internal RAM - useful because the stacks used by +the tasks come from this space. */ +uint8_t ucHeap[ configTOTAL_HEAP_SIZE ] __attribute__ ( ( section( ".oc_ram" ) ) ); + +/* FreeRTOS uses its own interrupt handler code. This code cannot use the array +of handlers defined by the Altera drivers because the array is declared static, +and so not accessible outside of the dirver's source file. Instead declare an +array for use by the FreeRTOS handler. See: +http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html. */ +static INT_DISPATCH_t xISRHandlers[ ALT_INT_PROVISION_INT_COUNT ]; + +/*-----------------------------------------------------------*/ + int main( void ) { /* Configure the hardware ready to run the demo. */ @@ -305,7 +320,6 @@ void FreeRTOS_Tick_Handler( void ); vRegisterIRQHandler( ALT_INT_INTERRUPT_PPI_TIMER_PRIVATE, ( alt_int_callback_t ) FreeRTOS_Tick_Handler, NULL ); /* This tick interrupt must run at the lowest priority. */ -#warning Is this the correct way of specifying the priority value? alt_int_dist_priority_set( ALT_INT_INTERRUPT_PPI_TIMER_PRIVATE, portLOWEST_USABLE_INTERRUPT_PRIORITY << portPRIORITY_SHIFT ); /* Ensure the interrupt is forwarded to the CPU. */ @@ -318,9 +332,6 @@ void FreeRTOS_Tick_Handler( void ); } /*-----------------------------------------------------------*/ -#warning A separate array of handlers is maintained as the drivers array is static so cannot be reached and the handler is incompatible. -static INT_DISPATCH_t xISRHandlers[ ALT_INT_PROVISION_INT_COUNT ]; - void vRegisterIRQHandler( uint32_t ulID, alt_int_callback_t pxHandlerFunction, void *pvContext ) { if( ulID < ALT_INT_PROVISION_INT_COUNT )