2 FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
5 VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
7 This file is part of the FreeRTOS distribution.
9 FreeRTOS is free software; you can redistribute it and/or modify it under
10 the terms of the GNU General Public License (version 2) as published by the
11 Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
13 ***************************************************************************
14 >>! NOTE: The modification to the GPL is included to allow you to !<<
15 >>! distribute a combined work that includes FreeRTOS without being !<<
16 >>! obliged to provide the source code for proprietary components !<<
17 >>! outside of the FreeRTOS kernel. !<<
18 ***************************************************************************
20 FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22 FOR A PARTICULAR PURPOSE. Full license text is available on the following
23 link: http://www.freertos.org/a00114.html
25 ***************************************************************************
27 * FreeRTOS provides completely free yet professionally developed, *
28 * robust, strictly quality controlled, supported, and cross *
29 * platform software that is more than just the market leader, it *
30 * is the industry's de facto standard. *
32 * Help yourself get started quickly while simultaneously helping *
33 * to support the FreeRTOS project by purchasing a FreeRTOS *
34 * tutorial book, reference manual, or both: *
35 * http://www.FreeRTOS.org/Documentation *
37 ***************************************************************************
39 http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
40 the FAQ page "My application does not run, what could be wrong?". Have you
41 defined configASSERT()?
43 http://www.FreeRTOS.org/support - In return for receiving this top quality
44 embedded software for free we request you assist our global community by
45 participating in the support forum.
47 http://www.FreeRTOS.org/training - Investing in training allows your team to
48 be as productive as possible as early as possible. Now you can receive
49 FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
50 Ltd, and the world's leading authority on the world's leading RTOS.
52 http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
53 including FreeRTOS+Trace - an indispensable productivity tool, a DOS
54 compatible FAT file system, and our tiny thread aware UDP/IP stack.
56 http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
57 Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
59 http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
60 Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
61 licenses offer ticketed support, indemnification and commercial middleware.
63 http://www.SafeRTOS.com - High Integrity Systems also provide a safety
64 engineered and independently SIL3 certified version for use in safety and
65 mission critical applications that require provable dependability.
73 + Modified the default MAC address as the one used previously was not liked
81 /* MAC address definition. The MAC address must be unique on the network. */
82 #define emacETHADDR0 0
83 #define emacETHADDR1 0xbd
84 #define emacETHADDR2 0x33
85 #define emacETHADDR3 0x06
86 #define emacETHADDR4 0x68
87 #define emacETHADDR5 0x22
89 /* The IP address being used. */
90 #define emacIPADDR0 172
91 #define emacIPADDR1 25
92 #define emacIPADDR2 218
93 #define emacIPADDR3 205
95 /* The gateway address being used. */
96 #define emacGATEWAY_ADDR0 172
97 #define emacGATEWAY_ADDR1 25
98 #define emacGATEWAY_ADDR2 218
99 #define emacGATEWAY_ADDR3 3
101 /* The network mask being used. */
102 #define emacNET_MASK0 255
103 #define emacNET_MASK1 255
104 #define emacNET_MASK2 0
105 #define emacNET_MASK3 0
108 * Initialise the EMAC driver. If successful a semaphore is returned that
109 * is used by the EMAC ISR to indicate that Rx packets have been received.
110 * If the initialisation fails then NULL is returned.
112 SemaphoreHandle_t xEMACInit( void );
115 * Send ulLength bytes from pcFrom. This copies the buffer to one of the
116 * EMAC Tx buffers, then indicates to the EMAC that the buffer is ready.
117 * If lEndOfFrame is true then the data being copied is the end of the frame
118 * and the frame can be transmitted.
120 long lEMACSend( char *pcFrom, unsigned long ulLength, long lEndOfFrame );
123 * Frames can be read from the EMAC in multiple sections.
124 * Read ulSectionLength bytes from the EMAC receive buffers to pcTo.
125 * ulTotalFrameLength is the size of the entire frame. Generally vEMACRead
126 * will be repetedly called until the sum of all the ulSectionLenths totals
127 * the value of ulTotalFrameLength.
129 void vEMACRead( char *pcTo, unsigned long ulSectionLength, unsigned long ulTotalFrameLength );
132 * The EMAC driver and interrupt service routines are defined in different
133 * files as the driver is compiled to THUMB, and the ISR to ARM. This function
134 * simply passes the semaphore used to communicate between the two.
136 void vPassEMACSemaphore( SemaphoreHandle_t xCreatedSemaphore );
139 * Called by the Tx interrupt, this function traverses the buffers used to
140 * hold the frame that has just completed transmission and marks each as
143 void vClearEMACTxBuffer( void );
146 * Suspend on a semaphore waiting either for the semaphore to be obtained
147 * or a timeout. The semaphore is used by the EMAC ISR to indicate that
148 * data has been received and is ready for processing.
150 void vEMACWaitForInput( void );
153 * Return the length of the next frame in the receive buffers.
155 unsigned long ulEMACInputLength( void );