mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-23 11:44:53 +00:00
ESP8266_RTOS example tweaks
PUBLISHED_FROM=11096f272afc0716e0677c68d58ebf4d4e001a47
This commit is contained in:
1 parent
4f9627c612
commit
f1cc8379e7
6 files changed
+27
-40
No files matched your search
@@ -55,7 +55,7 @@ LINKFLAGS_eagle.app.v6 = \
|
||||
-u call_user_start \
|
||||
-Wl,-static \
|
||||
-Wl,--start-group \
|
||||
-lc \
|
||||
-lcirom \
|
||||
-lgcc \
|
||||
-lhal \
|
||||
-lphy \
|
||||
|
||||
@@ -17,20 +17,10 @@ $ make clean; make BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=6
|
||||
Flash (using [esptool](https://github.com/themadinventor/esptool)):
|
||||
|
||||
```
|
||||
$ esptool.py --port /dev/ttyUSB0 --baud 230400 \
|
||||
write_flash --flash_mode=dio --flash_size=32m \
|
||||
0x00000 ${SDK_PATH}/bin/boot_v1.4\(b1\).bin \
|
||||
0x01000 ${BIN_PATH}/upgrade/user1.4096.new.6.bin
|
||||
```
|
||||
|
||||
|
||||
The output can be made to fit in 512KB (4Mb), but stock linker scripts do not reserve enough space for code.
|
||||
Custom linker script is provided for that, so you can use it for smaller devices like so (example that will work with ESP-01):
|
||||
|
||||
```
|
||||
$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=qio SPI_SIZE_MAP=0 LD_FILE=ld/eagle.app.v6.512.compact.ld
|
||||
$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=qio SPI_SIZE_MAP=0
|
||||
$ esptool.py --port /dev/ttyUSB0 --baud 230400 \
|
||||
write_flash --flash_mode=qio --flash_size=4m \
|
||||
0x00000 ${BIN_PATH}/eagle.flash.bin \
|
||||
0x10000 ${BIN_PATH}/eagle.irom0text.bin
|
||||
0x20000 ${BIN_PATH}/eagle.irom0text.bin \
|
||||
0x7e000 ${SDK_PATH}/bin/esp_init_data_default.bin
|
||||
```
|
||||
@@ -1,20 +0,0 @@
|
||||
/* eagle.flash.bin @ 0x00000 */
|
||||
/* eagle.irom0text.bin @ 0x10000 */
|
||||
|
||||
/*
|
||||
* Flash map for 512KB flash.
|
||||
*
|
||||
* There is 0x8000 (32KB) available between 0x8000 and 0x10000.
|
||||
*
|
||||
* Note: IROM images starts at 0x10000 (ignore Makefile output which says 0x40000.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40210000, len = 0x6C000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
@@ -26,7 +26,6 @@ endif
|
||||
DEFINES += -DCS_PLATFORM=3 \
|
||||
-DMG_NO_BSD_SOCKETS \
|
||||
-DMG_DISABLE_FILESYSTEM \
|
||||
-DMG_DISABLE_STDIO \
|
||||
-DMG_MAX_HTTP_HEADERS=20 -DMG_MAX_HTTP_REQUEST_SIZE=1024 \
|
||||
-DMG_MAX_PATH=40 -DMG_MAX_HTTP_SEND_MBUF=1024 \
|
||||
-DRTOS_SDK -DMG_LWIP -DLWIP_TIMEVAL_PRIVATE=0 \
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "esp_common.h"
|
||||
|
||||
/* Makes fprintf(stdout) and stderr work. */
|
||||
/*
|
||||
_ssize_t _write_r(struct _reent *r, int fd, void *buf, size_t len) {
|
||||
if (fd == 1 || fd == 2) {
|
||||
size_t i;
|
||||
@@ -27,7 +26,6 @@ _ssize_t _write_r(struct _reent *r, int fd, void *buf, size_t len) {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* You'll need to implement _open_r and friends if you want file operations. See
|
||||
@@ -47,9 +45,21 @@ void _exit(int status) {
|
||||
abort();
|
||||
}
|
||||
|
||||
/*
|
||||
* This will prevent counter wrap if time is read regularly.
|
||||
* At least Mongoose poll queries time, so we're covered.
|
||||
*/
|
||||
int _gettimeofday_r(struct _reent *r, struct timeval *tp, void *tzp) {
|
||||
static uint32_t prev_time = 0;
|
||||
static uint32_t num_overflows = 0;
|
||||
uint32_t time = system_get_time();
|
||||
tp->tv_sec = time / 1000000;
|
||||
tp->tv_usec = time % 1000000;
|
||||
uint64_t time64 = time;
|
||||
if (prev_time > 0 && time < prev_time) num_overflows++;
|
||||
time64 += (((uint64_t) num_overflows) * (1ULL << 32));
|
||||
tp->tv_sec = time64 / 1000000ULL;
|
||||
tp->tv_usec = time64 % 1000000ULL;
|
||||
prev_time = time;
|
||||
return 0;
|
||||
(void) r;
|
||||
(void) tzp;
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
#define AP_CHAN 9
|
||||
#define MG_LISTEN_ADDR "80"
|
||||
|
||||
#define MG_TASK_STACK_SIZE 2048
|
||||
#define MG_TASK_STACK_SIZE 4096
|
||||
#define MG_TASK_PRIORITY 1
|
||||
|
||||
void uart_div_modify(int uart_no, unsigned int freq);
|
||||
@@ -55,6 +55,8 @@ void ev_handler(struct mg_connection *nc, int ev, void *p) {
|
||||
}
|
||||
|
||||
void setup_ap() {
|
||||
int off = 0;
|
||||
struct ip_info info;
|
||||
struct softap_config cfg;
|
||||
|
||||
wifi_set_opmode_current(SOFTAP_MODE);
|
||||
@@ -71,6 +73,12 @@ void setup_ap() {
|
||||
|
||||
LOG(LL_INFO, ("Setting up AP '%s' on channel %d", cfg.ssid, cfg.channel));
|
||||
wifi_softap_set_config_current(&cfg);
|
||||
wifi_softap_dhcps_stop();
|
||||
wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &off);
|
||||
wifi_softap_dhcps_start();
|
||||
wifi_get_ip_info(SOFTAP_IF, &info);
|
||||
LOG(LL_INFO, ("WiFi AP: SSID %s, channel %d, IP " IPSTR "", cfg.ssid,
|
||||
cfg.channel, IP2STR(&info.ip)));
|
||||
}
|
||||
|
||||
static void mg_task(void *arg) {
|
||||
|
||||
Reference in new issue
Block a user