mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-31 13:00:49 +00:00
Changes
This commit is contained in:
1 parent
f5943fe591
commit
8005a5e687
10 files changed
+255
-447
No files matched your search
@@ -11,7 +11,7 @@ SOURCES = main.c syscalls.c startup.c
|
||||
#SOURCES += cmsis_sam/xc32/ATSAME54P20A/startup_atsame54p20a.c
|
||||
|
||||
SOURCES += mongoose.c net.c packed_fs.c
|
||||
CFLAGS += -DMG_ENABLE_TCPIP=1 -DMG_ARCH=MG_ARCH_NEWLIB -DMG_ENABLE_CUSTOM_MILLIS=1
|
||||
CFLAGS += -DMG_ENABLE_TCPIP=1 -DMG_ARCH=MG_ARCH_NEWLIB -DMG_ENABLE_CUSTOM_MILLIS=1 -DMG_ENABLE_LINES=1
|
||||
CFLAGS += -DMG_ENABLE_DRIVER_SAME54=1 -DMG_ENABLE_CUSTOM_RANDOM=1 -DMG_ENABLE_PACKED_FS=1 $(CFLAGS_EXTRA)
|
||||
|
||||
VCON_API_KEY=IBrJL5K4arSGMiAXbUKWdG6I2gM
|
||||
|
||||
@@ -176,3 +176,39 @@ static inline void gpio_set_irq_handler(uint16_t pin, void (*fn)(void *),
|
||||
void *arg) {
|
||||
(void) pin, (void) fn, (void) arg;
|
||||
}
|
||||
|
||||
static inline void ethernet_init(void) {
|
||||
uint16_t pins[] = {PIN('A', 12), PIN('A', 13), PIN('A', 14), PIN('A', 15),
|
||||
PIN('A', 17), PIN('A', 18), PIN('A', 19), PIN('C', 11),
|
||||
PIN('C', 12), PIN('C', 20)};
|
||||
uint32_t af[] = {MUX_PA12L_GMAC_GRX1, MUX_PA13L_GMAC_GRX0,
|
||||
MUX_PA14L_GMAC_GTXCK, MUX_PA15L_GMAC_GRXER,
|
||||
MUX_PA17L_GMAC_GTXEN, MUX_PA18L_GMAC_GTX0,
|
||||
MUX_PA19L_GMAC_GTX1, MUX_PC11L_GMAC_GMDC,
|
||||
MUX_PC12L_GMAC_GMDIO, MUX_PC20L_GMAC_GRXDV};
|
||||
|
||||
MCLK_REGS->MCLK_APBBMASK |= MCLK_APBBMASK_PORT_Msk;
|
||||
|
||||
for (size_t i = 0; i < sizeof(pins) / sizeof(pins[0]); i++) {
|
||||
int bank = PINBANK(pins[i]), no = PINNO(pins[i]);
|
||||
PORT_REGS->GROUP[bank].PORT_PINCFG[no] |= PORT_PINCFG_PMUXEN_Msk;
|
||||
volatile uint8_t *m = &PORT_REGS->GROUP[bank].PORT_PMUX[no / 2], v = m[0];
|
||||
if (no & 1) {
|
||||
m[0] = (uint8_t) (v & ~0xf0) | PORT_PMUX_PMUXO(af[i]);
|
||||
} else {
|
||||
m[0] = (uint8_t) (v & ~0x0f) | PORT_PMUX_PMUXE(af[i]);
|
||||
}
|
||||
}
|
||||
|
||||
PORT_REGS->GROUP[0].PORT_PINCFG[17] |= PORT_PINCFG_DRVSTR_Msk;
|
||||
PORT_REGS->GROUP[0].PORT_PINCFG[18] |= PORT_PINCFG_DRVSTR_Msk;
|
||||
PORT_REGS->GROUP[0].PORT_PINCFG[19] |= PORT_PINCFG_DRVSTR_Msk;
|
||||
|
||||
// Reset PHY
|
||||
uint16_t phy_pin = PIN('C', 21);
|
||||
gpio_output(phy_pin);
|
||||
gpio_write(phy_pin, false);
|
||||
spin(999);
|
||||
gpio_write(phy_pin, true);
|
||||
spin(999);
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
void SystemInit(void) { // Called automatically by startup code
|
||||
clock_init();
|
||||
rng_init();
|
||||
}
|
||||
|
||||
static volatile uint64_t s_ticks; // Milliseconds since boot
|
||||
@@ -36,11 +37,15 @@ static void timer_fn(void *arg) {
|
||||
ifp->ndrop, ifp->nerr));
|
||||
}
|
||||
|
||||
static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
|
||||
if (ev == MG_EV_HTTP_MSG) mg_http_reply(c, 200, "", "ok\n");
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
gpio_input(BUTTON_PIN);
|
||||
gpio_output(LED_PIN);
|
||||
uart_init(UART_DEBUG, 115200);
|
||||
rng_init();
|
||||
ethernet_init();
|
||||
|
||||
MG_INFO(("Starting, CPU freq %g MHz", (double) clock_sys_freq() / 1000000));
|
||||
|
||||
@@ -49,8 +54,8 @@ int main(void) {
|
||||
mg_log_set(MG_LL_DEBUG); // Set log level
|
||||
|
||||
// Initialise Mongoose network stack
|
||||
struct mg_tcpip_driver_same54_data driver_data = {.mdc_cr = 4};
|
||||
struct mg_tcpip_if mif = {.mac = {0x02, 0x14, 0x30, 0x00, 0x1a, 0x00},
|
||||
struct mg_tcpip_driver_same54_data driver_data = {.mdc_cr = 5};
|
||||
struct mg_tcpip_if mif = {.mac = {2, 3, 4, 5, 6, 7},
|
||||
// Uncomment below for static configuration:
|
||||
// .ip = mg_htonl(MG_U32(192, 168, 0, 223)),
|
||||
// .mask = mg_htonl(MG_U32(255, 255, 255, 0)),
|
||||
@@ -58,7 +63,7 @@ int main(void) {
|
||||
.driver = &mg_tcpip_driver_same54,
|
||||
.driver_data = &driver_data};
|
||||
mg_tcpip_init(&mgr, &mif);
|
||||
mg_timer_add(&mgr, BLINK_PERIOD_MS, MG_TIMER_REPEAT, timer_fn, &mif);
|
||||
mg_timer_add(&mgr, LOG_PERIOD_MS, MG_TIMER_REPEAT, timer_fn, &mif);
|
||||
|
||||
MG_INFO(("MAC: %M. Waiting for IP...", mg_print_mac, mif.mac));
|
||||
while (mif.state != MG_TCPIP_STATE_READY) {
|
||||
@@ -66,7 +71,8 @@ int main(void) {
|
||||
}
|
||||
|
||||
MG_INFO(("Initialising application..."));
|
||||
web_init(&mgr);
|
||||
mg_http_listen(&mgr, "http://0.0.0.0", fn, NULL);
|
||||
//web_init(&mgr);
|
||||
|
||||
MG_INFO(("Starting event loop"));
|
||||
for (;;) {
|
||||
@@ -74,4 +80,4 @@ int main(void) {
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user