diff options
Diffstat (limited to 'demos/ARM7-AT91SAM7X-WEB-GCC')
-rw-r--r-- | demos/ARM7-AT91SAM7X-WEB-GCC/Makefile | 6 | ||||
-rw-r--r-- | demos/ARM7-AT91SAM7X-WEB-GCC/board.c | 6 | ||||
-rw-r--r-- | demos/ARM7-AT91SAM7X-WEB-GCC/main.c | 2 | ||||
-rw-r--r-- | demos/ARM7-AT91SAM7X-WEB-GCC/web/webthread.c | 32 |
4 files changed, 29 insertions, 17 deletions
diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile b/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile index 9538d20d5..bb4c21c1a 100644 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile +++ b/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile @@ -65,13 +65,17 @@ CSRC = ${PORTSRC} \ ${USRC} \
${CHIBIOS}/os/io/pal.c \
${CHIBIOS}/os/io/serial.c \
+ ${CHIBIOS}/os/io/phy.c \
+ ${CHIBIOS}/os/io/mac.c \
${CHIBIOS}/os/io/platforms/AT91SAM7X/pal_lld.c \
${CHIBIOS}/os/io/platforms/AT91SAM7X/serial_lld.c \
- ${CHIBIOS}/os/io/platforms/AT91SAM7X/sam7x_emac.c \
+ ${CHIBIOS}/os/io/platforms/AT91SAM7X/phy_lld.c \
+ ${CHIBIOS}/os/io/platforms/AT91SAM7X/mac_lld.c \
${CHIBIOS}/os/io/platforms/AT91SAM7X/at91lib/aic.c \
${CHIBIOS}/os/various/evtimer.c \
web/webthread.c \
board.c main.c
+# ${CHIBIOS}/os/io/platforms/AT91SAM7X/sam7x_emac.c \
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
# setting.
diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/board.c b/demos/ARM7-AT91SAM7X-WEB-GCC/board.c index e57f8bcdc..39136b03e 100644 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/board.c +++ b/demos/ARM7-AT91SAM7X-WEB-GCC/board.c @@ -20,7 +20,8 @@ #include <ch.h>
#include <pal.h>
#include <serial.h>
-#include <sam7x_emac.h>
+#include <mac.h>
+//#include <sam7x_emac.h>
#include "board.h"
#include "at91lib/aic.h"
@@ -178,7 +179,8 @@ void hwinit1(void) { /*
* EMAC driver initialization.
*/
- emac_init(AT91C_AIC_PRIOR_HIGHEST - 3);
+// emac_init(AT91C_AIC_PRIOR_HIGHEST - 3);
+ macInit();
/*
* ChibiOS/RT initialization.
diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/main.c b/demos/ARM7-AT91SAM7X-WEB-GCC/main.c index adfba225f..e2d3e8cd8 100644 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/main.c +++ b/demos/ARM7-AT91SAM7X-WEB-GCC/main.c @@ -28,7 +28,7 @@ #include "web/webthread.h"
static WORKING_AREA(waWebThread, 512);
-static WORKING_AREA(waThread1, 64);
+static WORKING_AREA(waThread1, 128);
static msg_t Thread1(void *arg) {
diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/web/webthread.c b/demos/ARM7-AT91SAM7X-WEB-GCC/web/webthread.c index d064e1ef3..521a40b04 100644 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/web/webthread.c +++ b/demos/ARM7-AT91SAM7X-WEB-GCC/web/webthread.c @@ -21,7 +21,7 @@ #include <ch.h>
#include <evtimer.h>
-#include <sam7x_emac.h>
+#include <mac.h>
#include <uip.h>
#include <uip_arp.h>
@@ -47,11 +47,11 @@ static const struct uip_eth_addr macaddr = { */
static void network_device_send(void) {
int i;
- BufDescriptorEntry *bdep;
+ MACTransmitDescriptor *tdp;
for (i = 0; i < SEND_RETRY_MAX; i++) {
- if ((bdep = EMACGetTransmitBuffer()) != NULL) {
- uint8_t *bp = (uint8_t *)bdep->w1;
+ if ((tdp = macWaitTransmitDescriptor(&MAC1, uip_len, TIME_IMMEDIATE)) != NULL) {
+ uint8_t *bp = macGetTransmitBuffer(tdp);
if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN)
memcpy(bp, &uip_buf[0], uip_len);
@@ -61,7 +61,7 @@ static void network_device_send(void) { uip_appdata,
uip_len - (UIP_LLH_LEN + UIP_TCPIP_HLEN));
}
- EMACTransmit(bdep, uip_len);
+ macReleaseTransmitDescriptor(&MAC1, tdp);
return;
}
chThdSleep(SEND_RETRY_INTERVAL);
@@ -73,10 +73,16 @@ static void network_device_send(void) { * uIP receive function wrapping the EMAC function.
*/
static size_t network_device_read(void) {
- size_t size = UIP_CONF_BUFFER_SIZE;
- if (EMACReceive(uip_buf, &size))
- return size;
- return 0;
+ MACReceiveDescriptor *rdp;
+ size_t size;
+ uint8_t *bp;
+
+ if ((rdp = macWaitReceiveDescriptor(&MAC1, &size, TIME_IMMEDIATE)) == NULL)
+ return 0;
+ bp = macGetReceiveBuffer(rdp);
+ memcpy(&uip_buf[0], bp, size);
+ macReleaseReceiveDescriptor(&MAC1, rdp);
+ return size;
}
void clock_init(void) {}
@@ -107,7 +113,7 @@ static void PeriodicTimerHandler(eventid_t id) { static void ARPTimerHandler(eventid_t id) {
uip_arp_timer();
- (void)EMACGetLinkStatus();
+ (void)macPollLinkStatus(&MAC1);
}
/*
@@ -150,7 +156,7 @@ msg_t WebThread(void *p) { /*
* Event sources setup.
*/
- chEvtRegister(&EMACFrameReceived, &el0, FRAME_RECEIVED_ID);
+ chEvtRegister(macGetReceiveEventSource(&MAC1), &el0, FRAME_RECEIVED_ID);
chEvtPend(EVENT_MASK(FRAME_RECEIVED_ID)); /* In case some frames are already buffered */
evtInit(&evt1, MS2ST(500));
@@ -164,8 +170,8 @@ msg_t WebThread(void *p) { /*
* EMAC settings.
*/
- EMACSetAddress(&macaddr.addr[0]);
- (void)EMACGetLinkStatus();
+ macSetAddress(&MAC1, &macaddr.addr[0]);
+ (void)macPollLinkStatus(&MAC1);
/*
* uIP initialization.
|