ESP8266_RTOS example tweaks

PUBLISHED_FROM=11096f272afc0716e0677c68d58ebf4d4e001a47
This commit is contained in:
Deomid Ryabkov authored and rojer committed 2016-03-21 22:45:54 +00:00
1 parent 4f9627c612
commit f1cc8379e7
6 files changed
+27 -40

No files matched your search

+1 -1
View File
@@ -55,7 +55,7 @@ LINKFLAGS_eagle.app.v6 = \
-u call_user_start \
-Wl,-static \
-Wl,--start-group \
-lc \
-lcirom \
-lgcc \
-lhal \
-lphy \
+3 -13
View File
@@ -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"
-1
View File
@@ -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 \
+14 -4
View File
@@ -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;
}
+9 -1
View File
@@ -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) {