mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
This commit is contained in:
parent
d6290b8e48
commit
218c59e058
|
@ -59,8 +59,8 @@
|
||||||
|
|
||||||
|
|
||||||
/* The following #error directive is to remind users that a batch file must be
|
/* The following #error directive is to remind users that a batch file must be
|
||||||
* executed prior to this project being built. The batch file *cannot* be
|
* executed prior to this project being built. The batch file *cannot* be
|
||||||
* executed from within CCS4! Once it has been executed, re-open or refresh
|
* executed from within CCS4! Once it has been executed, re-open or refresh
|
||||||
* the CCS4 project and remove the #error line below.
|
* the CCS4 project and remove the #error line below.
|
||||||
*/
|
*/
|
||||||
//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.
|
//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.
|
||||||
|
@ -88,7 +88,7 @@
|
||||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 )
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 )
|
||||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 40 * 1024 ) )
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) )
|
||||||
#define configMAX_TASK_NAME_LEN ( 10 )
|
#define configMAX_TASK_NAME_LEN ( 10 )
|
||||||
#define configUSE_TRACE_FACILITY 1
|
#define configUSE_TRACE_FACILITY 1
|
||||||
#define configUSE_16_BIT_TICKS 0
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
|
|
@ -19,12 +19,12 @@
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../../CMSIS/a2fxxxm3.h"
|
#include "../../CMSIS/a2fxxxm3.h"
|
||||||
#include "mss_ethernet_mac.h"
|
#include "mss_ethernet_mac.h"
|
||||||
#include "mss_ethernet_mac_user_cfg.h"
|
#include "mss_ethernet_mac_user_cfg.h"
|
||||||
|
|
||||||
typedef uint32_t addr_t;
|
typedef uint32_t addr_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,25 +42,26 @@ typedef struct {
|
||||||
/***************************************************************************//**
|
/***************************************************************************//**
|
||||||
* There should be one instance of this structure for each instance of
|
* There should be one instance of this structure for each instance of
|
||||||
* the MAC in your system. MSS_MAC_init routine initializes this structure.
|
* the MAC in your system. MSS_MAC_init routine initializes this structure.
|
||||||
* It is used to identify the various MACs in your system and an initilized
|
* It is used to identify the various MACs in your system and an initilized
|
||||||
* MAC instance's structure should be passed as first parameter to MAC functions
|
* MAC instance's structure should be passed as first parameter to MAC functions
|
||||||
* to identify which MAC should perform the requested operation.
|
* to identify which MAC should perform the requested operation.
|
||||||
* Software using the MAC driver should only need to create one single
|
* Software using the MAC driver should only need to create one single
|
||||||
* instance of this data structure for each MAC hardware instance in
|
* instance of this data structure for each MAC hardware instance in
|
||||||
* the system. Using MAC_get_configuration routine, latest status of the driver
|
* the system. Using MAC_get_configuration routine, latest status of the driver
|
||||||
* may be read by receiving its flags field, similarly MAC_configure routine lets
|
* may be read by receiving its flags field, similarly MAC_configure routine lets
|
||||||
* you modify some of these flags.
|
* you modify some of these flags.
|
||||||
*/
|
*/
|
||||||
|
#include "net/pack_struct_start.h"
|
||||||
typedef struct {
|
typedef struct {
|
||||||
addr_t base_address; /**< Register base address of the driver*/
|
addr_t base_address; /**< Register base address of the driver*/
|
||||||
uint8_t flags; /**< Configuration of the driver*/
|
uint8_t flags; /**< Configuration of the driver*/
|
||||||
int8_t last_error; /**< Index of last error happened inside the driver*/
|
int8_t last_error; /**< Index of last error happened inside the driver*/
|
||||||
uint8_t mac_address[6]; /**< MAC address of the drived instance*/
|
uint8_t mac_address[6]; /**< MAC address of the drived instance*/
|
||||||
uint8_t mac_filter_data[90]; /**< MAC filter data, 15 addresses to be used for
|
uint8_t mac_filter_data[90]; /**< MAC filter data, 15 addresses to be used for
|
||||||
received data filtering*/
|
received data filtering*/
|
||||||
uint16_t last_timer_value; /**< Last read value of timer */
|
uint16_t last_timer_value; /**< Last read value of timer */
|
||||||
uint32_t time_out_value; /**< Time out value */
|
uint32_t time_out_value; /**< Time out value */
|
||||||
MSS_MAC_callback_t listener; /**< Pointer to the call-back function to be triggered
|
MSS_MAC_callback_t listener; /**< Pointer to the call-back function to be triggered
|
||||||
when a package is received*/
|
when a package is received*/
|
||||||
|
|
||||||
/* transmit related info: */
|
/* transmit related info: */
|
||||||
|
@ -72,48 +73,49 @@ typedef struct {
|
||||||
uint32_t rx_desc_index; /**< index of the receive descriptor getting used*/
|
uint32_t rx_desc_index; /**< index of the receive descriptor getting used*/
|
||||||
// uint8_t rx_buffers[RX_RING_SIZE][MSS_RX_BUFF_SIZE+4];/**< array of receive buffers*/
|
// uint8_t rx_buffers[RX_RING_SIZE][MSS_RX_BUFF_SIZE+4];/**< array of receive buffers*/
|
||||||
MAC_descriptor_t rx_descriptors[RX_RING_SIZE];/**< array of receive descriptors*/
|
MAC_descriptor_t rx_descriptors[RX_RING_SIZE];/**< array of receive descriptors*/
|
||||||
|
|
||||||
uint8_t phy_address; /**< MII address of the connected PHY*/
|
uint8_t phy_address; /**< MII address of the connected PHY*/
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
uint32_t rx_interrupts; /**< Number of receive interrupts occurred.*/
|
uint32_t rx_interrupts; /**< Number of receive interrupts occurred.*/
|
||||||
uint32_t rx_filtering_fail; /**< Number of received frames which did not pass
|
uint32_t rx_filtering_fail; /**< Number of received frames which did not pass
|
||||||
the address recognition process.*/
|
the address recognition process.*/
|
||||||
uint32_t rx_descriptor_error; /**< Number of occurrences of; no receive buffer was
|
uint32_t rx_descriptor_error; /**< Number of occurrences of; no receive buffer was
|
||||||
available when trying to store the received data.*/
|
available when trying to store the received data.*/
|
||||||
uint32_t rx_runt_frame; /**< Number of occurrences of; the frame is damaged by
|
uint32_t rx_runt_frame; /**< Number of occurrences of; the frame is damaged by
|
||||||
a collision or by a premature termination before
|
a collision or by a premature termination before
|
||||||
the end of a collision window.*/
|
the end of a collision window.*/
|
||||||
uint32_t rx_not_first; /**< Number of occurrences of; start of the frame is
|
uint32_t rx_not_first; /**< Number of occurrences of; start of the frame is
|
||||||
not the first descriptor of a frame.*/
|
not the first descriptor of a frame.*/
|
||||||
uint32_t rx_not_last; /**< Number of occurrences of; end of the frame is not
|
uint32_t rx_not_last; /**< Number of occurrences of; end of the frame is not
|
||||||
the first descriptor of a frame.*/
|
the first descriptor of a frame.*/
|
||||||
uint32_t rx_frame_too_long; /**< Number of occurrences of; a current frame is
|
uint32_t rx_frame_too_long; /**< Number of occurrences of; a current frame is
|
||||||
longer than maximum size of 1,518 bytes, as specified
|
longer than maximum size of 1,518 bytes, as specified
|
||||||
by 802.3.*/
|
by 802.3.*/
|
||||||
uint32_t rx_collision_seen; /**< Number of occurrences of; a late collision was seen
|
uint32_t rx_collision_seen; /**< Number of occurrences of; a late collision was seen
|
||||||
(collision after 64 bytes following SFD).*/
|
(collision after 64 bytes following SFD).*/
|
||||||
uint32_t rx_crc_error; /**< Number of occurrences of; a CRC error has occurred
|
uint32_t rx_crc_error; /**< Number of occurrences of; a CRC error has occurred
|
||||||
in the received frame.*/
|
in the received frame.*/
|
||||||
uint32_t rx_fifo_overflow; /**< Number of frames not accepted due to the receive
|
uint32_t rx_fifo_overflow; /**< Number of frames not accepted due to the receive
|
||||||
FIFO overflow.*/
|
FIFO overflow.*/
|
||||||
uint32_t rx_missed_frame; /**< Number of frames not accepted due to the
|
uint32_t rx_missed_frame; /**< Number of frames not accepted due to the
|
||||||
unavailability of the receive descriptor.*/
|
unavailability of the receive descriptor.*/
|
||||||
|
|
||||||
uint32_t tx_interrupts; /**< Number of transmit interrupts occurred.*/
|
uint32_t tx_interrupts; /**< Number of transmit interrupts occurred.*/
|
||||||
uint32_t tx_loss_of_carrier; /**< Number of occurrences of; a loss of the carrier
|
uint32_t tx_loss_of_carrier; /**< Number of occurrences of; a loss of the carrier
|
||||||
during a transmission.*/
|
during a transmission.*/
|
||||||
uint32_t tx_no_carrier; /**< Number of occurrences of; the carrier was not asserted
|
uint32_t tx_no_carrier; /**< Number of occurrences of; the carrier was not asserted
|
||||||
by an external transceiver during the transmission.*/
|
by an external transceiver during the transmission.*/
|
||||||
uint32_t tx_late_collision; /**< Number of occurrences of; a collision was detected
|
uint32_t tx_late_collision; /**< Number of occurrences of; a collision was detected
|
||||||
after transmitting 64 bytes.*/
|
after transmitting 64 bytes.*/
|
||||||
uint32_t tx_excessive_collision;/**< Number of occurrences of; the transmission was
|
uint32_t tx_excessive_collision;/**< Number of occurrences of; the transmission was
|
||||||
aborted after 16 retries.*/
|
aborted after 16 retries.*/
|
||||||
uint32_t tx_collision_count; /**< Number of collisions occurred.*/
|
uint32_t tx_collision_count; /**< Number of collisions occurred.*/
|
||||||
uint32_t tx_underflow_error; /**< Number of occurrences of; the FIFO was empty during
|
uint32_t tx_underflow_error; /**< Number of occurrences of; the FIFO was empty during
|
||||||
the frame transmission.*/
|
the frame transmission.*/
|
||||||
} statistics;
|
} statistics;
|
||||||
} MAC_instance_t __attribute__((packed));
|
} MAC_instance_t
|
||||||
|
#include "net/pack_struct_end.h"
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
|
@ -130,29 +132,29 @@ typedef struct
|
||||||
uint32_t CSR0_TAP[3];
|
uint32_t CSR0_TAP[3];
|
||||||
uint32_t CSR0_DBO;
|
uint32_t CSR0_DBO;
|
||||||
uint32_t CSR0_RESERVED1[11];
|
uint32_t CSR0_RESERVED1[11];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED0[32];
|
uint32_t MAC_CSR_RESERVED0[32];
|
||||||
|
|
||||||
uint32_t CSR1[32];
|
uint32_t CSR1[32];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED1[32];
|
uint32_t MAC_CSR_RESERVED1[32];
|
||||||
|
|
||||||
uint32_t CSR2[32];
|
uint32_t CSR2[32];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED2[32];
|
uint32_t MAC_CSR_RESERVED2[32];
|
||||||
|
|
||||||
uint32_t CSR3[32];
|
uint32_t CSR3[32];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED3[32];
|
uint32_t MAC_CSR_RESERVED3[32];
|
||||||
|
|
||||||
uint32_t CSR4[32];
|
uint32_t CSR4[32];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED4[32];
|
uint32_t MAC_CSR_RESERVED4[32];
|
||||||
|
|
||||||
uint32_t CSR5_TI;
|
uint32_t CSR5_TI;
|
||||||
uint32_t CSR5_TPS;
|
uint32_t CSR5_TPS;
|
||||||
uint32_t CSR5_TU;
|
uint32_t CSR5_TU;
|
||||||
uint32_t CSR5_RESERVED0[2];
|
uint32_t CSR5_RESERVED0[2];
|
||||||
uint32_t CSR5_UNF;
|
uint32_t CSR5_UNF;
|
||||||
uint32_t CSR5_RI;
|
uint32_t CSR5_RI;
|
||||||
uint32_t CSR5_RU;
|
uint32_t CSR5_RU;
|
||||||
|
@ -169,7 +171,7 @@ typedef struct
|
||||||
uint32_t CSR5_RESERVED3[9];
|
uint32_t CSR5_RESERVED3[9];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED5[32];
|
uint32_t MAC_CSR_RESERVED5[32];
|
||||||
|
|
||||||
uint32_t CSR6_HP;
|
uint32_t CSR6_HP;
|
||||||
uint32_t CSR6_SR;
|
uint32_t CSR6_SR;
|
||||||
uint32_t CSR6_HO;
|
uint32_t CSR6_HO;
|
||||||
|
@ -191,7 +193,7 @@ typedef struct
|
||||||
uint32_t CSR6_RESERVED5;
|
uint32_t CSR6_RESERVED5;
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED6[32];
|
uint32_t MAC_CSR_RESERVED6[32];
|
||||||
|
|
||||||
uint32_t CSR7_TIE;
|
uint32_t CSR7_TIE;
|
||||||
uint32_t CSR7_TSE;
|
uint32_t CSR7_TSE;
|
||||||
uint32_t CSR7_TUE;
|
uint32_t CSR7_TUE;
|
||||||
|
@ -210,11 +212,11 @@ typedef struct
|
||||||
uint32_t CSR7[15];
|
uint32_t CSR7[15];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED7[32];
|
uint32_t MAC_CSR_RESERVED7[32];
|
||||||
|
|
||||||
uint32_t CSR8[32];
|
uint32_t CSR8[32];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED8[32];
|
uint32_t MAC_CSR_RESERVED8[32];
|
||||||
|
|
||||||
uint32_t CSR9_SCS;
|
uint32_t CSR9_SCS;
|
||||||
uint32_t CSR9_SCLK;
|
uint32_t CSR9_SCLK;
|
||||||
uint32_t CSR9_SDI;
|
uint32_t CSR9_SDI;
|
||||||
|
@ -227,11 +229,11 @@ typedef struct
|
||||||
uint32_t CSR9_RESERVED1[12];
|
uint32_t CSR9_RESERVED1[12];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED9[32];
|
uint32_t MAC_CSR_RESERVED9[32];
|
||||||
|
|
||||||
uint32_t CSR10[32];
|
uint32_t CSR10[32];
|
||||||
|
|
||||||
uint32_t MAC_CSR_RESERVED10[32];
|
uint32_t MAC_CSR_RESERVED10[32];
|
||||||
|
|
||||||
uint32_t CSR11_TIM[16];
|
uint32_t CSR11_TIM[16];
|
||||||
uint32_t CSR11_CON;
|
uint32_t CSR11_CON;
|
||||||
uint32_t CSR11_NRP[3];
|
uint32_t CSR11_NRP[3];
|
||||||
|
@ -559,19 +561,19 @@ typedef struct
|
||||||
#define CSR5_TS_SHIFT 20
|
#define CSR5_TS_SHIFT 20
|
||||||
|
|
||||||
/** 000 - Stopped; RESET or STOP TRANSMIT command issued. */
|
/** 000 - Stopped; RESET or STOP TRANSMIT command issued. */
|
||||||
#define CSR5_TS_STOPPED 0u
|
#define CSR5_TS_STOPPED 0u
|
||||||
/** 001 - Running, fetching the transmit descriptor. */
|
/** 001 - Running, fetching the transmit descriptor. */
|
||||||
#define CSR5_TS_RUNNING_FD 1u
|
#define CSR5_TS_RUNNING_FD 1u
|
||||||
/** 010 - Running, waiting for end of transmission. */
|
/** 010 - Running, waiting for end of transmission. */
|
||||||
#define CSR5_TS_RUNNING_WT 2u
|
#define CSR5_TS_RUNNING_WT 2u
|
||||||
/** 011 - Running, transferring data buffer from host memory to FIFO. */
|
/** 011 - Running, transferring data buffer from host memory to FIFO. */
|
||||||
#define CSR5_TS_RUNNING_TD 3u
|
#define CSR5_TS_RUNNING_TD 3u
|
||||||
/** 101 - Running, setup packet. */
|
/** 101 - Running, setup packet. */
|
||||||
#define CSR5_TS_RUNNING_SP 5u
|
#define CSR5_TS_RUNNING_SP 5u
|
||||||
/** 110 - Suspended; FIFO underflow or unavailable descriptor. */
|
/** 110 - Suspended; FIFO underflow or unavailable descriptor. */
|
||||||
#define CSR5_TS_SUSPENDED 6u
|
#define CSR5_TS_SUSPENDED 6u
|
||||||
/** 111 - Running, closing transmit descriptor. */
|
/** 111 - Running, closing transmit descriptor. */
|
||||||
#define CSR5_TS_RUNNING_CD 7u
|
#define CSR5_TS_RUNNING_CD 7u
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* CSR5_RS:
|
* CSR5_RS:
|
||||||
|
@ -584,19 +586,19 @@ typedef struct
|
||||||
#define CSR5_RS_SHIFT 17
|
#define CSR5_RS_SHIFT 17
|
||||||
|
|
||||||
/** 000 - Stopped; RESET or STOP RECEIVE command issued. */
|
/** 000 - Stopped; RESET or STOP RECEIVE command issued. */
|
||||||
#define CSR5_RS_STOPPED 0u
|
#define CSR5_RS_STOPPED 0u
|
||||||
/** 001 - Running, fetching the receive descriptor. */
|
/** 001 - Running, fetching the receive descriptor. */
|
||||||
#define CSR5_RS_RUNNING_FD 1u
|
#define CSR5_RS_RUNNING_FD 1u
|
||||||
/** 010 - Running, waiting for the end-of-receive packet before prefetch of the
|
/** 010 - Running, waiting for the end-of-receive packet before prefetch of the
|
||||||
*next descriptor. */
|
*next descriptor. */
|
||||||
#define CSR5_RS_RUNNING_WR 2u
|
#define CSR5_RS_RUNNING_WR 2u
|
||||||
/** 011 - Running, waiting for the receive packet. */
|
/** 011 - Running, waiting for the receive packet. */
|
||||||
#define CSR5_RS_RUNNING_RB 3u
|
#define CSR5_RS_RUNNING_RB 3u
|
||||||
/** 100 - Suspended, unavailable receive buffer. */
|
/** 100 - Suspended, unavailable receive buffer. */
|
||||||
#define CSR5_RS_SUSPENDED 4u
|
#define CSR5_RS_SUSPENDED 4u
|
||||||
/** 101 - Running, closing the receive descriptor. */
|
/** 101 - Running, closing the receive descriptor. */
|
||||||
#define CSR5_RS_RUNNING_CD 5u
|
#define CSR5_RS_RUNNING_CD 5u
|
||||||
/** 111 - Running, transferring data from FIFO to host memory. */
|
/** 111 - Running, transferring data from FIFO to host memory. */
|
||||||
#define CSR5_RS_RUNNING_TD 7u
|
#define CSR5_RS_RUNNING_TD 7u
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
|
|
1675
Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd
Normal file
1675
Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd
Normal file
File diff suppressed because it is too large
Load diff
1913
Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp
Normal file
1913
Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp
Normal file
File diff suppressed because it is too large
Load diff
10
Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww
Normal file
10
Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<workspace>
|
||||||
|
<project>
|
||||||
|
<path>$WS_DIR$\RTOSDemo_IAR.ewp</path>
|
||||||
|
</project>
|
||||||
|
<batchBuild/>
|
||||||
|
</workspace>
|
||||||
|
|
||||||
|
|
|
@ -185,8 +185,8 @@ int main(void)
|
||||||
xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL );
|
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 );
|
xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
/* Create the software timer that is responsible for turning off the LED
|
/* Create the software timer that is responsible for turning off the LED
|
||||||
if the button is not pushed within 5000ms, as described at the top of
|
if the button is not pushed within 5000ms, as described at the top of
|
||||||
this file. */
|
this file. */
|
||||||
xLEDTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */
|
xLEDTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */
|
||||||
( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */
|
( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */
|
||||||
|
@ -289,8 +289,8 @@ unsigned long ulReceivedValue;
|
||||||
if( ulReceivedValue == 100UL )
|
if( ulReceivedValue == 100UL )
|
||||||
{
|
{
|
||||||
/* NOTE - accessing the LED port should use a critical section
|
/* NOTE - accessing the LED port should use a critical section
|
||||||
because it is accessed from multiple tasks, and the button interrupt
|
because it is accessed from multiple tasks, and the button interrupt
|
||||||
- in this trivial case, for simplicity, the critical section is
|
- in this trivial case, for simplicity, the critical section is
|
||||||
omitted. */
|
omitted. */
|
||||||
if( ( ulGPIOState & mainTASK_CONTROLLED_LED ) != 0 )
|
if( ( ulGPIOState & mainTASK_CONTROLLED_LED ) != 0 )
|
||||||
{
|
{
|
||||||
|
@ -340,7 +340,7 @@ void vApplicationMallocFailedHook( void )
|
||||||
{
|
{
|
||||||
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
||||||
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
||||||
internally by FreeRTOS API functions that create tasks, queues, software
|
internally by FreeRTOS API functions that create tasks, queues, software
|
||||||
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
||||||
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
||||||
for( ;; );
|
for( ;; );
|
||||||
|
@ -364,7 +364,7 @@ void vApplicationIdleHook( void )
|
||||||
volatile size_t xFreeStackSpace;
|
volatile size_t xFreeStackSpace;
|
||||||
|
|
||||||
/* This function is called on each cycle of the idle task. In this case it
|
/* This function is called on each cycle of the idle task. In this case it
|
||||||
does nothing useful, other than report the amout of FreeRTOS heap that
|
does nothing useful, other than report the amout of FreeRTOS heap that
|
||||||
remains unallocated. */
|
remains unallocated. */
|
||||||
xFreeStackSpace = xPortGetFreeHeapSize();
|
xFreeStackSpace = xPortGetFreeHeapSize();
|
||||||
|
|
||||||
|
@ -376,3 +376,4 @@ volatile size_t xFreeStackSpace;
|
||||||
reduced accordingly. */
|
reduced accordingly. */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ callback function updates the OLED text. */
|
||||||
#define mainOLED_PERIOD_ms ( 75UL )
|
#define mainOLED_PERIOD_ms ( 75UL )
|
||||||
|
|
||||||
/* The period at which the check timer will expire, in ms, if an error has been
|
/* The period at which the check timer will expire, in ms, if an error has been
|
||||||
reported in one of the standard demo tasks. */
|
reported in one of the standard demo tasks. */
|
||||||
#define mainERROR_CHECK_TIMER_PERIOD_ms ( 500UL )
|
#define mainERROR_CHECK_TIMER_PERIOD_ms ( 500UL )
|
||||||
|
|
||||||
/* A zero block time. */
|
/* A zero block time. */
|
||||||
|
@ -228,24 +228,24 @@ static void prvQueueReceiveTask( void *pvParameters );
|
||||||
static void prvQueueSendTask( void *pvParameters );
|
static void prvQueueSendTask( void *pvParameters );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The LED timer callback function. This does nothing but switch the red LED
|
* The LED timer callback function. This does nothing but switch the red LED
|
||||||
* off.
|
* off.
|
||||||
*/
|
*/
|
||||||
static void vLEDTimerCallback( xTimerHandle xTimer );
|
static void vLEDTimerCallback( xTimerHandle xTimer );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The check timer callback function, as described at the top of this file.
|
* The check timer callback function, as described at the top of this file.
|
||||||
*/
|
*/
|
||||||
static void vCheckTimerCallback( xTimerHandle xTimer );
|
static void vCheckTimerCallback( xTimerHandle xTimer );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The OLED timer callback function, as described at the top of this file.
|
* The OLED timer callback function, as described at the top of this file.
|
||||||
*/
|
*/
|
||||||
static void vOLEDTimerCallback( xTimerHandle xHandle );
|
static void vOLEDTimerCallback( xTimerHandle xHandle );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is not a 'standard' partest function, so the prototype is not in
|
* This is not a 'standard' partest function, so the prototype is not in
|
||||||
* partest.h, and is instead included here.
|
* partest.h, and is instead included here.
|
||||||
*/
|
*/
|
||||||
void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue );
|
void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue );
|
||||||
|
|
||||||
|
@ -292,8 +292,8 @@ int main(void)
|
||||||
xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL );
|
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 );
|
xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
/* Create the software timer that is responsible for turning off the LED
|
/* Create the software timer that is responsible for turning off the LED
|
||||||
if the button is not pushed within 5000ms, as described at the top of
|
if the button is not pushed within 5000ms, as described at the top of
|
||||||
this file. */
|
this file. */
|
||||||
xLEDTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */
|
xLEDTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */
|
||||||
( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */
|
( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */
|
||||||
|
@ -325,7 +325,7 @@ int main(void)
|
||||||
vStartTimerDemoTask( mainTIMER_TEST_PERIOD );
|
vStartTimerDemoTask( mainTIMER_TEST_PERIOD );
|
||||||
|
|
||||||
/* Create the web server task. */
|
/* Create the web server task. */
|
||||||
// xTaskCreate( vuIP_Task, ( signed char * ) "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL );
|
xTaskCreate( vuIP_Task, ( signed char * ) "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
/* Start the tasks and timer running. */
|
/* Start the tasks and timer running. */
|
||||||
vTaskStartScheduler();
|
vTaskStartScheduler();
|
||||||
|
@ -455,7 +455,7 @@ const unsigned long ulValueToSend = 100UL;
|
||||||
while the check and OLED timers can be created in main(), they cannot be
|
while the check and OLED timers can be created in main(), they cannot be
|
||||||
started from main(). Once the scheduler has started, the timer service
|
started from main(). Once the scheduler has started, the timer service
|
||||||
task will drain the command queue, and now the check and OLED timers can be
|
task will drain the command queue, and now the check and OLED timers can be
|
||||||
started successfully. */
|
started successfully. */
|
||||||
xTimerStart( xCheckTimer, portMAX_DELAY );
|
xTimerStart( xCheckTimer, portMAX_DELAY );
|
||||||
xTimerStart( xOLEDTimer, portMAX_DELAY );
|
xTimerStart( xOLEDTimer, portMAX_DELAY );
|
||||||
|
|
||||||
|
@ -561,7 +561,7 @@ void vApplicationMallocFailedHook( void )
|
||||||
{
|
{
|
||||||
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
||||||
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
||||||
internally by FreeRTOS API functions that create tasks, queues, software
|
internally by FreeRTOS API functions that create tasks, queues, software
|
||||||
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
||||||
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
||||||
for( ;; );
|
for( ;; );
|
||||||
|
|
|
@ -38,7 +38,7 @@ static void printchar(char **str, int c)
|
||||||
++(*str);
|
++(*str);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(void)putchar(c);
|
(void)putchar(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,7 +189,7 @@ static int print( char **out, const char *format, va_list args )
|
||||||
int printf(const char *format, ...)
|
int printf(const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start( args, format );
|
va_start( args, format );
|
||||||
return print( 0, format, args );
|
return print( 0, format, args );
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ int printf(const char *format, ...)
|
||||||
int sprintf(char *out, const char *format, ...)
|
int sprintf(char *out, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start( args, format );
|
va_start( args, format );
|
||||||
return print( &out, format, args );
|
return print( &out, format, args );
|
||||||
}
|
}
|
||||||
|
@ -206,9 +206,9 @@ int sprintf(char *out, const char *format, ...)
|
||||||
int snprintf( char *buf, unsigned int count, const char *format, ... )
|
int snprintf( char *buf, unsigned int count, const char *format, ... )
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
( void ) count;
|
( void ) count;
|
||||||
|
|
||||||
va_start( args, format );
|
va_start( args, format );
|
||||||
return print( &buf, format, args );
|
return print( &buf, format, args );
|
||||||
}
|
}
|
||||||
|
@ -283,7 +283,7 @@ int main(void)
|
||||||
|
|
||||||
|
|
||||||
/* To keep linker happy. */
|
/* To keep linker happy. */
|
||||||
int write( int i, char* c, int n)
|
int __write( int i, char* c, int n)
|
||||||
{
|
{
|
||||||
(void)i;
|
(void)i;
|
||||||
(void)n;
|
(void)n;
|
||||||
|
|
|
@ -114,19 +114,19 @@ static void prvSetMACAddress( void );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform any uIP initialisation required to ready the stack for http
|
* Perform any uIP initialisation required to ready the stack for http
|
||||||
* processing.
|
* processing.
|
||||||
*/
|
*/
|
||||||
static void prvInitialise_uIP( void );
|
static void prvInitialise_uIP( void );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handles Ethernet interrupt events.
|
* Handles Ethernet interrupt events.
|
||||||
*/
|
*/
|
||||||
static void prvEMACEventListener( unsigned long ulISREvents );
|
static void prvEMACEventListener( unsigned long ulISREvents );
|
||||||
|
|
||||||
static void prvUIPTimerCallback( xTimerHandle xTimer );
|
static void prvUIPTimerCallback( xTimerHandle xTimer );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise the MAC hardware.
|
* Initialise the MAC hardware.
|
||||||
*/
|
*/
|
||||||
static void prvInitEmac( void );
|
static void prvInitEmac( void );
|
||||||
|
|
||||||
|
@ -383,7 +383,7 @@ const unsigned char ucPHYAddress = 1;
|
||||||
|
|
||||||
MSS_MAC_init( ucPHYAddress );
|
MSS_MAC_init( ucPHYAddress );
|
||||||
|
|
||||||
MSS_MAC_set_callback( prvEMACEventListener );
|
MSS_MAC_set_callback( ( MSS_MAC_callback_t ) prvEMACEventListener );
|
||||||
|
|
||||||
/* Setup the EMAC and the NVIC for MAC interrupts. */
|
/* Setup the EMAC and the NVIC for MAC interrupts. */
|
||||||
NVIC_SetPriority( EthernetMAC_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority( EthernetMAC_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
|
|
Loading…
Reference in a new issue