mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
Carry on working on the Zynq demo - still a work in progress.
This commit is contained in:
parent
3e430b3801
commit
371f6f359a
|
@ -36,6 +36,7 @@
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/GCC/ARM_CA9}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/GCC/ARM_CA9}""/>
|
||||||
</option>
|
</option>
|
||||||
|
<option id="xilinx.gnu.compiler.misc.other.591008063" name="Other flags" superClass="xilinx.gnu.compiler.misc.other" value="-c -fmessage-length=0" valueType="string"/>
|
||||||
<inputType id="xilinx.gnu.arm.c.compiler.input.1279195555" name="C source files" superClass="xilinx.gnu.arm.c.compiler.input"/>
|
<inputType id="xilinx.gnu.arm.c.compiler.input.1279195555" name="C source files" superClass="xilinx.gnu.arm.c.compiler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="xilinx.gnu.arm.cxx.toolchain.compiler.debug.309485210" name="ARM g++ compiler" superClass="xilinx.gnu.arm.cxx.toolchain.compiler.debug">
|
<tool id="xilinx.gnu.arm.cxx.toolchain.compiler.debug.309485210" name="ARM g++ compiler" superClass="xilinx.gnu.arm.cxx.toolchain.compiler.debug">
|
||||||
|
@ -54,6 +55,10 @@
|
||||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="xilinx.gnu.c.linker.option.lscript.609053533" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
<option id="xilinx.gnu.c.linker.option.lscript.609053533" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
|
<option id="xilinx.gnu.c.link.option.ldflags.1670905029" superClass="xilinx.gnu.c.link.option.ldflags" value="" valueType="string"/>
|
||||||
|
<option id="xilinx.gnu.c.link.option.other.1460714584" superClass="xilinx.gnu.c.link.option.other" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="-Map=rtosdemo.map"/>
|
||||||
|
</option>
|
||||||
<inputType id="xilinx.gnu.linker.input.1414431390" superClass="xilinx.gnu.linker.input">
|
<inputType id="xilinx.gnu.linker.input.1414431390" superClass="xilinx.gnu.linker.input">
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
@ -72,17 +77,6 @@
|
||||||
<tool id="xilinx.gnu.arm.size.debug.484243311" name="ARM Print Size" superClass="xilinx.gnu.arm.size.debug"/>
|
<tool id="xilinx.gnu.arm.size.debug.484243311" name="ARM Print Size" superClass="xilinx.gnu.arm.size.debug"/>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<folderInfo id="xilinx.gnu.arm.exe.debug.2107277346.1555222947" name="/" resourcePath="src/Standard_Demo_Tasks/Minimal">
|
|
||||||
<toolChain id="xilinx.gnu.arm.exe.debug.toolchain.1743802113" name="Xilinx ARM GNU Toolchain" superClass="xilinx.gnu.arm.exe.debug.toolchain" unusedChildren="">
|
|
||||||
<tool id="xilinx.gnu.arm.c.toolchain.assembler.debug.335155760" name="ARM gcc assembler" superClass="xilinx.gnu.arm.c.toolchain.assembler.debug.1072989377"/>
|
|
||||||
<tool id="xilinx.gnu.arm.c.toolchain.compiler.debug.540874291" name="ARM gcc compiler" superClass="xilinx.gnu.arm.c.toolchain.compiler.debug.399974114"/>
|
|
||||||
<tool id="xilinx.gnu.arm.cxx.toolchain.compiler.debug.663459635" name="ARM g++ compiler" superClass="xilinx.gnu.arm.cxx.toolchain.compiler.debug.309485210"/>
|
|
||||||
<tool id="xilinx.gnu.arm.toolchain.archiver.1142616239" name="ARM archiver" superClass="xilinx.gnu.arm.toolchain.archiver.1960622276"/>
|
|
||||||
<tool id="xilinx.gnu.arm.c.toolchain.linker.debug.61228036" name="ARM gcc linker" superClass="xilinx.gnu.arm.c.toolchain.linker.debug.2137204862"/>
|
|
||||||
<tool id="xilinx.gnu.arm.cxx.toolchain.linker.debug.946601962" name="ARM g++ linker" superClass="xilinx.gnu.arm.cxx.toolchain.linker.debug.1458226319"/>
|
|
||||||
<tool id="xilinx.gnu.arm.size.debug.486408782" name="ARM Print Size" superClass="xilinx.gnu.arm.size.debug.484243311"/>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
@ -175,4 +169,5 @@
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="refreshScope"/>
|
<storageModule moduleId="refreshScope"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
</cproject>
|
</cproject>
|
||||||
|
|
|
@ -66,6 +66,8 @@
|
||||||
#ifndef FREERTOS_CONFIG_H
|
#ifndef FREERTOS_CONFIG_H
|
||||||
#define FREERTOS_CONFIG_H
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
|
#include "xparameters.h"
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
* Application specific definitions.
|
* Application specific definitions.
|
||||||
*
|
*
|
||||||
|
@ -98,11 +100,11 @@
|
||||||
* "FromISR". FreeRTOS maintains a separate interrupt safe API to enable
|
* "FromISR". FreeRTOS maintains a separate interrupt safe API to enable
|
||||||
* interrupt entry to be shorter, faster, simpler and smaller.
|
* interrupt entry to be shorter, faster, simpler and smaller.
|
||||||
*
|
*
|
||||||
* The Zynq implements 32 unique interrupt priorities. For the purpose of
|
* The Zynq implements 256 unique interrupt priorities. For the purpose of
|
||||||
* setting configMAX_API_CALL_INTERRUPT_PRIORITY 31 represents the lowest
|
* setting configMAX_API_CALL_INTERRUPT_PRIORITY 255 represents the lowest
|
||||||
* priority.
|
* priority.
|
||||||
*/
|
*/
|
||||||
#define configMAX_API_CALL_INTERRUPT_PRIORITY 25
|
#define configMAX_API_CALL_INTERRUPT_PRIORITY 18
|
||||||
|
|
||||||
|
|
||||||
#define configCPU_CLOCK_HZ 100000000UL
|
#define configCPU_CLOCK_HZ 100000000UL
|
||||||
|
@ -157,10 +159,10 @@ readable ASCII form. See the notes in the implementation of vTaskList() within
|
||||||
FreeRTOS/Source/tasks.c for limitations. */
|
FreeRTOS/Source/tasks.c for limitations. */
|
||||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
||||||
|
|
||||||
/* The following constants describe the hardware, and are correct for the
|
/* The following constant describe the hardware, and are correct for the
|
||||||
Zynq MPU. */
|
Zynq MPU. */
|
||||||
#define configINTERRUPT_CONTROLLER_BASE_ADDRESS 0xE8201000
|
#define configINTERRUPT_CONTROLLER_BASE_ADDRESS ( XPAR_PS7_SCUGIC_0_DIST_BASEADDR )
|
||||||
#define configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET 0x1000
|
#define configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET ( -0xf00 )
|
||||||
#define configUNIQUE_INTERRUPT_PRIORITIES 32
|
#define configUNIQUE_INTERRUPT_PRIORITIES 32
|
||||||
|
|
||||||
/* Run time stats gathering definitions. */
|
/* Run time stats gathering definitions. */
|
||||||
|
@ -197,5 +199,7 @@ void vAssertCalled( const char * pcFile, unsigned long ulLine );
|
||||||
void vConfigureTickInterrupt( void );
|
void vConfigureTickInterrupt( void );
|
||||||
#define configSETUP_TICK_INTERRUPT() vConfigureTickInterrupt()
|
#define configSETUP_TICK_INTERRUPT() vConfigureTickInterrupt()
|
||||||
|
|
||||||
|
#define configINSTALL_FREERTOS_VECTOR_TABLE 1
|
||||||
|
|
||||||
#endif /* FREERTOS_CONFIG_H */
|
#endif /* FREERTOS_CONFIG_H */
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
* None.
|
* None.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#if 0
|
|
||||||
#include "xil_errata.h"
|
#include "xil_errata.h"
|
||||||
|
|
||||||
#define __ARM_NEON__ 1
|
#define __ARM_NEON__ 1
|
||||||
|
@ -69,64 +69,37 @@
|
||||||
.text
|
.text
|
||||||
|
|
||||||
.globl _boot
|
.globl _boot
|
||||||
.globl _vector_table
|
.globl _freertos_vector_table
|
||||||
|
|
||||||
.globl FIQInterrupt
|
.globl FIQInterrupt
|
||||||
.globl IRQInterrupt
|
//.globl IRQInterrupt
|
||||||
.globl SWInterrupt
|
//.global SWInterrupt
|
||||||
.globl DataAbortInterrupt
|
.global DataAbortInterrupt
|
||||||
.globl PrefetchAbortInterrupt
|
.global PrefetchAbortInterrupt
|
||||||
|
|
||||||
.globl IRQHandler
|
.extern FreeRTOS_IRQ_Handler
|
||||||
.globl prof_pc
|
.extern FreeRTOS_SWI_Handler
|
||||||
|
|
||||||
.section .vectors
|
//.globl IRQHandler
|
||||||
_vector_table:
|
//.globl prof_pc
|
||||||
|
|
||||||
|
.section .freertos_vectors
|
||||||
|
_freertos_vector_table:
|
||||||
B _boot
|
B _boot
|
||||||
B Undefined
|
B FreeRTOS_Undefined
|
||||||
B SVCHandler
|
ldr pc, _swi
|
||||||
B PrefetchAbortHandler
|
B FreeRTOS_PrefetchAbortHandler
|
||||||
B DataAbortHandler
|
B FreeRTOS_DataAbortHandler
|
||||||
NOP /* Placeholder for address exception vector*/
|
NOP /* Placeholder for address exception vector*/
|
||||||
B IRQHandler
|
LDR PC, _irq
|
||||||
B FIQHandler
|
B FreeRTOS_FIQHandler
|
||||||
|
|
||||||
|
_irq: .word FreeRTOS_IRQ_Handler
|
||||||
|
_swi: .word FreeRTOS_SWI_Handler
|
||||||
|
|
||||||
|
|
||||||
IRQHandler: /* IRQ vector handler */
|
|
||||||
|
|
||||||
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code*/
|
FreeRTOS_FIQHandler: /* FIQ vector handler */
|
||||||
#ifdef __ARM_NEON__
|
|
||||||
vpush {d0-d7}
|
|
||||||
vpush {d16-d31}
|
|
||||||
vmrs r1, FPSCR
|
|
||||||
push {r1}
|
|
||||||
vmrs r1, FPEXC
|
|
||||||
push {r1}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PROFILING
|
|
||||||
ldr r2, =prof_pc
|
|
||||||
subs r3, lr, #0
|
|
||||||
str r3, [r2]
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bl IRQInterrupt /* IRQ vector */
|
|
||||||
|
|
||||||
#ifdef __ARM_NEON__
|
|
||||||
pop {r1}
|
|
||||||
vmsr FPEXC, r1
|
|
||||||
pop {r1}
|
|
||||||
vmsr FPSCR, r1
|
|
||||||
vpop {d16-d31}
|
|
||||||
vpop {d0-d7}
|
|
||||||
#endif
|
|
||||||
ldmia sp!,{r0-r3,r12,lr} /* state restore from compiled code */
|
|
||||||
|
|
||||||
|
|
||||||
subs pc, lr, #4 /* adjust return */
|
|
||||||
|
|
||||||
|
|
||||||
FIQHandler: /* FIQ vector handler */
|
|
||||||
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code */
|
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code */
|
||||||
#ifdef __ARM_NEON__
|
#ifdef __ARM_NEON__
|
||||||
vpush {d0-d7}
|
vpush {d0-d7}
|
||||||
|
@ -152,7 +125,7 @@ FIQLoop:
|
||||||
subs pc, lr, #4 /* adjust return */
|
subs pc, lr, #4 /* adjust return */
|
||||||
|
|
||||||
|
|
||||||
Undefined: /* Undefined handler */
|
FreeRTOS_Undefined: /* Undefined handler */
|
||||||
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code */
|
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code */
|
||||||
|
|
||||||
ldmia sp!,{r0-r3,r12,lr} /* state restore from compiled code */
|
ldmia sp!,{r0-r3,r12,lr} /* state restore from compiled code */
|
||||||
|
@ -162,23 +135,7 @@ Undefined: /* Undefined handler */
|
||||||
movs pc, lr
|
movs pc, lr
|
||||||
|
|
||||||
|
|
||||||
SVCHandler: /* SWI handler */
|
FreeRTOS_DataAbortHandler: /* Data Abort handler */
|
||||||
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code */
|
|
||||||
|
|
||||||
tst r0, #0x20 /* check the T bit */
|
|
||||||
ldrneh r0, [lr,#-2] /* Thumb mode */
|
|
||||||
bicne r0, r0, #0xff00 /* Thumb mode */
|
|
||||||
ldreq r0, [lr,#-4] /* ARM mode */
|
|
||||||
biceq r0, r0, #0xff000000 /* ARM mode */
|
|
||||||
|
|
||||||
bl SWInterrupt /* SWInterrupt: call C function here */
|
|
||||||
|
|
||||||
ldmia sp!,{r0-r3,r12,lr} /* state restore from compiled code */
|
|
||||||
|
|
||||||
subs pc, lr, #4 /* adjust return */
|
|
||||||
|
|
||||||
|
|
||||||
DataAbortHandler: /* Data Abort handler */
|
|
||||||
#ifdef CONFIG_ARM_ERRATA_775420
|
#ifdef CONFIG_ARM_ERRATA_775420
|
||||||
dsb
|
dsb
|
||||||
#endif
|
#endif
|
||||||
|
@ -190,7 +147,7 @@ DataAbortHandler: /* Data Abort handler */
|
||||||
|
|
||||||
subs pc, lr, #4 /* adjust return */
|
subs pc, lr, #4 /* adjust return */
|
||||||
|
|
||||||
PrefetchAbortHandler: /* Prefetch Abort handler */
|
FreeRTOS_PrefetchAbortHandler: /* Prefetch Abort handler */
|
||||||
#ifdef CONFIG_ARM_ERRATA_775420
|
#ifdef CONFIG_ARM_ERRATA_775420
|
||||||
dsb
|
dsb
|
||||||
#endif
|
#endif
|
||||||
|
@ -205,6 +162,6 @@ PrefetchAbortHandler: /* Prefetch Abort handler */
|
||||||
|
|
||||||
.end
|
.end
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V8.0.0:rc2 - Copyright (C) 2014 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 modification 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. Full license text is available from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "Task.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The application must provide a function that configures a peripheral to
|
||||||
|
* create the FreeRTOS tick interrupt, then define configSETUP_TICK_INTERRUPT()
|
||||||
|
* in FreeRTOSConfig.h to call the function. This file contains a function
|
||||||
|
* that is suitable for use on the Renesas RZ MPU.
|
||||||
|
*/
|
||||||
|
void vConfigureTickInterrupt( void )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Crude implementation of a run time counter used to measure how much time
|
||||||
|
* each task spends in the Running state.
|
||||||
|
*/
|
||||||
|
unsigned long ulGetRunTimeCounterValue( void )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vInitialiseRunTimeStats( void )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,13 +30,14 @@ MEMORY
|
||||||
|
|
||||||
/* Specify the default entry point to the program */
|
/* Specify the default entry point to the program */
|
||||||
|
|
||||||
ENTRY(_vector_table)
|
ENTRY(_freertos_vector_table)
|
||||||
|
|
||||||
/* Define the sections, and where they are mapped in memory */
|
/* Define the sections, and where they are mapped in memory */
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
*(.freertos_vectors)
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
*(.boot)
|
*(.boot)
|
||||||
*(.text)
|
*(.text)
|
||||||
|
|
|
@ -100,30 +100,92 @@
|
||||||
#include "xscugic.h"
|
#include "xscugic.h"
|
||||||
#include "xil_exception.h"
|
#include "xil_exception.h"
|
||||||
|
|
||||||
int main()
|
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,
|
||||||
{
|
or 0 to run the more comprehensive test and demo application. */
|
||||||
init_platform();
|
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1
|
||||||
|
|
||||||
print("Hello World\n\r");
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure the hardware as necessary to run this demo.
|
||||||
|
*/
|
||||||
|
static void prvSetupHardware( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||||
|
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
|
||||||
|
*/
|
||||||
|
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1
|
||||||
|
extern void main_blinky( void );
|
||||||
|
#else
|
||||||
|
extern void main_full( void );
|
||||||
|
#endif /* #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 */
|
||||||
|
|
||||||
|
/* Prototypes for the standard FreeRTOS callback/hook functions implemented
|
||||||
|
within this file. */
|
||||||
|
void vApplicationMallocFailedHook( void );
|
||||||
|
void vApplicationIdleHook( void );
|
||||||
|
void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName );
|
||||||
|
void vApplicationTickHook( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates and verifies different files on the volume, demonstrating the use of
|
||||||
|
* various different API functions.
|
||||||
|
*/
|
||||||
|
extern void vCreateAndVerifySampleFiles( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main( void )
|
||||||
|
{
|
||||||
|
/* Configure the hardware ready to run the demo. */
|
||||||
|
prvSetupHardware();
|
||||||
|
|
||||||
|
/* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top
|
||||||
|
of this file. */
|
||||||
|
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1
|
||||||
|
{
|
||||||
|
main_blinky();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
main_full();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
void vAssertCalled( const char * pcFile, unsigned long ulLine )
|
|
||||||
{
|
|
||||||
( void ) pcFile;
|
|
||||||
( void ) ulLine;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void vConfigureTickInterrupt( void )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void prvSetupHardware( void )
|
static void prvSetupHardware( void )
|
||||||
{
|
{
|
||||||
|
int Status;
|
||||||
|
static XScuGic InterruptController; /* Interrupt controller instance */
|
||||||
|
extern void FreeRTOS_IRQ_Handler( void );
|
||||||
|
extern void FreeRTOS_SWI_Handler( void );
|
||||||
|
|
||||||
|
__asm volatile ( "cpsid i" );
|
||||||
Xil_ExceptionInit();
|
Xil_ExceptionInit();
|
||||||
|
|
||||||
|
XScuGic_Config *IntcConfig; /* The configuration parameters of the
|
||||||
|
interrupt controller */
|
||||||
|
/*
|
||||||
|
* Initialize the interrupt controller driver
|
||||||
|
*/
|
||||||
|
IntcConfig = XScuGic_LookupConfig(XPAR_SCUGIC_SINGLE_DEVICE_ID);
|
||||||
|
configASSERT( IntcConfig );
|
||||||
|
configASSERT( IntcConfig->CpuBaseAddress == ( configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET ) );
|
||||||
|
configASSERT( IntcConfig->DistBaseAddress == configINTERRUPT_CONTROLLER_BASE_ADDRESS );
|
||||||
|
|
||||||
|
Status = XScuGic_CfgInitialize(&InterruptController, IntcConfig, IntcConfig->CpuBaseAddress );
|
||||||
|
configASSERT( Status == XST_SUCCESS );
|
||||||
|
|
||||||
|
Xil_ExceptionRegisterHandler( XIL_EXCEPTION_ID_IRQ_INT, (Xil_ExceptionHandler)FreeRTOS_IRQ_Handler, &InterruptController);
|
||||||
|
Xil_ExceptionRegisterHandler( XIL_EXCEPTION_ID_SWI_INT, (Xil_ExceptionHandler)FreeRTOS_SWI_Handler, &InterruptController);
|
||||||
|
|
||||||
|
// Xil_ExceptionEnableMask( XIL_EXCEPTION_ALL );
|
||||||
|
// Xil_ExceptionEnable();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connect the interrupt controller interrupt handler to the hardware
|
* Connect the interrupt controller interrupt handler to the hardware
|
||||||
* interrupt handling logic in the ARM processor.
|
* interrupt handling logic in the ARM processor.
|
||||||
|
@ -142,19 +204,111 @@ static void prvSetupHardware( void )
|
||||||
(void *)8);
|
(void *)8);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vApplicationMallocFailedHook( void )
|
||||||
|
{
|
||||||
|
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
||||||
|
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
||||||
|
internally by FreeRTOS API functions that create tasks, queues, software
|
||||||
|
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
||||||
|
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
||||||
|
taskDISABLE_INTERRUPTS();
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName )
|
||||||
|
{
|
||||||
|
( void ) pcTaskName;
|
||||||
|
( void ) pxTask;
|
||||||
|
|
||||||
|
/* Run time stack overflow checking is performed if
|
||||||
|
configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook
|
||||||
|
function is called if a stack overflow is detected. */
|
||||||
|
taskDISABLE_INTERRUPTS();
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationIdleHook( void )
|
void vApplicationIdleHook( void )
|
||||||
{
|
{
|
||||||
}
|
volatile size_t xFreeHeapSpace;
|
||||||
|
|
||||||
void vApplicationStackOverflowHook( TaskHandle_t xTask, const char * pcTaskName )
|
/* This is just a trivial example of an idle hook. It is called on each
|
||||||
{
|
cycle of the idle task. It must *NOT* attempt to block. In this case the
|
||||||
|
idle task just queries the amount of FreeRTOS heap that remains. See the
|
||||||
|
memory management section on the http://www.FreeRTOS.org web site for memory
|
||||||
|
management options. If there is a lot of heap memory free then the
|
||||||
|
configTOTAL_HEAP_SIZE value in FreeRTOSConfig.h can be reduced to free up
|
||||||
|
RAM. */
|
||||||
|
xFreeHeapSpace = xPortGetFreeHeapSize();
|
||||||
|
|
||||||
|
/* Remove compiler warning about xFreeHeapSpace being set but never used. */
|
||||||
|
( void ) xFreeHeapSpace;
|
||||||
|
|
||||||
|
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY != 1
|
||||||
|
{
|
||||||
|
/* If the file system is only going to be accessed from one task then
|
||||||
|
F_FS_THREAD_AWARE can be set to 0 and the set of example files is
|
||||||
|
created before the RTOS scheduler is started. If the file system is
|
||||||
|
going to be access from more than one task then F_FS_THREAD_AWARE must
|
||||||
|
be set to 1 and the set of sample files are created from the idle task
|
||||||
|
hook function. */
|
||||||
|
#if F_FS_THREAD_AWARE == 1
|
||||||
|
{
|
||||||
|
static portBASE_TYPE xCreatedSampleFiles = pdFALSE;
|
||||||
|
|
||||||
|
/* Initialise the drive and file system, then create a few example
|
||||||
|
files. The output from this function just goes to the stdout window,
|
||||||
|
allowing the output to be viewed when the UDP command console is not
|
||||||
|
connected. */
|
||||||
|
if( xCreatedSampleFiles == pdFALSE )
|
||||||
|
{
|
||||||
|
vCreateAndVerifySampleFiles();
|
||||||
|
xCreatedSampleFiles = pdTRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vAssertCalled( const char * pcFile, unsigned long ulLine )
|
||||||
|
{
|
||||||
|
volatile unsigned long ul = 0;
|
||||||
|
|
||||||
|
( void ) pcFile;
|
||||||
|
( void ) ulLine;
|
||||||
|
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
/* Set ul to a non-zero value using the debugger to step out of this
|
||||||
|
function. */
|
||||||
|
while( ul == 0 )
|
||||||
|
{
|
||||||
|
portNOP();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationTickHook( void )
|
void vApplicationTickHook( void )
|
||||||
{
|
{
|
||||||
|
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0
|
||||||
|
{
|
||||||
|
/* The full demo includes a software timer demo/test that requires
|
||||||
|
prodding periodically from the tick interrupt. */
|
||||||
|
vTimerPeriodicISRTests();
|
||||||
|
|
||||||
|
/* Call the periodic queue overwrite from ISR demo. */
|
||||||
|
vQueueOverwritePeriodicISRDemo();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationIRQHandler( uint32_t ulICCIAR )
|
void vApplicationIRQHandler( uint32_t ulICCIAR )
|
||||||
{
|
{
|
||||||
|
|
232
FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/main_blinky.c
Normal file
232
FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/main_blinky.c
Normal file
|
@ -0,0 +1,232 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V8.0.0:rc2 - Copyright (C) 2014 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 modification 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. Full license text is available from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NOTE 1: This project provides two demo applications. A simple blinky style
|
||||||
|
* project, and a more comprehensive test and demo application. The
|
||||||
|
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select
|
||||||
|
* between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY
|
||||||
|
* in main.c. This file implements the simply blinky style version.
|
||||||
|
*
|
||||||
|
* NOTE 2: This file only contains the source code that is specific to the
|
||||||
|
* basic demo. Generic functions, such FreeRTOS hook functions, and functions
|
||||||
|
* required to configure the hardware are defined in main.c.
|
||||||
|
******************************************************************************
|
||||||
|
*
|
||||||
|
* main_blinky() creates one queue, and two tasks. It then starts the
|
||||||
|
* scheduler.
|
||||||
|
*
|
||||||
|
* The Queue Send Task:
|
||||||
|
* The queue send task is implemented by the prvQueueSendTask() function in
|
||||||
|
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
|
||||||
|
* block for 200 milliseconds, before sending the value 100 to the queue that
|
||||||
|
* was created within main_blinky(). Once the value is sent, the task loops
|
||||||
|
* back around to block for another 200 milliseconds...and so on.
|
||||||
|
*
|
||||||
|
* The Queue Receive Task:
|
||||||
|
* The queue receive task is implemented by the prvQueueReceiveTask() function
|
||||||
|
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly
|
||||||
|
* blocks on attempts to read data from the queue that was created within
|
||||||
|
* main_blinky(). When data is received, the task checks the value of the
|
||||||
|
* data, and if the value equals the expected 100, toggles an LED. The 'block
|
||||||
|
* time' parameter passed to the queue receive function specifies that the
|
||||||
|
* task should be held in the Blocked state indefinitely to wait for data to
|
||||||
|
* be available on the queue. The queue receive task will only leave the
|
||||||
|
* Blocked state when the queue send task writes to the queue. As the queue
|
||||||
|
* send task writes to the queue every 200 milliseconds, the queue receive
|
||||||
|
* task leaves the Blocked state every 200 milliseconds, and therefore toggles
|
||||||
|
* the LED every 200 milliseconds.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Kernel includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "semphr.h"
|
||||||
|
|
||||||
|
/* Standard demo includes. */
|
||||||
|
#include "partest.h"
|
||||||
|
|
||||||
|
/* Priorities at which the tasks are created. */
|
||||||
|
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
|
|
||||||
|
/* The rate at which data is sent to the queue. The 200ms value is converted
|
||||||
|
to ticks using the portTICK_RATE_MS constant. */
|
||||||
|
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS )
|
||||||
|
|
||||||
|
/* The number of items the queue can hold. This is 1 as the receive task
|
||||||
|
will remove items as they are added, meaning the send task should always find
|
||||||
|
the queue empty. */
|
||||||
|
#define mainQUEUE_LENGTH ( 1 )
|
||||||
|
|
||||||
|
/* The LED toggled by the Rx task. */
|
||||||
|
#define mainTASK_LED ( 0 )
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The tasks as described in the comments at the top of this file.
|
||||||
|
*/
|
||||||
|
static void prvQueueReceiveTask( void *pvParameters );
|
||||||
|
static void prvQueueSendTask( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called by main() to create the simply blinky style application if
|
||||||
|
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||||
|
*/
|
||||||
|
void main_blinky( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* The queue used by both tasks. */
|
||||||
|
static xQueueHandle xQueue = NULL;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void main_blinky( void )
|
||||||
|
{
|
||||||
|
/* Create the queue. */
|
||||||
|
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
|
||||||
|
|
||||||
|
if( xQueue != NULL )
|
||||||
|
{
|
||||||
|
/* Start the two tasks as described in the comments at the top of this
|
||||||
|
file. */
|
||||||
|
xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */
|
||||||
|
"Rx", /* The text name assigned to the task - for debug only as it is not used by the kernel. */
|
||||||
|
configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task. */
|
||||||
|
NULL, /* The parameter passed to the task - not used in this case. */
|
||||||
|
mainQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task. */
|
||||||
|
NULL ); /* The task handle is not required, so NULL is passed. */
|
||||||
|
|
||||||
|
xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
|
/* Start the tasks and timer running. */
|
||||||
|
vTaskStartScheduler();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If all is well, the scheduler will now be running, and the following
|
||||||
|
line will never be reached. If the following line does execute, then
|
||||||
|
there was either insufficient FreeRTOS heap memory available for the idle
|
||||||
|
and/or timer tasks to be created, or vTaskStartScheduler() was called from
|
||||||
|
User mode. See the memory management section on the FreeRTOS web site for
|
||||||
|
more details on the FreeRTOS heap http://www.freertos.org/a00111.html. The
|
||||||
|
mode from which main() is called is set in the C start up code and must be
|
||||||
|
a privileged mode (not user mode). */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvQueueSendTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
portTickType xNextWakeTime;
|
||||||
|
const unsigned long ulValueToSend = 100UL;
|
||||||
|
|
||||||
|
/* Remove compiler warning about unused parameter. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
/* Initialise xNextWakeTime - this only needs to be done once. */
|
||||||
|
xNextWakeTime = xTaskGetTickCount();
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Place this task in the blocked state until it is time to run again. */
|
||||||
|
vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
|
||||||
|
|
||||||
|
/* Send to the queue - causing the queue receive task to unblock and
|
||||||
|
toggle the LED. 0 is used as the block time so the sending operation
|
||||||
|
will not block - it shouldn't need to block as the queue should always
|
||||||
|
be empty at this point in the code. */
|
||||||
|
xQueueSend( xQueue, &ulValueToSend, 0U );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvQueueReceiveTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
unsigned long ulReceivedValue;
|
||||||
|
const unsigned long ulExpectedValue = 100UL;
|
||||||
|
|
||||||
|
/* Remove compiler warning about unused parameter. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Wait until something arrives in the queue - this task will block
|
||||||
|
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
|
||||||
|
FreeRTOSConfig.h. */
|
||||||
|
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
|
||||||
|
|
||||||
|
/* To get here something must have been received from the queue, but
|
||||||
|
is it the expected value? If it is, toggle the LED. */
|
||||||
|
if( ulReceivedValue == ulExpectedValue )
|
||||||
|
{
|
||||||
|
vParTestToggleLED( mainTASK_LED );
|
||||||
|
ulReceivedValue = 0U;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.pathentry">
|
<storageModule moduleId="org.eclipse.cdt.core.pathentry">
|
||||||
<pathentry excluding="ps7_cortexa9_0/libsrc/standalone_v3_12_a/src/asm_vectors.S" kind="src" path=""/>
|
<pathentry kind="src" path=""/>
|
||||||
<pathentry kind="out" path=""/>
|
<pathentry kind="out" path=""/>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
</cproject>
|
</cproject>
|
||||||
|
|
|
@ -73,4 +73,15 @@
|
||||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
<nature>org.eclipse.cdt.make.core.makeNature</nature>
|
<nature>org.eclipse.cdt.make.core.makeNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1390399902942</id>
|
||||||
|
<name></name>
|
||||||
|
<type>6</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-name-matches-false-false-asm_vectors.S</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
Release 2013.4 - libgen Xilinx EDK 2013.4 Build EDK_2013.4.20131205
|
|
||||||
(nt)
|
|
||||||
Copyright (c) 1995-2013 Xilinx, Inc. All rights reserved.
|
|
||||||
|
|
||||||
Command Line: libgen -hw ../ZC702_hw_platform/system.xml -pe ps7_cortexa9_0 -log
|
|
||||||
libgen.log system.mss
|
|
||||||
|
|
||||||
|
|
||||||
Staging source files.
|
|
||||||
Running DRCs.
|
|
||||||
Running generate.
|
|
||||||
Running post_generate.
|
|
||||||
Running include - 'make -s include "COMPILER=arm-xilinx-eabi-gcc"
|
|
||||||
"ARCHIVER=arm-xilinx-eabi-ar" "COMPILER_FLAGS= -O2 -c"
|
|
||||||
"EXTRA_COMPILER_FLAGS=-g"'.
|
|
||||||
|
|
||||||
Running libs - 'make -s libs "COMPILER=arm-xilinx-eabi-gcc"
|
|
||||||
"ARCHIVER=arm-xilinx-eabi-ar" "COMPILER_FLAGS= -O2 -c"
|
|
||||||
"EXTRA_COMPILER_FLAGS=-g"'.
|
|
||||||
Running execs_generate.
|
|
|
@ -15,6 +15,7 @@ BEGIN PROCESSOR
|
||||||
PARAMETER DRIVER_NAME = cpu_cortexa9
|
PARAMETER DRIVER_NAME = cpu_cortexa9
|
||||||
PARAMETER DRIVER_VER = 1.01.a
|
PARAMETER DRIVER_VER = 1.01.a
|
||||||
PARAMETER HW_INSTANCE = ps7_cortexa9_0
|
PARAMETER HW_INSTANCE = ps7_cortexa9_0
|
||||||
|
PARAMETER EXTRA_COMPILER_FLAGS = -g -O0
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue