From 2b0a05f1cb186471efbb778f136c7bd6a4887973 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Sat, 27 Aug 2011 14:34:12 +0000 Subject: [PATCH] First version of the MicroBlaze demo with the full Ethernet IP. The Ethernet driver is not yet written. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1569 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../bsp/freertos_v2_00_a/data/freertos.mss | 12 + .../freertos_v2_00_a/data/freertos_v2_1_0.mld | 101 + .../freertos_v2_00_a/data/freertos_v2_1_0.tcl | 806 ++ .../src/CreatingTheDirectoryStructure.txt | 4 + .../freertos_v2_00_a/src/License/license.txt | 435 ++ .../bsp/freertos_v2_00_a/src/Makefile | 77 + .../src/Source/portable/readme.txt | 19 + .../freertos_v2_00_a/src/Source/readme.txt | 17 + .../bsp/freertos_v2_00_a/src/readme.txt | 19 + .../data/FreeRTOS_Hello_World.mss | 9 + .../data/FreeRTOS_Hello_World.tcl | 127 + .../FreeRTOS_Hello_World/src/FreeRTOS-main.c | 398 + .../HardwareWithEthernetFull/.project | 12 + .../HardwareWithEthernetFull/system.bit | Bin 0 -> 1484497 bytes .../HardwareWithEthernetFull/system.xml | 6936 +++++++++++++++++ .../HardwareWithEthernetFull/system_bd.bmm | 32 + .../SDKProjects/RTOSDemo/.cproject | 1426 ++++ .../SDKProjects/RTOSDemo/.project | 82 + .../CreateProjectDirectoryStructure.bat | 117 + .../SDKProjects/RTOSDemo/FreeRTOSConfig.h | 181 + .../SDKProjects/RTOSDemo/ParTest.c | 160 + .../SDKProjects/RTOSDemo/RegisterTests.c | 307 + .../lwIP/lwIP_Apps/apps/httpserver_raw/fs.c | 177 + .../lwIP/lwIP_Apps/apps/httpserver_raw/fs.h | 100 + .../lwIP_Apps/apps/httpserver_raw/fsdata.c | 2068 +++++ .../lwIP_Apps/apps/httpserver_raw/fsdata.h | 50 + .../lwIP_Apps/apps/httpserver_raw/httpd.c | 2185 ++++++ .../lwIP_Apps/apps/httpserver_raw/httpd.h | 236 + .../apps/httpserver_raw/httpd_structs.h | 115 + .../httpserver_raw/makefsdata/fs/404.html | 21 + .../httpserver_raw/makefsdata/fs/index.shtml | 20 + .../httpserver_raw/makefsdata/fs/logo.jpg | Bin 0 -> 28602 bytes .../makefsdata/fs/runtime.shtml | 20 + .../makefsdata/makefsdata.c-source-file | 610 ++ .../httpserver_raw/makefsdata/makefsdata.exe | Bin 0 -> 46592 bytes .../RTOSDemo/lwIP/lwIP_Apps/lwIP_Apps.c | 161 + .../lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h | 15 + .../RTOSDemo/lwIP/lwIP_Apps/lwipopts.h | 317 + .../SDKProjects/RTOSDemo/main-blinky.c | 536 ++ .../SDKProjects/RTOSDemo/main-full.c | 669 ++ .../SDKProjects/RTOSDemo/printf-stdarg.c | 282 + .../SDKProjects/RTOSDemo/serial.c | 209 + .../SDKProjects/RTOSDemo/src/README.txt | 1 + .../SDKProjects/RTOSDemo/src/lscript.ld | 213 + .../SDKProjects/StandAloneBSP/.cproject | 14 + .../SDKProjects/StandAloneBSP/.project | 77 + .../SDKProjects/StandAloneBSP/.sdkproject | 3 + .../SDKProjects/StandAloneBSP/Makefile | 21 + .../SDKProjects/StandAloneBSP/libgen.log | 20 + .../SDKProjects/StandAloneBSP/libgen.options | 3 + .../SDKProjects/StandAloneBSP/system.mss | 87 + 51 files changed, 19507 insertions(+) create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.bit create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.xml create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system_bd.bmm create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.cproject create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.project create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/CreateProjectDirectoryStructure.bat create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/FreeRTOSConfig.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/ParTest.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/RegisterTests.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd_structs.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/404.html create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/index.shtml create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/logo.jpg create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/runtime.shtml create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.c-source-file create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.exe create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwIP_Apps.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipopts.h create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-blinky.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-full.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/printf-stdarg.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/serial.c create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/README.txt create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/lscript.ld create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.cproject create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.project create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.sdkproject create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/Makefile create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.log create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.options create mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/system.mss diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss new file mode 100644 index 000000000..330c3083a --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss @@ -0,0 +1,12 @@ + +PARAMETER VERSION = 2.2.0 + +BEGIN OS + PARAMETER OS_NAME = freertos + PARAMETER STDIN = * + PARAMETER STDOUT = * + PARAMETER SYSTMR_SPEC = true + PARAMETER SYSTMR_DEV = * + PARAMETER SYSINTC_SPEC = * +END + diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld new file mode 100644 index 000000000..123cd4a21 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld @@ -0,0 +1,101 @@ +############################################################################## +# +# (c) Copyright 2011 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information of Xilinx, Inc. +# and is protected under U.S. and international copyright and other +# intellectual property laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any rights to the +# materials distributed herewith. Except as otherwise provided in a valid +# license issued to you by Xilinx, and to the maximum extent permitted by +# applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL +# FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, +# IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF +# MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; +# and (2) Xilinx shall not be liable (whether in contract or tort, including +# negligence, or under any other theory of liability) for any loss or damage +# of any kind or nature related to, arising under or in connection with these +# materials, including for any direct, or any indirect, special, incidental, +# or consequential loss or damage (including loss of data, profits, goodwill, +# or any type of loss or damage suffered as a result of any action brought by +# a third party) even if such damage or loss was reasonably foreseeable or +# Xilinx had been advised of the possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail-safe, or for use in +# any application requiring fail-safe performance, such as life-support or +# safety devices or systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any other applications +# that could lead to death, personal injury, or severe property or +# environmental damage (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and liability of any use of +# Xilinx products in Critical Applications, subject only to applicable laws +# and regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE +# AT ALL TIMES. +# +# This file is part of Xilkernel. +# +# $Id: xilkernel_v2_1_0.mld,v 1.1.2.4 2010/12/10 07:27:08 svemula Exp $ +############################################################################### + +OPTION psf_version = 2.1.0 ; +BEGIN OS freertos + + OPTION DRC = kernel_drc ; + OPTION SUPPORTED_PERIPHERALS = (microblaze); + OPTION COPYFILES = all; + OPTION DEPENDS = (standalone_v3_01_a); + OPTION APP_LINKER_FLAGS = "-Wl,--start-group,-lxil,-lfreertos,-lgcc,-lc,--end-group"; + + OPTION DESC = "FreeRTOS is a popular lightweight kernel." + + # STDIN/STDOUT + PARAM name = stdin, type = peripheral_instance, requires_interface = stdin, default=none, desc = "Specify the instance name of the standard input peripheral"; + PARAM name = stdout, type = peripheral_instance, requires_interface = stdout, default=none, desc = "Specify the instance name of the standard output peripheral"; + + # System timer specification + PARAM name = systmr_interval, type = int, default = 10, desc = "Specify the time interval for each kernel tick (in milliseconds). This controls the CPU budget for each process. If the timer is fit_timer, then this parameter is automatically determined"; + + # System interrupt controller specification + # PARAM name = sysintc_spec, type = peripheral_instance, range = (opb_intc, xps_intc, dcr_intc, axi_intc), default = none, desc = "Specify the instance name of the interrupt controller device driving system interrupts"; + + BEGIN CATEGORY kernel_behavior + PARAM name = kernel_behavior, type = bool, default = true, desc = "Parameters relating to the kernel behavior", permit = user; + PARAM name = use_preemption, type = bool, default = true, desc = "Set to true to use the preemptive scheduler, or false to use the cooperative scheduler."; + PARAM name = idle_yield, type = bool, default = true, desc = "Set to true if the Idle task should yield if another idle priority task is able to run, or false if the idle task should always use its entire time slice unless it is preempted."; + PARAM name = max_priorities, type = int, default = 4, desc = "The number of task priorities that will be available. Priorities can be assigned from zero to (max_priorities - 1)"; + PARAM name = minimal_stack_size, type = int, default = 120, desc = "The size of the stack allocated to the Idle task. Also used by standard demo and test tasks found in the main FreeRTOS download."; + PARAM name = total_heap_size, type = int, default = 65536, desc = "Only used if heap_1.c or heap_2.c is included in the project. Sets the amount of RAM reserved for use by the kernel - used when tasks, queues and semaphores are created."; + PARAM name = max_task_name_len, type = int, default = 8, desc = "The maximum number of characters that can be in the name of a task."; + END CATEGORY + + BEGIN CATEGORY kernel_features + PARAM name = kernel_features, type = bool, default = true, desc = "Include or exclude kernel features", permit = user; + PARAM name = use_mutexes, type = bool, default = true, desc = "Set to true to include mutex functionality, or false to exclude mutex functionality."; + PARAM name = use_recursive_mutexes, type = bool, default = true, desc = "Set to true to include recursive mutex functionality, or false to exclude recursive mutex functionality."; + PARAM name = use_counting_semaphores, type = bool, default = true, desc = "Set to true to include counting semaphore functionality, or false to exclude recursive mutex functionality."; + PARAM name = queue_registry_size, type = int, default = 10, desc = "The maximum number of queues that can be registered at any one time. Registered queues can be viewed in the kernel aware debugger plug-in."; + PARAM name = use_trace_facility, type = bool, default = true, desc = "Set to true to include the legacy trace functionality, and a few other features. traceMACROS are the preferred method of tracing now."; + END CATEGORY + + BEGIN CATEGORY hook_functions + PARAM name = hook_functions, type = bool, default = true, desc = "Include or exclude application defined hook (callback) functions. Callback functions must be defined by the application that is using FreeRTOS", permit = user; + PARAM name = use_idle_hook, type = bool, default = false, desc = "Set to true for the kernel to call vApplicationIdleHook() on each iteration of the idle task. The application must provide an implementation of vApplicationIdleHook()."; + PARAM name = use_tick_hook, type = bool, default = false, desc = "Set to true for the kernel to call vApplicationTickHook() during each tick interrupt. The application must provide an implementation of vApplicationTickHook()."; + PARAM name = use_malloc_failed_hook, type = bool, default = true, desc = "Only used if heap_1.c, heap_2.c or heap_3.c is included in the project. Set to true for the kernel to call vApplicationMallocFailedHookHook() if there is insufficient FreeRTOS heap available for a task, queue or semaphore to be created. The application must provide an implementation of vApplicationMallocFailedHook()."; + PARAM name = check_for_stack_overflow, type = int, default = 2, desc = "Set to 1 to include basic run time task stack checking. Set to 2 to include more comprehensive run time task stack checking."; + END CATEGORY + + BEGIN CATEGORY software_timers + PARAM name = software_timers, type = bool, default = true, desc = "Options relating to the software timers functionality", permit = user; + PARAM name = use_timers, type = bool, default = true, desc = "Set to true to include software timer functionality, or false to exclude software timer functionality"; + PARAM name = timer_task_priority, type = string, default = "(configMAX_PRIORITIES - 1)", desc = "The priority at which the software timer service/daemon task will execute."; + PARAM name = timer_command_queue_length, type = int, default = 10, desc = "The number of commands the timer command queue can hold at any one time."; + PARAM name = timer_task_stack_depth, type = string, default = "(configMINIMAL_STACK_SIZE), desc = "The size of the stack allocated to the timer service/daemon task."; + END CATEGORY + +END OS diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl new file mode 100644 index 000000000..c7067eb24 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl @@ -0,0 +1,806 @@ +############################################################################## +# +# (c) Copyright 2011 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information of Xilinx, Inc. +# and is protected under U.S. and international copyright and other +# intellectual property laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any rights to the +# materials distributed herewith. Except as otherwise provided in a valid +# license issued to you by Xilinx, and to the maximum extent permitted by +# applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL +# FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, +# IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF +# MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; +# and (2) Xilinx shall not be liable (whether in contract or tort, including +# negligence, or under any other theory of liability) for any loss or damage +# of any kind or nature related to, arising under or in connection with these +# materials, including for any direct, or any indirect, special, incidental, +# or consequential loss or damage (including loss of data, profits, goodwill, +# or any type of loss or damage suffered as a result of any action brought by +# a third party) even if such damage or loss was reasonably foreseeable or +# Xilinx had been advised of the possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail-safe, or for use in +# any application requiring fail-safe performance, such as life-support or +# safety devices or systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any other applications +# that could lead to death, personal injury, or severe property or +# environmental damage (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and liability of any use of +# Xilinx products in Critical Applications, subject only to applicable laws +# and regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE +# AT ALL TIMES. +# +# This file is part of FreeRTOS. +# +# $Id: freertos_v2_1_0.tcl,v 1.1.2.8 2010/12/10 07:27:08 svemula Exp $ +############################################################################### + +# standalone bsp version. set this to the latest "ACTIVE" version. +set standalone_version standalone_v3_01_a + +proc kernel_drc {os_handle} { + set sw_proc_handle [xget_libgen_proc_handle] + set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] + set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] + set compiler [xget_value $sw_proc_handle "PARAMETER" "COMPILER"] + + # check for valid compiler + if { [string first "mb-gcc" $compiler] == 0 && [string first "mb-g++" $compiler] == 0} { + error "Wrong compiler requested. FreeRTOS can be compiled only with the GNU compiler for MicroBlaze." "" "mdt_error" + } + + # check for valid stdio parameters + set stdin [xget_value $os_handle "PARAMETER" "STDIN"] + set stdout [xget_value $os_handle "PARAMETER" "STDOUT"] + if { $stdin == "none" || $stdout == "none" } { + error "The STDIN/STDOUT parameters are not set. FreeRTOS requires stdin/stdout to be set." "" "mdt_error" + } + + # check if the design has a intc + set intr_port [xget_value $hw_proc_handle "PORT" "Interrupt"] + if { [llength $intr_port] == 0 } { + error "CPU has no connection to Interrupt controller." "" "mdt_error" + } + + # support only AXI/PLB + set interconnect [xget_value $hw_proc_handle "PARAMETER" "C_INTERCONNECT"] + if { $interconnect == 1 } { + set bus_name [xget_hw_busif_value $hw_proc_handle "DPLB"] + } elseif { $interconnect == 2 } { + set bus_name [xget_hw_busif_value $hw_proc_handle "M_AXI_DP"] + } else { + error "FreeRTOS supports Microblaze with only a AXI or PLB interconnect" "" "mdt_error" + } + + # obtain handles to all the peripherals in the design + set mhs_handle [xget_hw_parent_handle $hw_proc_handle] + set slave_ifs [xget_hw_connected_busifs_handle $mhs_handle $bus_name "slave"] + set timer_count 0 + set timer_has_intr 0 + + # check for a valid timer + foreach if $slave_ifs { + set ip_handle [xget_hw_parent_handle $if] + + if {$ip_handle != $hw_proc_handle} { + set type [xget_hw_value $ip_handle] + if { $type == "xps_timer" || $type == "axi_timer" } { + incr timer_count + + # check if the timer interrupts are enabled + set intr_port [xget_value $ip_handle "PORT" "Interrupt"] + if { [llength $intr_port] != 0 } { + set timer_has_intr 1 + } + } + } + } + + if { $timer_count == 0 } { + error "FreeRTOS for Microblaze requires an axi_timer or xps_timer. The HW platform doesn't have a valid timer." "" "mdt_error" + } + + if { $timer_has_intr == 0 } { + error "FreeRTOS for Microblaze requires interrupts enabled for a timer." "" "mdt_error" + } + + set systmr_interval_ms [xget_value $os_handle "PARAMETER" "systmr_interval"] + if { $systmr_interval_ms <= 0 } { + error "Invalid value for parameter systmr_interval specified. Please specify a positive value." "" "mdt_error" + } + + ### ToDo: Add DRC specific to FreeRTOS +} + +proc generate {os_handle} { + + variable standalone_version + + set sw_proc_handle [xget_libgen_proc_handle] + set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] + set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] + set procver [xget_value $hw_proc_handle "PARAMETER" "HW_VER"] + + set need_config_file "false" + + # proctype should be "microblaze" + set mbsrcdir "../${standalone_version}/src/microblaze" + set commondir "../${standalone_version}/src/common" + set datadir "../${standalone_version}/data" + + foreach entry [glob -nocomplain [file join $commondir *]] { + file copy -force $entry [file join ".." "${standalone_version}" "src"] + } + + # proctype should be "microblaze" + switch -regexp $proctype { + "microblaze" { + + foreach entry [glob -nocomplain [file join $mbsrcdir *]] { + if { [string first "microblaze_interrupt_handler" $entry] == -1 } { ;# Do not copy over the Standalone BSP exception handler + file copy -force $entry [file join ".." "${standalone_version}" "src"] + } + } + set need_config_file "true" + } + "default" {puts "unknown processor type $proctype\n"} + } + + # Write the config.make file + set makeconfig [open "../standalone_v3_01_a/src/config.make" w] + xprint_generated_header_tcl $makeconfig "Configuration parameters for Standalone Makefile" + + if { $proctype == "microblaze" } { + if { [mb_has_exceptions $hw_proc_handle] } { + puts $makeconfig "LIBSOURCES = *.s *.c *.S" + } else { + puts $makeconfig "LIBSOURCES = *.s *.c" + } + } + + puts $makeconfig "LIBS = standalone_libs" + close $makeconfig + + # Remove microblaze directories... + file delete -force $mbsrcdir + + # copy required files to the main src directory + file copy -force [file join src Source tasks.c] src + file copy -force [file join src Source queue.c] src + file copy -force [file join src Source list.c] src + file copy -force [file join src Source timers.c] src + file copy -force [file join src Source portable MemMang heap_3.c] src + file copy -force [file join src Source portable GCC MicroBlazeV8 port.c] src + file copy -force [file join src Source portable GCC MicroBlazeV8 port_exceptions.c] src + file copy -force [file join src Source portable GCC MicroBlazeV8 portasm.S] src + file copy -force [file join src Source portable GCC MicroBlazeV8 portmacro.h] src + set headers [glob -join ./src/Source/include *.\[h\]] + foreach header $headers { + file copy -force $header src + } + + file delete -force [file join src Source] + file delete -force [file join src Source] + + # Handle stdin and stdout + xhandle_stdin $os_handle + xhandle_stdout $os_handle + + # Create config file for microblaze interrupt handling + if {[string compare -nocase $need_config_file "true"] == 0} { + xhandle_mb_interrupts + } + + # Create config files for Microblaze exception handling + if { $proctype == "microblaze" && [mb_has_exceptions $hw_proc_handle] } { + xcreate_mb_exc_config_file + } + + # Create bspconfig file + set bspcfg_fn [file join ".." "${standalone_version}" "src" "bspconfig.h"] + file delete $bspcfg_fn + set bspcfg_fh [open $bspcfg_fn w] + xprint_generated_header $bspcfg_fh "Configurations for Standalone BSP" + + if { $proctype == "microblaze" && [mb_has_pvr $hw_proc_handle] } { + + set pvr [xget_value $hw_proc_handle "PARAMETER" "C_PVR"] + + switch $pvr { + "0" { + puts $bspcfg_fh "#define MICROBLAZE_PVR_NONE" + } + "1" { + puts $bspcfg_fh "#define MICROBLAZE_PVR_BASIC" + } + "2" { + puts $bspcfg_fh "#define MICROBLAZE_PVR_FULL" + } + "default" { + puts $bspcfg_fh "#define MICROBLAZE_PVR_NONE" + } + } + } + + close $bspcfg_fh + +# ToDO: FreeRTOS does not handle the following, refer xilkernel TCL script +# - MPU settings + + set config_file [xopen_new_include_file "./src/FreeRTOSConfig.h" "FreeRTOS Configuration parameters"] + puts $config_file "\#include \"xparameters.h\" \n" + + set val [xget_value $os_handle "PARAMETER" "use_preemption"] + if {$val == "false"} { + xput_define $config_file "configUSE_PREEMPTION" "0" + } else { + xput_define $config_file "configUSE_PREEMPTION" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_mutexes"] + if {$val == "false"} { + xput_define $config_file "configUSE_MUTEXES" "0" + } else { + xput_define $config_file "configUSE_MUTEXES" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_recursive_mutexes"] + if {$val == "false"} { + xput_define $config_file "configUSE_RECURSIVE_MUTEXES" "0" + } else { + xput_define $config_file "configUSE_RECURSIVE_MUTEXES" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_counting_semaphores"] + if {$val == "false"} { + xput_define $config_file "configUSE_COUNTING_SEMAPHORES" "0" + } else { + xput_define $config_file "configUSE_COUNTING_SEMAPHORES" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_timers"] + if {$val == "false"} { + xput_define $config_file "configUSE_TIMERS" "0" + } else { + xput_define $config_file "configUSE_TIMERS" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_idle_hook"] + if {$val == "false"} { + xput_define $config_file "configUSE_IDLE_HOOK" "0" + } else { + xput_define $config_file "configUSE_IDLE_HOOK" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_tick_hook"] + if {$val == "false"} { + xput_define $config_file "configUSE_TICK_HOOK" "0" + } else { + xput_define $config_file "configUSE_TICK_HOOK" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_malloc_failed_hook"] + if {$val == "false"} { + xput_define $config_file "configUSE_MALLOC_FAILED_HOOK" "0" + } else { + xput_define $config_file "configUSE_MALLOC_FAILED_HOOK" "1" + } + + set val [xget_value $os_handle "PARAMETER" "use_trace_facility"] + if {$val == "false"} { + xput_define $config_file "configUSE_TRACE_FACILITY" "0" + } else { + xput_define $config_file "configUSE_TRACE_FACILITY" "1" + } + + xput_define $config_file "configUSE_16_BIT_TICKS" "0" + xput_define $config_file "configUSE_APPLICATION_TASK_TAG" "0" + xput_define $config_file "configUSE_CO_ROUTINES" "0" + + # System timer tick rate (Microblaze only. kernel DRC ensures this) + set systmr_interval [xget_value $os_handle "PARAMETER" "systmr_interval"] + xput_define $config_file "configTICK_RATE_HZ" $systmr_interval + + set max_priorities [xget_value $os_handle "PARAMETER" "max_priorities"] + xput_define $config_file "configMAX_PRIORITIES" $max_priorities + xput_define $config_file "configMAX_CO_ROUTINE_PRIORITIES" "2" + + set min_stack [xget_value $os_handle "PARAMETER" "minimal_stack_size"] + set min_stack [expr [expr $min_stack + 3] & 0xFFFFFFFC] + xput_define $config_file "configMINIMAL_STACK_SIZE" $min_stack + + set total_heap_size [xget_value $os_handle "PARAMETER" "total_heap_size"] + set total_heap_size [expr [expr $total_heap_size + 3] & 0xFFFFFFFC] + xput_define $config_file "configTOTAL_HEAP_SIZE" $total_heap_size + + set max_task_name_len [xget_value $os_handle "PARAMETER" "max_task_name_len"] + xput_define $config_file "configMAX_TASK_NAME_LEN" $max_task_name_len + + set val [xget_value $os_handle "PARAMETER" "idle_yield"] + if {$val == "false"} { + xput_define $config_file "configIDLE_SHOULD_YIELD" "0" + } else { + xput_define $config_file "configIDLE_SHOULD_YIELD" "1" + } + + set val [xget_value $os_handle "PARAMETER" "check_for_stack_overflow"] + if {$val == "false"} { + xput_define $config_file "configCHECK_FOR_STACK_OVERFLOW" "0" + } else { + xput_define $config_file "configCHECK_FOR_STACK_OVERFLOW" "2" + } + + set val [xget_value $os_handle "PARAMETER" "queue_registry_size"] + if {$val == "false"} { + xput_define $config_file "configQUEUE_REGISTRY_SIZE" "0" + } else { + xput_define $config_file "configQUEUE_REGISTRY_SIZE" "10" + } + + xput_define $config_file "configGENERATE_RUN_TIME_STATS" "0" + + set val [xget_value $os_handle "PARAMETER" "timer_task_priority"] + if {$val == "false"} { + xput_define $config_file "configTIMER_TASK_PRIORITY" "0" + } else { + xput_define $config_file "configTIMER_TASK_PRIORITY" "10" + } + + set val [xget_value $os_handle "PARAMETER" "timer_command_queue_length"] + if {$val == "false"} { + xput_define $config_file "configTIMER_QUEUE_LENGTH" "0" + } else { + xput_define $config_file "configTIMER_QUEUE_LENGTH" "10" + } + + set val [xget_value $os_handle "PARAMETER" "timer_task_stack_depth"] + if {$val == "false"} { + xput_define $config_file "configTIMER_TASK_STACK_DEPTH" "0" + } else { + xput_define $config_file "configTIMER_TASK_STACK_DEPTH" $min_stack + } + + if { [mb_has_exceptions $hw_proc_handle] } { + xput_define $config_file "configINSTALL_EXCEPTION_HANDLERS" "1" + } else { + xput_define $config_file "configINSTALL_EXCEPTION_HANDLERS" "0" + } + + xput_define $config_file "configINTERRUPT_CONTROLLER_TO_USE" "XPAR_INTC_SINGLE_DEVICE_ID" + + xput_define $config_file "INCLUDE_vTaskCleanUpResources" "0" + xput_define $config_file "INCLUDE_vTaskDelay" "1" + xput_define $config_file "INCLUDE_vTaskDelayUntil" "1" + xput_define $config_file "INCLUDE_vTaskDelete" "1" + xput_define $config_file "INCLUDE_xTaskGetCurrentTaskHandle" "1" + xput_define $config_file "INCLUDE_xTaskGetIdleTaskHandle" "1" + xput_define $config_file "INCLUDE_xTaskGetSchedulerState" "1" + xput_define $config_file "INCLUDE_xTimerGetTimerTaskHandle" "1" + xput_define $config_file "INCLUDE_uxTaskGetStackHighWaterMark" "1" + xput_define $config_file "INCLUDE_uxTaskPriorityGet" "1" + xput_define $config_file "INCLUDE_vTaskPrioritySet" "1" + xput_define $config_file "INCLUDE_xTaskResumeFromISR" "1" + xput_define $config_file "INCLUDE_vTaskSuspend" "1" + xput_define $config_file "INCLUDE_pcTaskNameGet" "1" + xput_define $config_file "INCLUDE_xTaskIdleTaskHandleGet" "1" + xput_define $config_file "INCLUDE_xTimerDaemonTaskHandleGet" "1" + + # complete the header protectors + puts $config_file "\#endif" + close $config_file +} + +proc xopen_new_include_file { filename description } { + set inc_file [open $filename w] + xprint_generated_header $inc_file $description + set newfname [string map {. _} [lindex [split $filename {\/}] end]] + puts $inc_file "\#ifndef _[string toupper $newfname]" + puts $inc_file "\#define _[string toupper $newfname]\n\n" + return $inc_file +} + +proc xadd_define { config_file os_handle parameter } { + set param_value [xget_value $os_handle "PARAMETER" $parameter] + puts $config_file "#define [string toupper $parameter] $param_value\n" + + # puts "creating #define [string toupper $parameter] $param_value\n" +} + +proc xput_define { config_file parameter param_value } { + puts $config_file "#define $parameter $param_value\n" + + # puts "creating #define [string toupper $parameter] $param_value\n" +} + +# args field of the array +proc xadd_extern_fname {initfile oshandle arrayname arg} { + + set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] + set elements [xget_handle $arrhandle "ELEMENTS" "*"] + set count 0 + set max_count [llength $elements] + + foreach ele $elements { + incr count + set arg_value [xget_value $ele "PARAMETER" $arg] + puts $initfile "extern void $arg_value\(\)\;" + } + puts $initfile "" +} + +# args is variable no - fields of the array +proc xadd_struct {initfile oshandle structtype structname arrayname args} { + + set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] + set elements [xget_handle $arrhandle "ELEMENTS" "*"] + set count 0 + set max_count [llength $elements] + puts $initfile "struct $structtype $structname\[$max_count\] = \{" + + foreach ele $elements { + incr count + puts -nonewline $initfile "\t\{" + foreach field $args { + set field_value [xget_value $ele "PARAMETER" $field] + # puts "$arrayname ( $count )->$field is $field_value" + puts -nonewline $initfile "$field_value" + if { $field != [lindex $args end] } { + puts -nonewline $initfile "," + } + } + if {$count < $max_count} { + puts $initfile "\}," + } else { + puts $initfile "\}" + } + } + puts $initfile "\}\;" +} + +# return the sum of all the arg field values in arrayname +proc get_field_sum {oshandle arrayname arg} { + + set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] + set elements [xget_handle $arrhandle "ELEMENTS" "*"] + set count 0 + set max_count [llength $elements] + + foreach ele $elements { + set field_value [xget_value $ele "PARAMETER" $arg] + set count [expr $field_value+$count] + } + return $count +} + +# return the sum of the product of field values in arrayname +proc get_field_product_sum {oshandle arrayname field1 field2} { + + set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] + set elements [xget_handle $arrhandle "ELEMENTS" "*"] + set count 0 + set max_count [llength $elements] + + foreach ele $elements { + set field1_value [xget_value $ele "PARAMETER" $field1] + set field2_value [xget_value $ele "PARAMETER" $field2] + set incr_value [expr $field1_value*$field2_value] + set count [expr $count+$incr_value] + } + return $count +} + +proc xhandle_mb_interrupts {} { + + set default_interrupt_handler "XNullHandler" + set default_arg "XNULL" + + set source_interrupt_handler $default_interrupt_handler + set source_handler_arg $default_arg + + # Handle the interrupt pin + set sw_proc_handle [xget_libgen_proc_handle] + set periph [xget_handle $sw_proc_handle "IPINST"] + set source_ports [xget_interrupt_sources $periph] + if {[llength $source_ports] > 1} { + error "Too many interrupting ports on the MicroBlaze. Should only find 1" "" "libgen_error" + return + } + + if {[llength $source_ports] == 1} { + set source_port [lindex $source_ports 0] + if {[llength $source_port] != 0} { + set source_port_name [xget_value $source_port "VALUE"] + set source_periph [xget_handle $source_port "PARENT"] + set source_name [xget_value $source_periph "NAME"] + set source_driver [xget_sw_driver_handle_for_ipinst $sw_proc_handle $source_name] + + if {[string compare -nocase $source_driver ""] != 0} { + set int_array [xget_handle $source_driver "ARRAY" "interrupt_handler"] + if {[llength $int_array] != 0} { + set int_array_elems [xget_handle $int_array "ELEMENTS" "*"] + if {[llength $int_array_elems] != 0} { + foreach int_array_elem $int_array_elems { + set int_port [xget_value $int_array_elem "PARAMETER" "int_port"] + if {[llength $int_port] != 0} { + if {[string compare -nocase $int_port $source_port_name] == 0 } { + set source_interrupt_handler [xget_value $int_array_elem "PARAMETER" "int_handler"] + set source_handler_arg [xget_value $int_array_elem "PARAMETER" "int_handler_arg"] + if {[string compare -nocase $source_handler_arg DEVICE_ID] == 0 } { + set source_handler_arg [xget_name $source_periph "DEVICE_ID"] + } else { + if {[string compare -nocase "global" [xget_port_type $source_port]] == 0} { + set source_handler_arg $default_arg + } else { + set source_handler_arg [xget_name $source_periph "C_BASEADDR"] + } + } + break + } + } + } + } + } + } + } + } + + # Generate microblaze_interrupts_g.c file... + xcreate_mb_intr_config_file $source_interrupt_handler $source_handler_arg + +} + + +proc xcreate_mb_intr_config_file {handler arg} { + + set mb_table "MB_InterruptVectorTable" + + set filename [file join "../standalone_v3_01_a/src" "microblaze_interrupts_g.c"] + file delete $filename + set config_file [open $filename w] + + xprint_generated_header $config_file "Interrupt Handler Table for MicroBlaze Processor" + + puts $config_file "#include \"microblaze_interrupts_i.h\"" + puts $config_file "#include \"xparameters.h\"" + puts $config_file "\n" + puts $config_file [format "extern void %s (void *);" $handler] + puts $config_file "\n/*" + puts $config_file "* The interrupt handler table for microblaze processor" + puts $config_file "*/\n" + puts $config_file [format "%sEntry %s\[\] =" $mb_table $mb_table] + puts $config_file "\{" + puts -nonewline $config_file [format "\{\t%s" $handler] + puts -nonewline $config_file [format ",\n\t(void*) %s\}" $arg] + puts -nonewline $config_file "\n\};" + puts $config_file "\n" + close $config_file +} + + +# ------------------------------------------- +# Tcl procedure xcreate_mb_exc_config file +# ------------------------------------------- +proc xcreate_mb_exc_config_file { } { + + set hfilename [file join "src" "microblaze_exceptions_g.h"] + file delete $hfilename + set hconfig_file [open $hfilename w] + + xprint_generated_header $hconfig_file "Exception Handling Header for MicroBlaze Processor" + + puts $hconfig_file "\n" + + set sw_proc_handle [xget_libgen_proc_handle] + set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] + set procver [xget_value $hw_proc_handle "PARAMETER" "HW_VER"] + + if { ![mb_has_exceptions $hw_proc_handle]} { ;# NO exceptions are enabled + close $hconfig_file ;# Do not generate any info in either the header or the C file + return + } + + puts $hconfig_file "\#define MICROBLAZE_EXCEPTIONS_ENABLED 1" + if { [mb_can_handle_exceptions_in_delay_slots $procver] } { + puts $hconfig_file "#define MICROBLAZE_CAN_HANDLE_EXCEPTIONS_IN_DELAY_SLOTS" + } + + close $hconfig_file +} + +# -------------------------------------- +# Tcl procedure post_generate +# This proc removes from libxil.a the basic +# and standalone BSP versions of +# _interrupt_handler and _hw_exception_handler +# routines +# -------------------------------------- +proc post_generate {os_handle} { + set sw_proc_handle [xget_libgen_proc_handle] + set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] + set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] + set procname [xget_value $hw_proc_handle "NAME"] + + set procdrv [xget_sw_driver_handle_for_ipinst $sw_proc_handle $procname] + set archiver [xget_value $procdrv "PARAMETER" "archiver"] + + if {[string compare -nocase $proctype "microblaze"] == 0 } { + # Remove _interrupt_handler.o from libxil.a for FreeRTOS + set libxil_a [file join .. .. lib libxil.a] + exec $archiver -d $libxil_a _interrupt_handler.o + + # We have linkage problems due to how these platforms are defined. Can't do this right now. + # # Remove _exception_handler.o from libxil.a for FreeRTOS + # exec bash -c "$archiver -d ../../lib/libxil.a _exception_handler.o" + + # Remove _hw_exception_handler.o from libxil.a for microblaze cores with exception support + if {[mb_has_exceptions $hw_proc_handle]} { + exec $archiver -d ../../lib/libxil.a _hw_exception_handler.o + } + } +} + +# -------------------------------------- +# Tcl procedure execs_generate +# This proc removes from libxil.a all +# the stuff that we are overriding +# with xilkernel +# We currently override, +# MicroBlaze +# - Dummy _interrupt_hander and _hw_exception_handler +# (in post_generate) +# PPC +# - xvectors.o; sleep.o (IF config_time is true) +# Common to all processors +# - errno.o +# -------------------------------------- +proc execs_generate {os_handle} { + set sw_proc_handle [xget_libgen_proc_handle] + set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] + set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] + set procname [xget_value $hw_proc_handle "NAME"] + + set procdrv [xget_sw_driver_handle_for_ipinst $sw_proc_handle $procname] + # Remove _interrupt_handler.o from libxil.a for mb-gcc + set archiver [xget_value $procdrv "PARAMETER" "archiver"] + + set libxil_a [file join .. .. lib libxil.a] +# exec $archiver -d $libxil_a errno.o + + # We have linkage problems due to how these platforms are defined. Can't do this right now. + # exec "$archiver -d $libxil_a microblaze_interrupt_handler.o" +} + +# -------------------------------------- +# Return true if this MB has +# exception handling support +# -------------------------------------- +proc mb_has_exceptions { hw_proc_handle } { + + # Check if the following parameters exist on this MicroBlaze's MPD + set ee [xget_value $hw_proc_handle "PARAMETER" "C_UNALIGNED_EXCEPTIONS"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_ILL_OPCODE_EXCEPTION"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_IOPB_BUS_EXCEPTION"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_DOPB_BUS_EXCEPTION"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_DIV_BY_ZERO_EXCEPTION"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_DIV_ZERO_EXCEPTION"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_FPU_EXCEPTION"] + if { $ee != "" } { + return true + } + + set ee [xget_value $hw_proc_handle "PARAMETER" "C_USE_MMU"] + if { $ee != "" && $ee != 0 } { + return true + } + + return false +} + +# -------------------------------------- +# Return true if this MB has +# FPU exception handling support +# -------------------------------------- +proc mb_has_fpu_exceptions { hw_proc_handle } { + + # Check if the following parameters exist on this MicroBlaze's MPD + set ee [xget_value $hw_proc_handle "PARAMETER" "C_FPU_EXCEPTION"] + if { $ee != "" } { + return true + } + + return false +} + +# -------------------------------------- +# Return true if this MB has PVR support +# -------------------------------------- +proc mb_has_pvr { hw_proc_handle } { + + # Check if the following parameters exist on this MicroBlaze's MPD + set pvr [xget_value $hw_proc_handle "PARAMETER" "C_PVR"] + if { $pvr != "" } { + return true + } + + return false +} + +# -------------------------------------- +# Return true if MB ver 'procver' has +# support for handling exceptions in +# delay slots +# -------------------------------------- +proc mb_can_handle_exceptions_in_delay_slots { procver } { + + if { [string compare -nocase $procver "5.00.a"] >= 0 } { + return true + } else { + return false + } +} + +# -------------------------------------------------------------------------- +# Gets all the handles that are memory controller cores. +# -------------------------------------------------------------------------- +proc xget_memory_controller_handles { mhs } { + set ret_list "" + + # Gets all MhsInsts in the system + set mhsinsts [xget_hw_ipinst_handle $mhs "*"] + + # Loop thru each MhsInst and determine if have "ADDR_TYPE = MEMORY" in + # the parameters. + foreach mhsinst $mhsinsts { + # Gets all parameters of the component + set params [xget_hw_parameter_handle $mhsinst "*"] + + # Loop thru each param and find tag "ADDR_TYPE = MEMORY" + foreach param $params { + if {$param == 0} { + continue + } elseif {$param == ""} { + continue + } + set addrTypeValue [ xget_hw_subproperty_value $param "ADDR_TYPE" ] + + # Found tag! Add MhsInst to list and break to go to next MhsInst + if {[string compare -nocase $addrTypeValue "MEMORY"] == 0} { + lappend ret_list $mhsinst + break + } + } + } + + return $ret_list +} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt new file mode 100644 index 000000000..df40ad2e1 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt @@ -0,0 +1,4 @@ +The necessary files are copied to this BSP directory structure by executing +the CreateProjectDirectoryStructure.bat batch file located in the +FreeRTOS\\Demo\MicroBlaze_Spartan-6_EthernetLite\SDKProjects\RTOSDemoSource +folder. \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt new file mode 100644 index 000000000..e29669138 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt @@ -0,0 +1,435 @@ +The FreeRTOS.org source code is licensed by the modified GNU General Public +License (GPL) text provided below. The FreeRTOS download also includes +demo application source code, some of which is provided by third parties +AND IS LICENSED SEPARATELY FROM FREERTOS.ORG. + +For the avoidance of any doubt refer to the comment included at the top +of each source and header file for license and copyright information. + +This is a list of files for which Real Time Engineers Ltd are not the +copyright owner and are NOT COVERED BY THE GPL. + + +1) Various header files provided by silicon manufacturers and tool vendors + that define processor specific memory addresses and utility macros. + Permission has been granted by the various copyright holders for these + files to be included in the FreeRTOS download. Users must ensure license + conditions are adhered to for any use other than compilation of the + FreeRTOS demo applications. + +2) The uIP TCP/IP stack the copyright of which is held by Adam Dunkels. + Users must ensure the open source license conditions stated at the top + of each uIP source file is understood and adhered to. + +3) The lwIP TCP/IP stack the copyright of which is held by the Swedish + Institute of Computer Science. Users must ensure the open source license + conditions stated at the top of each lwIP source file is understood and + adhered to. + +4) Various peripheral driver source files and binaries provided by silicon + manufacturers and tool vendors. Permission has been granted by the + various copyright holders for these files to be included in the FreeRTOS + download. Users must ensure license conditions are adhered to for any + use other than compilation of the FreeRTOS demo applications. + +5) The files contained within FreeRTOS\Demo\WizNET_DEMO_TERN_186\tern_code, + which are slightly modified versions of code provided by and copyright to + Tern Inc. + +Errors and omissions should be reported to Richard Barry, contact details for +whom can be obtained from http://www.FreeRTOS.org. + + + + + +The GPL license text follows. + +A special 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 any proprietary components. See the licensing section +of http://www.FreeRTOS.org for full details. The exception text is also +included at the bottom of this file. + +-------------------------------------------------------------------- + + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License** as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +---------------------------------------------------------------------------- + +The FreeRTOS GPL Exception Text: + +Any FreeRTOS source code, whether modified or in it's original release form, +or whether in whole or in part, can only be distributed by you under the terms +of the GNU General Public License plus this exception. An independent module is +a module which is not derived from or based on FreeRTOS. + +Clause 1: + +Linking FreeRTOS statically or dynamically with other modules is making a +combined work based on FreeRTOS. Thus, the terms and conditions of the GNU +General Public License cover the whole combination. + +As a special exception, the copyright holder of FreeRTOS gives you permission +to link FreeRTOS with independent modules that communicate with FreeRTOS +solely through the FreeRTOS API interface, regardless of the license terms of +these independent modules, and to copy and distribute the resulting combined +work under terms of your choice, provided that + + + Every copy of the combined work is accompanied by a written statement that + details to the recipient the version of FreeRTOS used and an offer by yourself + to provide the FreeRTOS source code (including any modifications you may have + made) should the recipient request it. + + + The combined work is not itself an RTOS, scheduler, kernel or related product. + + + The independent modules add significant and primary functionality to FreeRTOS + and do not merely extend the existing functionality already present in FreeRTOS. + +Clause 2: + +FreeRTOS may not be used for any competitive or comparative purpose, including the +publication of any form of run time or compile time metric, without the express +permission of Real Time Engineers Ltd. (this is the norm within the industry and +is intended to ensure information accuracy). diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile new file mode 100644 index 000000000..57884bf14 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile @@ -0,0 +1,77 @@ +############################################################################## +# +# Copyright (c) 2010 Xilinx, Inc. All rights reserved. +# +# Xilinx, Inc. +# XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A +# COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS +# ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR +# STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION +# IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE +# FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. +# XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO +# THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO +# ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE +# FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE. +# +# Top level Makefile +# +# $Id: $ +# +############################################################################## + +# +# Processor architecture +# microblaze +# +ARCH = microblaze + +SYSTEMDIR = ../../.. + +TOPDIR = . + +ARCH_PREFIX = mb + +# +# gnu tools for Makefile +# +CC = $(ARCH_PREFIX)-gcc +AR = $(ARCH_PREFIX)-ar +CP = cp + +# +# Compiler, linker and other options. +# +CFLAGS = ${COMPILER_FLAGS} ${EXTRA_COMPILER_FLAGS} + +# +# System project directories. +# +LIBDIR = $(SYSTEMDIR)/lib +INCLUDEDIR = $(SYSTEMDIR)/include + +# Kernel library. +LIBFREERTOS = ${LIBDIR}/libfreertos.a + +INCLUDEFILES = ${TOPDIR}/*.h + +INCLUDES = -I$(INCLUDEDIR) \ + -I${TOPDIR} + +KERNEL_AR_OBJS = *.c *.S + +OUTS = *.o + +libs: $(KERNEL_AR_OBJS) + @echo "Compiling FreeRTOS" + @$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $^ + @$(ARCHIVER) -r ${LIBFREERTOS} ${OUTS} + make clean + +.PHONY: include +include: + ${CP} ${INCLUDEFILES} ${INCLUDEDIR} + +clean: + rm -rf ${OUTS} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt new file mode 100644 index 000000000..a20d687e0 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt @@ -0,0 +1,19 @@ +Each real time kernel port consists of three files that contain the core kernel +components and are common to every port, and one or more files that are +specific to a particular microcontroller and/or compiler. + + ++ The FreeRTOS/Source/Portable/MemMang directory contains the three sample +memory allocators as described on the http://www.FreeRTOS.org WEB site. + ++ The other directories each contain files specific to a particular +microcontroller or compiler. + + + +For example, if you are interested in the GCC port for the ATMega323 +microcontroller then the port specific files are contained in +FreeRTOS/Source/Portable/GCC/ATMega323 directory. If this is the only +port you are interested in then all the other directories can be +ignored. + diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt new file mode 100644 index 000000000..81518ecb4 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt @@ -0,0 +1,17 @@ +Each real time kernel port consists of three files that contain the core kernel +components and are common to every port, and one or more files that are +specific to a particular microcontroller and or compiler. + ++ The FreeRTOS/Source directory contains the three files that are common to +every port - list.c, queue.c and tasks.c. The kernel is contained within these +three files. croutine.c implements the optional co-routine functionality - which +is normally only used on very memory limited systems. + ++ The FreeRTOS/Source/Portable directory contains the files that are specific to +a particular microcontroller and or compiler. + ++ The FreeRTOS/Source/include directory contains the real time kernel header +files. + +See the readme file in the FreeRTOS/Source/Portable directory for more +information. \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt new file mode 100644 index 000000000..49eecd6cd --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt @@ -0,0 +1,19 @@ +The download includes the kernel source code, and a demo application for EVERY +RTOS port. See http://www.freertos.org/a00017.html for full details of the +directory structure and information on locating the files you require. + +The easiest way to use FreeRTOS is start start with one of the demo application +projects. Once this is running the project can be modified to include your own +source files. This way the correct files and compiler options will be +automatically included in your application. + ++ The Source directory contains the real time kernel source files for every +port. The kernel itself is only 3 files. + ++ The Demo directory contains the demo application source files for every +port. + ++ The TraceCon directory contains the trace visualisation exe file. + +See the readme files in the respective directories for further information. + diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss new file mode 100644 index 000000000..230dee3c4 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss @@ -0,0 +1,9 @@ + + PARAMETER VERSION = 2.2.0 + + +BEGIN OS + PARAMETER OS_NAME = freertos + PARAMETER STDIN = * + PARAMETER STDOUT = * +END diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl new file mode 100644 index 000000000..7845d73a8 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl @@ -0,0 +1,127 @@ +proc swapp_get_name {} { + return "FreeRTOS Hello World"; +} + +proc swapp_get_description {} { + return "Let's say 'Hello World' in FreeRTOS."; +} + +proc get_os {} { + set oslist [xget_sw_modules "type" "os"]; + set os [lindex $oslist 0]; + + if { $os == "" } { + error "No Operating System specified in the Board Support Package."; + } + + return $os; +} + +proc get_stdout {} { + set os [get_os]; + set stdout [xget_sw_module_parameter $os "STDOUT"]; + return $stdout; +} + +proc check_stdout_hw {} { + set uartlites [xget_ips "type" "uartlite"]; + set uart16550s [xget_ips "type" "uart16550"]; + if { ([llength $uartlites] == 0) && ([llength $uart16550s] == 0) } { + # Check for MDM-Uart peripheral. The MDM would be listed as a peripheral + # only if it has a UART interface. So no further check is required + set mdmlist [xget_ips "type" "mdm"] + if { [llength $mdmlist] == 0 } { + error "This application requires a Uart IP in the hardware." + } + } +} + +proc check_stdout_sw {} { + set stdout [get_stdout]; + if { $stdout == "none" } { + error "The STDOUT parameter is not set on the OS. Hello World requires stdout to be set." + } +} + +proc get_mem_size { memlist } { + return [lindex $memlist 4]; +} + +proc require_memory {memsize} { + set imemlist [xget_memory_ranges "access_type" "I"]; + set idmemlist [xget_memory_ranges "access_type" "ID"]; + set dmemlist [xget_memory_ranges "access_type" "D"]; + + set memlist [concat $imemlist $idmemlist $dmemlist]; + + while { [llength $memlist] > 3 } { + set mem [lrange $memlist 0 4]; + set memlist [lreplace $memlist 0 4]; + + if { [get_mem_size $mem] >= $memsize } { + return 1; + } + } + + error "This application requires atleast $memsize bytes of memory."; +} + +proc swapp_is_supported_hw {} { + # check for uart peripheral + check_stdout_hw; + + # require about 1M of memory + require_memory "1000000"; + + return 1; +} + +proc swapp_is_supported_sw {} { + # check for stdout being set + check_stdout_sw; + + return 1; +} + +proc generate_stdout_config { fid } { + set stdout [get_stdout]; + + # if stdout is uartlite, we don't have to generate anything + set stdout_type [xget_ip_attribute "type" $stdout]; + + if { [regexp -nocase "uartlite" $stdout_type] || [string match -nocase "mdm" $stdout_type] } { + return; + } elseif { [regexp -nocase "uart16550" $stdout_type] } { + # mention that we have a 16550 + puts $fid "#define STDOUT_IS_16550"; + + # and note down its base address + set prefix "XPAR_"; + set postfix "_BASEADDR"; + set stdout_baseaddr_macro $prefix$stdout$postfix; + set stdout_baseaddr_macro [string toupper $stdout_baseaddr_macro]; + puts $fid "#define STDOUT_BASEADDR $stdout_baseaddr_macro"; + } +} + +# depending on the type of os (standalone|xilkernel), choose +# the correct source files +proc swapp_generate {} { + + # cleanup this file for writing + set fid [open "platform_config.h" "w+"]; + puts $fid "#ifndef __PLATFORM_CONFIG_H_"; + puts $fid "#define __PLATFORM_CONFIG_H_\n"; + + # if we have a uart16550 as stdout, then generate some config for that + generate_stdout_config $fid; + + puts $fid "#endif"; + close $fid; +} + +proc swapp_get_linker_constraints {} { + + # we need a 4k heap + return "stack 40k heap 40k"; +} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c new file mode 100644 index 000000000..2ce33b77a --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c @@ -0,0 +1,398 @@ +/* + FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd. + + *************************************************************************** + See http://www.FreeRTOS.org for full information on FreeRTOS, including + an API reference, pdf API reference manuals, and FreeRTOS tutorial books. + + See http://www.freertos.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html + for comprehensive standalone FreeRTOS for MicroBlaze demos. + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS tutorial books are available in pdf and paperback. * + * Complete, revised, and edited pdf reference manuals are also * + * available. * + * * + * Purchasing FreeRTOS documentation will not only help you, by * + * ensuring you get running as quickly as possible and with an * + * in-depth knowledge of how to use FreeRTOS, it will also help * + * the FreeRTOS project to continue with its mission of providing * + * professional grade, cross platform, de facto standard solutions * + * for microcontrollers - completely free of charge! * + * * + * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * + * * + * Thank you for using FreeRTOS, and 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 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. 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. +*/ + +/* + * FreeRTOS-main.c (this file) defines a very simple demo that creates two tasks, + * one queue, and one timer. + * + * The main() Function: + * main() creates one software timer, 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(). Once the value is sent, the task loops back + * around to block for another 200 milliseconds. + * + * The Queue Receive Task: + * The queue receive task is implemented by the prvQueueReceiveTask() function + * in this file. prvQueueReceiveTask() sits in a loop that causes it to + * repeatedly attempt to read data from the queue that was created within + * main(). When data is received, the task checks the value of the data, and + * if the value equals the expected 100, increments the ulRecieved variable. + * 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. + * + * The Software Timer: + * The software timer is configured to be an "auto reset" timer. Its callback + * function simply increments the ulCallback variable each time it executes. + */ + +/* Kernel includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "timers.h" + +/* BSP includes. */ +#include "xtmrctr.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, specified in milliseconds, and +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 because it has the higher priority, meaning +the send task should always find the queue empty. */ +#define mainQUEUE_LENGTH ( 1 ) + +/* A block time of 0 simply means, "don't block". */ +#define mainDONT_BLOCK ( portTickType ) 0 + +/* The following constants describe the timer instance used in this application. +They are defined here such that a user can easily change all the needed parameters +in one place. */ +#define TIMER_DEVICE_ID XPAR_TMRCTR_0_DEVICE_ID +#define TIMER_FREQ_HZ XPAR_TMRCTR_0_CLOCK_FREQ_HZ +#define TIMER_INTR_ID XPAR_INTC_0_TMRCTR_0_VEC_ID + +/*-----------------------------------------------------------*/ + +/* + * The tasks as described in the comments at the top of this file. + */ +static void prvQueueReceiveTask( void *pvParameters ); +static void prvQueueSendTask( void *pvParameters ); + +/* + * The LED timer callback function. This does nothing but increment the + * ulCallback variable each time it executes. + */ +static void vSoftwareTimerCallback( xTimerHandle xTimer ); + +/*-----------------------------------------------------------*/ + +/* The queue used by the queue send and queue receive tasks. */ +static xQueueHandle xQueue = NULL; + +/* The LED software timer. This uses vSoftwareTimerCallback() as its callback +function. */ +static xTimerHandle xExampleSoftwareTimer = NULL; + +/*-----------------------------------------------------------*/ + +/* Structures that hold the state of the various peripherals used by this demo. +These are used by the Xilinx peripheral driver API functions. */ +static XTmrCtr xTimer0Instance; + +/* The variable that is incremented each time the receive task receives the +value 100. */ +static unsigned long ulReceived = 0UL; + +/* The variable that is incremented each time the software time callback function +executes. */ +static unsigned long ulCallback = 0UL; + +/*-----------------------------------------------------------*/ + +int main( void ) +{ + /*************************************************************************** + See http://www.FreeRTOS.org for full information on FreeRTOS, including + an API reference, pdf API reference manuals, and FreeRTOS tutorial books. + + See http://www.freertos.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html + for comprehensive standalone FreeRTOS for MicroBlaze demos. + ***************************************************************************/ + + /* Create the queue used by the queue send and queue receive tasks as + described in the comments at the top of this file. */ + xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); + + /* Sanity check that the queue was created. */ + configASSERT( xQueue ); + + /* Start the two tasks as described in the comments at the top of this + file. */ + xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); + xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); + + /* Create the software timer */ + xExampleSoftwareTimer = xTimerCreate( ( const signed char * ) "SoftwareTimer", /* A text name, purely to help debugging. */ + ( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */ + pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ + ( void * ) 0, /* The ID is not used, so can be set to anything. */ + vSoftwareTimerCallback /* The callback function that switches the LED off. */ + ); + + /* Start the software timer. */ + xTimerStart( xExampleSoftwareTimer, mainDONT_BLOCK ); + + /* 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 + insufficient FreeRTOS heap memory available for the idle and/or timer tasks + to be created. See the memory management section on the FreeRTOS web site + for more details. */ + for( ;; ); +} +/*-----------------------------------------------------------*/ + +/* The callback is executed when the software timer expires. */ +static void vSoftwareTimerCallback( xTimerHandle xTimer ) +{ + /* Just increment the ulCallbac variable. */ + ulCallback++; +} +/*-----------------------------------------------------------*/ + +static void prvQueueSendTask( void *pvParameters ) +{ +portTickType xNextWakeTime; +const unsigned long ulValueToSend = 100UL; + + /* 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. + The block time is specified in ticks, the constant used converts ticks + to ms. While in the Blocked state this task will not consume any CPU + time. */ + vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); + + /* Send to the queue - causing the queue receive task to unblock and + toggle an 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, mainDONT_BLOCK ); + } +} +/*-----------------------------------------------------------*/ + +static void prvQueueReceiveTask( void *pvParameters ) +{ +unsigned long ulReceivedValue; + + 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, increment the ulReceived variable. */ + if( ulReceivedValue == 100UL ) + { + ulReceived++; + } + } +} +/*-----------------------------------------------------------*/ + +void vApplicationMallocFailedHook( void ) +{ + /* vApplicationMallocFailedHook() will only be called if + configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook + function that will get called if a call to pvPortMalloc() fails. + pvPortMalloc() is called internally by the kernel whenever a task, queue or + semaphore is created. It is also called by various parts of the demo + application. If heap_1.c or heap_2.c are used, then the size of the heap + available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in + FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used + to query the size of free heap space that remains (although it does not + provide information on how the remaining heap might be fragmented). */ + taskDISABLE_INTERRUPTS(); + for( ;; ); +} +/*-----------------------------------------------------------*/ + +void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName ) +{ + ( void ) pcTaskName; + ( void ) pxTask; + + /* vApplicationStackOverflowHook() will only be called if + configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name + of the offending task will be passed into the hook function via its + parameters. However, when a stack has overflowed, it is possible that the + parameters will have been corrupted, in which case the pxCurrentTCB variable + can be inspected directly. */ + taskDISABLE_INTERRUPTS(); + for( ;; ); +} +/*-----------------------------------------------------------*/ + +void vApplicationIdleHook( void ) +{ + /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set + to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle + task. It is essential that code added to this hook function never attempts + to block in any way (for example, call xQueueReceive() with a block time + specified, or call vTaskDelay()). If the application makes use of the + vTaskDelete() API function (as this demo application does) then it is also + important that vApplicationIdleHook() is permitted to return to its calling + function, because it is the responsibility of the idle task to clean up + memory allocated by the kernel to any task that has since been deleted. */ +} +/*-----------------------------------------------------------*/ + +void vApplicationTickHook( void ) +{ + /* vApplicationTickHook() will only be called if configUSE_TICK_HOOK is set + to 1 in FreeRTOSConfig.h. It executes from an interrupt context so must + not use any FreeRTOS API functions that do not end in ...FromISR(). + + This simple blinky demo does not use the tick hook, but a tick hook is + required to be defined as the blinky and full demos share a + FreeRTOSConfig.h header file. */ +} +/*-----------------------------------------------------------*/ + +/* This is an application defined callback function used to install the tick +interrupt handler. It is provided as an application callback because the kernel +will run on lots of different MicroBlaze and FPGA configurations - there could +be multiple timer instances in the hardware platform and the users can chose to +use any one of them. This example uses Timer 0. If that is available in your +hardware platform then this example callback implementation should not require +modification. The definitions for the timer instance used are at the top of this +file so that users can change them at one place based on the timer instance they +use. The name of the interrupt handler that should be installed is vPortTickISR(), +which the function below declares as an extern. */ +void vApplicationSetupTimerInterrupt( void ) +{ +portBASE_TYPE xStatus; +const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U; +const unsigned long ulCounterValue = ( ( TIMER_FREQ_HZ / configTICK_RATE_HZ ) - 1UL ); +extern void vPortTickISR( void *pvUnused ); + + /* Initialise the timer/counter. */ + xStatus = XTmrCtr_Initialize( &xTimer0Instance, TIMER_DEVICE_ID ); + + if( xStatus == XST_SUCCESS ) + { + /* Install the tick interrupt handler as the timer ISR. + *NOTE* The xPortInstallInterruptHandler() API function must be used for + this purpose. */ + xStatus = xPortInstallInterruptHandler( TIMER_INTR_ID, vPortTickISR, NULL ); + } + + if( xStatus == pdPASS ) + { + /* Enable the timer interrupt in the interrupt controller. + *NOTE* The vPortEnableInterrupt() API function must be used for this + purpose. */ + vPortEnableInterrupt( TIMER_INTR_ID ); + + /* Configure the timer interrupt handler. */ + XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL ); + + /* Set the correct period for the timer. */ + XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterValue ); + + /* Enable the interrupts. Auto-reload mode is used to generate a + periodic tick. Note that interrupts are disabled when this function is + called, so interrupts will not start to be processed until the first + task has started to run. */ + XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) ); + + /* Start the timer. */ + XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber ); + } + + /* Sanity check that the function executed as expected. */ + configASSERT( ( xStatus == pdPASS ) ); +} +/*-----------------------------------------------------------*/ + +/* This is an application defined callback function used to clear whichever +interrupt was installed by the the vApplicationSetupTimerInterrupt() callback +function - in this case the interrupt generated by the AXI timer. It is +provided as an application callback because the kernel will run on lots of +different MicroBlaze and FPGA configurations - not all of which will have the +same timer peripherals defined or available. This example uses the AXI Timer 0. +If that is available on your hardware platform then this example callback +implementation should not require modification provided the example definition +of vApplicationSetupTimerInterrupt() is also not modified. */ +void vApplicationClearTimerInterrupt( void ) +{ +unsigned long ulCSR; + + /* Clear the timer interrupt */ + ulCSR = XTmrCtr_GetControlStatusReg( XPAR_TMRCTR_0_BASEADDR, 0 ); + XTmrCtr_SetControlStatusReg( XPAR_TMRCTR_0_BASEADDR, 0, ulCSR ); +} +/*-----------------------------------------------------------*/ + diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project new file mode 100644 index 000000000..c526d75b3 --- /dev/null +++ b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project @@ -0,0 +1,12 @@ + + + HardwareWithEthernetFull + + + + + + + com.xilinx.sdk.hw.HwProject + + diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.bit b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.bit new file mode 100644 index 0000000000000000000000000000000000000000..4fa2c85c35b18ec0dbc9e6ce357a690e8cf750ef GIT binary patch literal 1484497 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

&*43qT3Be*TNozeMae9M8HYGi0LgieFK_{> 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