= Xilkernel Reference Designs = ''Note: Xilkernel is no longer used as the OS for the Wireless Reference Designs. However, these projects are great for getting started with using Xilkernel.'' Xilkernel is a light-weight real time operating system (RTOS). For the PowerPC 405 architecture (which WARP uses), it has a memory footprint ranging from only 16 to 32 kilobytes depending on features implemented. Xilkernel can be set as the operating system for your WARP project in "'''software platform settings'''" under the "'''software'''" drop-down in Xilinx Platform Studio. An introduction to xilkernel use on WARP may be found [wiki:ppc_prog_overview here]. The xilkernel API is located in "'''$EDK\doc\oslib_rm.pdf'''." The following are the currently available reference designs for xilkernel (and are built for WARP vers. 1.1):[[BR]] * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_pthreads_PRIO_ex_for_WARP_v_1_1_XPS8.zip?format=raw Priority Scheduled pThreads]: This demo serves a basic introduction for generating and running threads (processes) in a priority scheduling format. In priority scheduling, threads are given priority levels -- a lower priority threads always yields to a higher priority thread until it has finished its task. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_pthreads_RR_ex_for_WARP_v_1_1_XPS8.zip?format=raw Round Robin Scheduled pThreads]: This demo also serves as a reference to generating and running threads. In Round Robin style scheduling, the threads are processed in small chunks at a time in a queue. The human real-time effect of this, is that the threads are running in parallel. This is also how threads of the same priority level in Priority scheduling mode act. This design also features use of the "kill" function. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_mutex_ex_for_WARP_v_1_1_XPS8.zip?format=raw Mutex-based Resource Sharing]: This design demonstrates the use of a mutex to get a lock on a resource that both threads are trying to utilize simultaneously. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_semaphores_ex_for_WARP_v_1_1_XPS8.zip?format=raw Semaphore Thread Control]: Semaphores can also be used for resource sharing, but this reference design demontrates using semaphores for controlling thread interaction. The effect of this is a simple demo that uses simple order-of-operations to produce a numeric output. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_shmem_ex_for_WARP_v_1_1_XPS8.zip?format=raw Shared Memory Example]: A design showing how shared memory (though still under development) is used. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_dynmem_ex_for_WARP_v_1_1_XPS8.zip?format=raw Dynamic Memory Allocation Example]: This is a simple demo that takes the user through setting up a buffer, writes a faux packet to it, reads the packet from it, and then destroys it. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_msg_queue_ex_for_WARP_v_1_1_XPS8.zip?format=raw Message Queue Design]: This reference design shows how data in packet-structure can be easily passed from thread to thread by using the simple message queue API function calls. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_timer_interrupt_ex_for_WARP_v_1_1_XPS8.zip?format=raw Timer Interrupt Example]: This example walks the user through creating a countdown-based timer-interrupt in xilkernel. When the timer hits zero, it causes an interrupt and resets the countdown. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_Xilinx_Demo_for_WARP_v_1_1_XPS_8.zip?format=raw Xilinx's Xilkernel Demo Ported for WARP v. 1.1]: This is a reference design provided by Xilinx that has been ported to the WARP version 1.1. It showcases much of the same functionality as the other xilkernel demos here, but in more gorey detail and with a lot less commented code. It is worth checking out after looking into the basic xilkernel reference designs. * [http://warp.rice.edu/trac/attachment/wiki/xilkernel_ref/files/Xilkernel_ALL_Demos_for_WARP_v_1_1_XPS8.zip?format=raw ALL of the Xilkernel Demos for WARP]: If you're just too impatient to get through the demos one-by-one, this package contains all of the xilkernel demos. Required Hardware: * WARP v. 1.1 (though the provided files can be easily ported to other platforms) * Null Modem Serial Cable Required Software: * Xilinx tools for downloading/modifying the projects to the WARP * [http://hp.vector.co.jp/authors/VA002416/teraterm.html TeraTerm Pro] -- for serial interaction/debug for the demos (Baud Rate should be: 57600)