Preprocess all binary SDK symbols to add an sdk_ prefix
* This fixes the problem of axTLS symbols hmac_md5/hmac_sha1 having same name as symbols in libwpa (which have incompatible signatures) * Also allows for easier identification and piece-by-piece removal of binary functions. * Some libc symbols are not renamed, list is in lib/symbols_norename.txt
This commit is contained in:
parent
05019cb0ee
commit
e743d03a78
19 changed files with 220 additions and 103 deletions
|
@ -99,7 +99,7 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
|
||||||
SET_STKREG( XT_STK_A0, 0 ); /* to terminate GDB backtrace */
|
SET_STKREG( XT_STK_A0, 0 ); /* to terminate GDB backtrace */
|
||||||
SET_STKREG( XT_STK_A1, (uint32_t)sp + XT_STK_FRMSZ ); /* physical top of stack frame */
|
SET_STKREG( XT_STK_A1, (uint32_t)sp + XT_STK_FRMSZ ); /* physical top of stack frame */
|
||||||
SET_STKREG( XT_STK_A2, pvParameters ); /* parameters */
|
SET_STKREG( XT_STK_A2, pvParameters ); /* parameters */
|
||||||
SET_STKREG( XT_STK_EXIT, _xt_user_exit ); /* user exception exit dispatcher */
|
SET_STKREG( XT_STK_EXIT, sdk__xt_user_exit ); /* user exception exit dispatcher */
|
||||||
|
|
||||||
/* Set initial PS to int level 0, EXCM disabled ('rfe' will enable), user mode. */
|
/* Set initial PS to int level 0, EXCM disabled ('rfe' will enable), user mode. */
|
||||||
SET_STKREG( XT_STK_PS, PS_UM | PS_EXCM );
|
SET_STKREG( XT_STK_PS, PS_UM | PS_EXCM );
|
||||||
|
@ -139,19 +139,19 @@ void PendSV(enum SVC_ReqType req)
|
||||||
* after a Blob SV requests a soft interrupt by calling
|
* after a Blob SV requests a soft interrupt by calling
|
||||||
* PendSV(SVC_MACLayer).
|
* PendSV(SVC_MACLayer).
|
||||||
*/
|
*/
|
||||||
extern portBASE_TYPE MacIsrSigPostDefHdl(void);
|
extern portBASE_TYPE sdk_MacIsrSigPostDefHdl(void);
|
||||||
|
|
||||||
void SV_ISR(void)
|
void SV_ISR(void)
|
||||||
{
|
{
|
||||||
portBASE_TYPE xHigherPriorityTaskWoken=pdFALSE ;
|
portBASE_TYPE xHigherPriorityTaskWoken=pdFALSE ;
|
||||||
if(pending_maclayer_sv)
|
if(pending_maclayer_sv)
|
||||||
{
|
{
|
||||||
xHigherPriorityTaskWoken = MacIsrSigPostDefHdl();
|
xHigherPriorityTaskWoken = sdk_MacIsrSigPostDefHdl();
|
||||||
pending_maclayer_sv = 0;
|
pending_maclayer_sv = 0;
|
||||||
}
|
}
|
||||||
if( xHigherPriorityTaskWoken || pending_soft_sv)
|
if( xHigherPriorityTaskWoken || pending_soft_sv)
|
||||||
{
|
{
|
||||||
_xt_timer_int1();
|
sdk__xt_timer_int1();
|
||||||
pending_soft_sv = 0;
|
pending_soft_sv = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,14 +175,14 @@ void xPortSysTickHandle (void)
|
||||||
portBASE_TYPE xPortStartScheduler( void )
|
portBASE_TYPE xPortStartScheduler( void )
|
||||||
{
|
{
|
||||||
_xt_isr_attach(ETS_SOFT_INUM, SV_ISR);
|
_xt_isr_attach(ETS_SOFT_INUM, SV_ISR);
|
||||||
_xt_isr_unmask(1<<ETS_SOFT_INUM);
|
sdk__xt_isr_unmask(1<<ETS_SOFT_INUM);
|
||||||
|
|
||||||
/* Initialize system tick timer interrupt and schedule the first tick. */
|
/* Initialize system tick timer interrupt and schedule the first tick. */
|
||||||
_xt_tick_timer_init();
|
sdk__xt_tick_timer_init();
|
||||||
|
|
||||||
vTaskSwitchContext();
|
vTaskSwitchContext();
|
||||||
|
|
||||||
_xt_int_exit();
|
sdk__xt_int_exit();
|
||||||
|
|
||||||
/* Should not get here as the tasks are now running! */
|
/* Should not get here as the tasks are now running! */
|
||||||
return pdTRUE;
|
return pdTRUE;
|
||||||
|
@ -254,7 +254,7 @@ uint16_t _xt_isr_handler(uint16_t i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_xt_clear_ints(1<<index);
|
sdk__xt_clear_ints(1<<index);
|
||||||
|
|
||||||
isr[index]();
|
isr[index]();
|
||||||
|
|
||||||
|
|
|
@ -183,18 +183,21 @@ not necessary for to use this port. They are defined so the common demo files
|
||||||
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
|
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ESPTODO: These parts of the FreeRTOS support are still in binary libraries */
|
||||||
|
#define vApplicationStackOverflowHook sdk_vApplicationStackOverflowHook
|
||||||
|
|
||||||
/* XTensa interrupt management functions, used in port.c.
|
/* XTensa interrupt management functions, used in port.c.
|
||||||
Implementations in blob libs */
|
Some (w/ sdk_ prefix) are implemented in blob libs */
|
||||||
void _xt_int_exit (void);
|
void sdk__xt_int_exit (void);
|
||||||
void _xt_user_exit (void);
|
void sdk__xt_user_exit (void);
|
||||||
void _xt_tick_timer_init (void);
|
void sdk__xt_tick_timer_init (void);
|
||||||
void _xt_isr_unmask (uint32_t unmask);
|
void sdk__xt_isr_unmask (uint32_t unmask);
|
||||||
void _xt_isr_mask (uint32_t mask);
|
void sdk__xt_isr_mask (uint32_t mask);
|
||||||
uint32_t _xt_read_ints (void);
|
uint32_t sdk__xt_read_ints (void);
|
||||||
void _xt_clear_ints(uint32_t mask);
|
void sdk__xt_clear_ints(uint32_t mask);
|
||||||
typedef void (* _xt_isr)(void);
|
typedef void (* _xt_isr)(void);
|
||||||
void _xt_isr_attach (uint8_t i, _xt_isr func);
|
void _xt_isr_attach (uint8_t i, _xt_isr func);
|
||||||
void _xt_timer_int1(void);
|
void sdk__xt_timer_int1(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
55
common.mk
55
common.mk
|
@ -55,11 +55,16 @@ OBJCOPY = $(CROSS)objcopy
|
||||||
# of the root, with a 'component.mk' file.
|
# of the root, with a 'component.mk' file.
|
||||||
COMPONENTS ?= FreeRTOS lwip
|
COMPONENTS ?= FreeRTOS lwip
|
||||||
|
|
||||||
# libraries to link, mainly blobs provided by the esp-iot-rtos SDK
|
# binary esp-iot-rtos SDK libraries to link. These are pre-processed prior to linking.
|
||||||
LIBS ?= gcc main net80211 phy pp ssl wpa hal
|
SDK_LIBS ?= main net80211 phy pp wpa
|
||||||
|
|
||||||
|
# open source libraries linked in
|
||||||
|
LIBS ?= gcc hal
|
||||||
|
|
||||||
|
ENTRY_SYMBOL ?= sdk_call_user_start
|
||||||
|
|
||||||
CFLAGS = -Wall -Werror -Wl,-EL -nostdlib -mlongcalls -mtext-section-literals -std=gnu99
|
CFLAGS = -Wall -Werror -Wl,-EL -nostdlib -mlongcalls -mtext-section-literals -std=gnu99
|
||||||
LDFLAGS = -nostdlib -Wl,--no-check-sections -Wl,-L$(ROOT)lib -u call_user_start -Wl,-static -Wl,-Map=build/${TARGET}.map
|
LDFLAGS = -nostdlib -Wl,--no-check-sections -Wl,-L$(BUILD_DIR)sdklib -Wl,-L$(ROOT)lib -u $(ENTRY_SYMBOL) -Wl,-static -Wl,-Map=build/${TARGET}.map
|
||||||
|
|
||||||
ifeq ($(FLAVOR),debug)
|
ifeq ($(FLAVOR),debug)
|
||||||
CFLAGS += -g -O0
|
CFLAGS += -g -O0
|
||||||
|
@ -86,6 +91,7 @@ TARGET_DIR := $(dir $(firstword $(MAKEFILE_LIST)))
|
||||||
ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
|
ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||||
|
|
||||||
# derive various parts of compiler/linker arguments
|
# derive various parts of compiler/linker arguments
|
||||||
|
SDK_LIB_ARGS = $(addprefix -l,$(SDK_LIBS))
|
||||||
LIB_ARGS = $(addprefix -l,$(LIBS))
|
LIB_ARGS = $(addprefix -l,$(LIBS))
|
||||||
TARGET_OUT = $(BUILD_DIR)$(TARGET).out
|
TARGET_OUT = $(BUILD_DIR)$(TARGET).out
|
||||||
LDFLAGS += $(addprefix -T$(ROOT),$(LINKER_SCRIPTS))
|
LDFLAGS += $(addprefix -T$(ROOT),$(LINKER_SCRIPTS))
|
||||||
|
@ -158,6 +164,37 @@ COMPONENT_ARS += $$($(1)_AR)
|
||||||
-include $$($(1)_OBJ_FILES:.o=.d)
|
-include $$($(1)_OBJ_FILES:.o=.d)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
## Linking rules for SDK libraries
|
||||||
|
## SDK libraries are preprocessed to:
|
||||||
|
# - prefix all defined symbols with 'sdk_'
|
||||||
|
# - weaken all global symbols so they can be overriden from the open SDK side
|
||||||
|
|
||||||
|
# SDK binary libraries are preprocessed into build/lib
|
||||||
|
SDK_PROCESSED_LIBS = $(addsuffix .a,$(addprefix $(BUILD_DIR)sdklib/lib,$(SDK_LIBS)))
|
||||||
|
|
||||||
|
# Make rule for preprocessing each SDK library
|
||||||
|
#
|
||||||
|
$(BUILD_DIR)sdklib/%.a: $(ROOT)lib/%.a $(BUILD_DIR)sdklib/allsymbols.rename
|
||||||
|
$(vecho) "Pre-processing SDK library $< -> $@"
|
||||||
|
$(Q) $(OBJCOPY) --redefine-syms $(word 2,$^) --weaken $< $@
|
||||||
|
|
||||||
|
|
||||||
|
# Generate a regex to match symbols we don't want to rename, by parsing
|
||||||
|
# a list of symbol names
|
||||||
|
$(BUILD_DIR)sdklib/norename.match: $(ROOT)lib/symbols_norename.txt | $(BUILD_DIR)sdklib
|
||||||
|
grep -v "^#" $< | sed ':begin;$!N;s/\n/\\|/;tbegin' > $@
|
||||||
|
|
||||||
|
# Generate list of symbols to rename from a single library. Uses grep & sed.
|
||||||
|
$(BUILD_DIR)sdklib/%.rename: $(ROOT)lib/%.a $(BUILD_DIR)sdklib/norename.match
|
||||||
|
$(vecho) "Building symbol list for $< -> $@"
|
||||||
|
$(Q) $(NM) --defined $< | grep ' T ' | sed -r 's/(.+) T (.+)/\2 sdk_\2/' | grep -v `cat $(BUILD_DIR)sdklib/norename.match` > $@
|
||||||
|
|
||||||
|
# Build master list of all SDK-defined symbols to rename
|
||||||
|
$(BUILD_DIR)sdklib/allsymbols.rename: $(patsubst %.a,%.rename,$(SDK_PROCESSED_LIBS))
|
||||||
|
cat $^ > $@
|
||||||
|
|
||||||
|
|
||||||
## Include components (this is where the actual compiler sections are generated)
|
## Include components (this is where the actual compiler sections are generated)
|
||||||
$(foreach component,$(COMPONENTS), $(eval include $(ROOT)/$(component)/component.mk))
|
$(foreach component,$(COMPONENTS), $(eval include $(ROOT)/$(component)/component.mk))
|
||||||
|
|
||||||
|
@ -167,16 +204,16 @@ target_ROOT=$(TARGET_DIR)
|
||||||
$(eval $(call component_compile_rules,target))
|
$(eval $(call component_compile_rules,target))
|
||||||
|
|
||||||
# final linking step to produce .elf
|
# final linking step to produce .elf
|
||||||
$(TARGET_OUT): $(COMPONENT_ARS)
|
$(TARGET_OUT): $(COMPONENT_ARS) $(SDK_PROCESSED_LIBS)
|
||||||
$(vecho) "LD $@"
|
$(vecho) "LD $@"
|
||||||
$(Q) $(LD) $(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $(LIB_ARGS) $(COMPONENT_ARS) -Wl,--end-group -o $@
|
$(Q) $(LD) $(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $(SDK_LIB_ARGS) $(LIB_ARGS) $(COMPONENT_ARS) -Wl,--end-group -o $@
|
||||||
|
|
||||||
$(BUILD_DIR) $(FW_BASE):
|
$(BUILD_DIR) $(FW_BASE) $(BUILD_DIR)sdklib:
|
||||||
$(Q) mkdir -p $@
|
$(Q) mkdir -p $@
|
||||||
|
|
||||||
$(FW_FILE_1) $(FW_FILE_2): $(TARGET_OUT) $(FW_BASE)
|
$(FW_FILE_1) $(FW_FILE_2): $(TARGET_OUT) $(FW_BASE)
|
||||||
$(vecho) "FW $@"
|
$(vecho) "FW $@"
|
||||||
$(ESPTOOL) elf2image $< -o $(FW_BASE)
|
$(ESPTOOL) elf2image --entry-symbol $(ENTRY_SYMBOL) $< -o $(FW_BASE)
|
||||||
|
|
||||||
flash: $(FW_FILE_1) $(FW_FILE_2)
|
flash: $(FW_FILE_1) $(FW_FILE_2)
|
||||||
$(ESPTOOL) -p $(ESPPORT) --baud $(ESPBAUD) write_flash $(FW_1) $(FW_FILE_1) $(FW_2) $(FW_FILE_2)
|
$(ESPTOOL) -p $(ESPPORT) --baud $(ESPBAUD) write_flash $(FW_1) $(FW_FILE_1) $(FW_2) $(FW_FILE_2)
|
||||||
|
@ -196,3 +233,7 @@ rebuild:
|
||||||
clean:
|
clean:
|
||||||
$(Q) rm -rf $(BUILD_DIR)
|
$(Q) rm -rf $(BUILD_DIR)
|
||||||
$(Q) rm -rf $(FW_BASE)
|
$(Q) rm -rf $(FW_BASE)
|
||||||
|
|
||||||
|
# prevent "intermediate" files from being deleted
|
||||||
|
.SECONDARY:
|
||||||
|
|
||||||
|
|
|
@ -109,17 +109,17 @@ void http_get_task(void *pvParameters)
|
||||||
|
|
||||||
void user_init(void)
|
void user_init(void)
|
||||||
{
|
{
|
||||||
uart_div_modify(0, UART_CLK_FREQ / 115200);
|
sdk_uart_div_modify(0, UART_CLK_FREQ / 115200);
|
||||||
printf("SDK version:%s\n", system_get_sdk_version());
|
printf("SDK version:%s\n", sdk_system_get_sdk_version());
|
||||||
|
|
||||||
struct station_config config = {
|
struct sdk_station_config config = {
|
||||||
.ssid = WIFI_SSID,
|
.ssid = WIFI_SSID,
|
||||||
.password = WIFI_PASS,
|
.password = WIFI_PASS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* required to call wifi_set_opmode before station_set_config */
|
/* required to call wifi_set_opmode before station_set_config */
|
||||||
wifi_set_opmode(STATION_MODE);
|
sdk_wifi_set_opmode(STATION_MODE);
|
||||||
wifi_station_set_config(&config);
|
sdk_wifi_station_set_config(&config);
|
||||||
|
|
||||||
xTaskCreate(&http_get_task, (signed char *)"get_task", 256, NULL, 2, NULL);
|
xTaskCreate(&http_get_task, (signed char *)"get_task", 256, NULL, 2, NULL);
|
||||||
}
|
}
|
||||||
|
|
33
include/esp8266.h
Normal file
33
include/esp8266.h
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/* esp8266.h
|
||||||
|
*
|
||||||
|
* ESP-specific SoC-level addresses, macros, etc.
|
||||||
|
* Part of esp-open-rtos
|
||||||
|
*
|
||||||
|
* Copyright (C) 2105 Superhouse Automation Pty Ltd
|
||||||
|
* BSD Licensed as described in the file LICENSE
|
||||||
|
*/
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifndef _ESP8266_H
|
||||||
|
#define _ESP8266_H
|
||||||
|
|
||||||
|
/* Use this macro to store constant values in IROM flash instead
|
||||||
|
of having them loaded into rodata (which resides in DRAM)
|
||||||
|
|
||||||
|
Unlike the ESP8266 SDK you don't need an attribute like this for
|
||||||
|
standard functions. They're stored in flash by default. But
|
||||||
|
variables need them.
|
||||||
|
|
||||||
|
Important to note: IROM flash can only be accessed via 32-bit word
|
||||||
|
aligned reads. It's up to the user of this attribute to ensure this.
|
||||||
|
*/
|
||||||
|
#define IROM __attribute__((section(".irom0"))) const
|
||||||
|
|
||||||
|
|
||||||
|
/* Register addresses
|
||||||
|
|
||||||
|
ESPTODO: break this out to its own header file and clean it up, add other regs, etc.
|
||||||
|
*/
|
||||||
|
static volatile __attribute__((unused)) uint32_t *ESP_REG_WDT = (uint32_t *)0x60000900;
|
||||||
|
|
||||||
|
#endif
|
|
@ -18,9 +18,9 @@
|
||||||
|
|
||||||
#define IPSTR "%d.%d.%d.%d"
|
#define IPSTR "%d.%d.%d.%d"
|
||||||
|
|
||||||
void os_delay_us(uint16_t us);
|
void sdk_os_delay_us(uint16_t us);
|
||||||
|
|
||||||
void os_install_putc1(void (*p)(char c));
|
void sdk_os_install_putc1(void (*p)(char c));
|
||||||
void os_putc(char c);
|
void sdk_os_putc(char c);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#ifndef __ESP_SOFTAP_H__
|
#ifndef __ESP_SOFTAP_H__
|
||||||
#define __ESP_SOFTAP_H__
|
#define __ESP_SOFTAP_H__
|
||||||
|
|
||||||
struct softap_config {
|
struct sdk_softap_config {
|
||||||
uint8_t ssid[32];
|
uint8_t ssid[32];
|
||||||
uint8_t password[64];
|
uint8_t password[64];
|
||||||
uint8_t ssid_len;
|
uint8_t ssid_len;
|
||||||
|
@ -17,7 +17,7 @@ struct softap_config {
|
||||||
uint16_t beacon_interval;
|
uint16_t beacon_interval;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wifi_softap_get_config(struct softap_config *config);
|
bool sdk_wifi_softap_get_config(struct sdk_softap_config *config);
|
||||||
bool wifi_softap_set_config(struct softap_config *config);
|
bool sdk_wifi_softap_set_config(struct sdk_softap_config *config);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2013 -2014 Espressif System
|
* Copyright (C) 2013 -2014 Espressif System
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* Adapted from BSD licensed esp_iot_rtos_sdk v0.9.9
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __ESP_STA_H__
|
#ifndef __ESP_STA_H__
|
||||||
|
@ -8,27 +10,27 @@
|
||||||
|
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
|
||||||
struct station_config {
|
struct sdk_station_config {
|
||||||
uint8_t ssid[32];
|
uint8_t ssid[32];
|
||||||
uint8_t password[64];
|
uint8_t password[64];
|
||||||
uint8_t bssid_set;
|
uint8_t bssid_set;
|
||||||
uint8_t bssid[6];
|
uint8_t bssid[6];
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wifi_station_get_config(struct station_config *config);
|
bool sdk_wifi_station_get_config(struct sdk_station_config *config);
|
||||||
bool wifi_station_set_config(struct station_config *config);
|
bool sdk_wifi_station_set_config(struct sdk_station_config *config);
|
||||||
|
|
||||||
bool wifi_station_connect(void);
|
bool sdk_wifi_station_connect(void);
|
||||||
bool wifi_station_disconnect(void);
|
bool sdk_wifi_station_disconnect(void);
|
||||||
|
|
||||||
struct scan_config {
|
struct sdk_scan_config {
|
||||||
uint8_t *ssid;
|
uint8_t *ssid;
|
||||||
uint8_t *bssid;
|
uint8_t *bssid;
|
||||||
uint8_t channel;
|
uint8_t channel;
|
||||||
uint8_t show_hidden;
|
uint8_t show_hidden;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bss_info {
|
struct sdk_bss_info {
|
||||||
STAILQ_ENTRY(bss_info) next;
|
STAILQ_ENTRY(bss_info) next;
|
||||||
|
|
||||||
uint8_t bssid[6];
|
uint8_t bssid[6];
|
||||||
|
@ -46,14 +48,14 @@ typedef enum {
|
||||||
SCAN_PENDING,
|
SCAN_PENDING,
|
||||||
SCAN_BUSY,
|
SCAN_BUSY,
|
||||||
SCAN_CANCEL,
|
SCAN_CANCEL,
|
||||||
} scan_status_t;
|
} sdk_scan_status_t;
|
||||||
|
|
||||||
typedef void (* scan_done_cb_t)(void *arg, scan_status_t status);
|
typedef void (* sdk_scan_done_cb_t)(void *arg, sdk_scan_status_t status);
|
||||||
|
|
||||||
bool wifi_station_scan(struct scan_config *config, scan_done_cb_t cb);
|
bool sdk_wifi_station_scan(struct sdk_scan_config *config, sdk_scan_done_cb_t cb);
|
||||||
|
|
||||||
uint8_t wifi_station_get_auto_connect(void);
|
uint8_t sdk_wifi_station_get_auto_connect(void);
|
||||||
bool wifi_station_set_auto_connect(uint8_t set);
|
bool sdk_wifi_station_set_auto_connect(uint8_t set);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
STATION_IDLE = 0,
|
STATION_IDLE = 0,
|
||||||
|
@ -64,6 +66,6 @@ enum {
|
||||||
STATION_GOT_IP
|
STATION_GOT_IP
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t wifi_station_get_connect_status(void);
|
uint8_t sdk_wifi_station_get_connect_status(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
#ifndef __ESP_SYSTEM_H__
|
#ifndef __ESP_SYSTEM_H__
|
||||||
#define __ESP_SYSTEM_H__
|
#define __ESP_SYSTEM_H__
|
||||||
|
|
||||||
enum rst_reason {
|
enum sdk_rst_reason {
|
||||||
DEFAULT_RST = 0,
|
DEFAULT_RST = 0,
|
||||||
WDT_RST = 1,
|
WDT_RST = 1,
|
||||||
EXCEPTION_RST = 2,
|
EXCEPTION_RST = 2,
|
||||||
SOFT_RST = 3
|
SOFT_RST = 3
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rst_info{
|
struct sdk_rst_info{
|
||||||
uint32_t reason;
|
uint32_t reason;
|
||||||
uint32_t exccause;
|
uint32_t exccause;
|
||||||
uint32_t epc1;
|
uint32_t epc1;
|
||||||
|
@ -24,26 +24,26 @@ struct rst_info{
|
||||||
uint32_t rtn_addr;
|
uint32_t rtn_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rst_info* system_get_rst_info(void);
|
struct rst_info* sdk_system_get_rst_info(void);
|
||||||
|
|
||||||
const char* system_get_sdk_version(void);
|
const char* sdk_system_get_sdk_version(void);
|
||||||
|
|
||||||
void system_restore(void);
|
void sdk_system_restore(void);
|
||||||
void system_restart(void);
|
void sdk_system_restart(void);
|
||||||
void system_deep_sleep(uint32_t time_in_us);
|
void sdk_system_deep_sleep(uint32_t time_in_us);
|
||||||
|
|
||||||
uint32_t system_get_time(void);
|
uint32_t sdk_system_get_time(void);
|
||||||
|
|
||||||
void system_print_meminfo(void);
|
void sdk_system_print_meminfo(void);
|
||||||
uint32_t system_get_free_heap_size(void);
|
uint32_t sdk_system_get_free_heap_size(void);
|
||||||
uint32_t system_get_chip_id(void);
|
uint32_t sdk_system_get_chip_id(void);
|
||||||
|
|
||||||
uint32_t system_rtc_clock_cali_proc(void);
|
uint32_t sdk_system_rtc_clock_cali_proc(void);
|
||||||
uint32_t system_get_rtc_time(void);
|
uint32_t sdk_system_get_rtc_time(void);
|
||||||
|
|
||||||
bool system_rtc_mem_read(uint8_t src, void *dst, uint16_t n);
|
bool sdk_system_rtc_mem_read(uint8_t src, void *dst, uint16_t n);
|
||||||
bool system_rtc_mem_write(uint8_t dst, const void *src, uint16_t n);
|
bool sdk_system_rtc_mem_write(uint8_t dst, const void *src, uint16_t n);
|
||||||
|
|
||||||
void system_uart_swap(void);
|
void sdk_system_uart_swap(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,16 +7,16 @@
|
||||||
#define __ESP_TIMER_H__
|
#define __ESP_TIMER_H__
|
||||||
|
|
||||||
/* timer related */
|
/* timer related */
|
||||||
typedef void os_timer_func_t(void *timer_arg);
|
typedef void sdk_os_timer_func_t(void *timer_arg);
|
||||||
|
|
||||||
typedef struct _os_timer_t {
|
typedef struct _os_timer_t {
|
||||||
struct _os_timer_t *timer_next;
|
struct _os_timer_t *timer_next;
|
||||||
void *freerots_handle;
|
void *freerots_handle;
|
||||||
uint32_t timer_expire;
|
uint32_t timer_expire;
|
||||||
uint32_t timer_period;
|
uint32_t timer_period;
|
||||||
os_timer_func_t *timer_func;
|
sdk_os_timer_func_t *timer_func;
|
||||||
bool timer_repeat_flag;
|
bool timer_repeat_flag;
|
||||||
void *timer_arg;
|
void *timer_arg;
|
||||||
} os_timer_t;
|
} sdk_os_timer_t;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2013 -2014 Espressif System
|
* Copyright (C) 2013 -2014 Espressif System
|
||||||
*
|
*
|
||||||
|
* Adapted from BSD licensed esp_iot_rtos_sdk v0.9.9
|
||||||
|
*
|
||||||
|
* Functions declared in this header are defined in libmain.a
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __ESP_WIFI_H__
|
#ifndef __ESP_WIFI_H__
|
||||||
|
@ -23,8 +26,8 @@ typedef enum _auth_mode {
|
||||||
AUTH_MAX
|
AUTH_MAX
|
||||||
} AUTH_MODE;
|
} AUTH_MODE;
|
||||||
|
|
||||||
uint8_t wifi_get_opmode(void);
|
uint8_t sdk_wifi_get_opmode(void);
|
||||||
bool wifi_set_opmode(uint8_t opmode);
|
bool sdk_wifi_set_opmode(uint8_t opmode);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
STATION_IF = 0,
|
STATION_IF = 0,
|
||||||
|
@ -38,29 +41,29 @@ struct ip_info {
|
||||||
struct ip_addr gw;
|
struct ip_addr gw;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wifi_get_ip_info(uint8_t if_index, struct ip_info *info);
|
bool sdk_wifi_get_ip_info(uint8_t if_index, struct ip_info *info);
|
||||||
bool wifi_set_ip_info(uint8_t if_index, struct ip_info *info);
|
bool sdk_wifi_set_ip_info(uint8_t if_index, struct ip_info *info);
|
||||||
bool wifi_get_macaddr(uint8_t if_index, uint8_t *macaddr);
|
bool sdk_wifi_get_macaddr(uint8_t if_index, uint8_t *macaddr);
|
||||||
bool wifi_set_macaddr(uint8_t if_index, uint8_t *macaddr);
|
bool sdk_wifi_set_macaddr(uint8_t if_index, uint8_t *macaddr);
|
||||||
|
|
||||||
uint8_t wifi_get_channel(void);
|
uint8_t sdk_wifi_get_channel(void);
|
||||||
bool wifi_set_channel(uint8_t channel);
|
bool sdk_wifi_set_channel(uint8_t channel);
|
||||||
|
|
||||||
void wifi_status_led_install(uint8_t gpio_id, uint32_t gpio_name, uint8_t gpio_func);
|
void sdk_wifi_status_led_install(uint8_t gpio_id, uint32_t gpio_name, uint8_t gpio_func);
|
||||||
|
|
||||||
void wifi_promiscuous_enable(uint8_t promiscuous);
|
void sdk_wifi_promiscuous_enable(uint8_t promiscuous);
|
||||||
|
|
||||||
typedef void (* wifi_promiscuous_cb_t)(uint8_t *buf, uint16_t len);
|
typedef void (* sdk_wifi_promiscuous_cb_t)(uint8_t *buf, uint16_t len);
|
||||||
|
|
||||||
void wifi_set_promiscuous_rx_cb(wifi_promiscuous_cb_t cb);
|
void sdk_wifi_set_promiscuous_rx_cb(sdk_wifi_promiscuous_cb_t cb);
|
||||||
|
|
||||||
enum phy_mode {
|
enum sdk_phy_mode {
|
||||||
PHY_MODE_11B = 1,
|
PHY_MODE_11B = 1,
|
||||||
PHY_MODE_11G = 2,
|
PHY_MODE_11G = 2,
|
||||||
PHY_MODE_11N = 3
|
PHY_MODE_11N = 3
|
||||||
};
|
};
|
||||||
|
|
||||||
enum phy_mode wifi_get_phy_mode(void);
|
enum phy_mode sdk_wifi_get_phy_mode(void);
|
||||||
bool wifi_set_phy_mode(enum phy_mode mode);
|
bool sdk_wifi_set_phy_mode(enum sdk_phy_mode mode);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
/* This source file contains function prototypes for functions defined
|
/* sdk_prototypes.h
|
||||||
|
|
||||||
|
This source file contains function prototypes for functions defined
|
||||||
in the remaining "binary blob" ESP IoT RTOS SDK libraries. Sorted
|
in the remaining "binary blob" ESP IoT RTOS SDK libraries. Sorted
|
||||||
by which library they appear in.
|
by which library they appear in.
|
||||||
|
|
||||||
|
Function names here have the 'sdk_' prefix that is put on all binary library functions
|
||||||
|
by the Open RTOS SDK.
|
||||||
*/
|
*/
|
||||||
#ifndef SDK_PROTOTYPES_H
|
#ifndef SDK_PROTOTYPES_H
|
||||||
#define SDK_PROTOTYPES_H
|
#define SDK_PROTOTYPES_H
|
||||||
|
@ -18,18 +23,28 @@ struct ip_addr;
|
||||||
uart_no = 0 or 1 for which UART
|
uart_no = 0 or 1 for which UART
|
||||||
new_divisor = Calculated in the form UART_CLK_FREQ / BAUD
|
new_divisor = Calculated in the form UART_CLK_FREQ / BAUD
|
||||||
*/
|
*/
|
||||||
void uart_div_modify(uint32_t uart_no, uint32_t new_divisor);
|
void sdk_uart_div_modify(uint32_t uart_no, uint32_t new_divisor);
|
||||||
|
|
||||||
|
/* Read a single character from the UART.
|
||||||
|
*/
|
||||||
|
char sdk_uart_rx_one_char(void);
|
||||||
|
|
||||||
|
/* Write a single character to the UART.
|
||||||
|
*/
|
||||||
|
void sdk_os_putc(char c);
|
||||||
|
|
||||||
/* Called when an IP gets set on the "station" (client) interface.
|
/* Called when an IP gets set on the "station" (client) interface.
|
||||||
*/
|
*/
|
||||||
void system_station_got_ip_set(struct ip_addr *ip_addr, struct ip_addr *sn_mask, struct ip_addr *gw_addr);
|
void sdk_system_station_got_ip_set(struct ip_addr *ip_addr, struct ip_addr *sn_mask, struct ip_addr *gw_addr);
|
||||||
|
|
||||||
/* This is a no-op wrapper around ppRecycleRxPkt, which is defined in libpp.a
|
/* This is a no-op wrapper around ppRecycleRxPkt, which is defined in libpp.a
|
||||||
|
|
||||||
It's called when a pbuf is freed, and allows pp to reuse the 'eb' pointer to ESP-specific
|
It's called when a pbuf is freed, and allows pp to reuse the 'eb' pointer to ESP-specific
|
||||||
pbuf data. (See esp-lwip pbuf.h)
|
pbuf data. (See esp-lwip pbuf.h)
|
||||||
*/
|
*/
|
||||||
void system_pp_recycle_rx_pkt(void *eb);
|
void sdk_system_pp_recycle_rx_pkt(void *eb);
|
||||||
|
|
||||||
|
const char* sdk_system_get_sdk_version(void);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -10,15 +10,15 @@ typedef enum {
|
||||||
SPI_FLASH_RESULT_OK,
|
SPI_FLASH_RESULT_OK,
|
||||||
SPI_FLASH_RESULT_ERR,
|
SPI_FLASH_RESULT_ERR,
|
||||||
SPI_FLASH_RESULT_TIMEOUT
|
SPI_FLASH_RESULT_TIMEOUT
|
||||||
} SpiFlashOpResult;
|
} sdk_SpiFlashOpResult;
|
||||||
|
|
||||||
#define SPI_FLASH_SEC_SIZE 4096
|
#define SPI_FLASH_SEC_SIZE 4096
|
||||||
|
|
||||||
uint32_t spi_flash_get_id(void);
|
uint32_t sdk_spi_flash_get_id(void);
|
||||||
SpiFlashOpResult spi_flash_read_status(uint32_t *status);
|
sdk_SpiFlashOpResult sdk_spi_flash_read_status(uint32_t *status);
|
||||||
SpiFlashOpResult spi_flash_write_status(uint32_t status_value);
|
sdk_SpiFlashOpResult sdk_spi_flash_write_status(uint32_t status_value);
|
||||||
SpiFlashOpResult spi_flash_erase_sector(uint16_t sec);
|
sdk_SpiFlashOpResult sdk_spi_flash_erase_sector(uint16_t sec);
|
||||||
SpiFlashOpResult spi_flash_write(uint32_t des_addr, uint32_t *src_addr, uint32_t size);
|
sdk_SpiFlashOpResult sdk_spi_flash_write(uint32_t des_addr, uint32_t *src_addr, uint32_t size);
|
||||||
SpiFlashOpResult spi_flash_read(uint32_t src_addr, uint32_t *des_addr, uint32_t size);
|
sdk_SpiFlashOpResult sdk_spi_flash_read(uint32_t src_addr, uint32_t *des_addr, uint32_t size);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
/* This linker script generated from xt-genldscripts.tpp for LSP . */
|
/* This linker script generated from xt-genldscripts.tpp for LSP .
|
||||||
|
|
||||||
|
Modified for esp open RTOS, this linker script is no longer the same as the esp_iot_rtos_sdk one.
|
||||||
|
*/
|
||||||
|
|
||||||
/* Linker Script for ld -N */
|
/* Linker Script for ld -N */
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
|
@ -19,12 +23,12 @@ PHDRS
|
||||||
|
|
||||||
|
|
||||||
/* Default entry point: */
|
/* Default entry point: */
|
||||||
ENTRY(call_user_start)
|
ENTRY(sdk_call_user_start)
|
||||||
EXTERN(_DebugExceptionVector)
|
EXTERN(sdk__DebugExceptionVector)
|
||||||
EXTERN(_DoubleExceptionVector)
|
EXTERN(sdk__DoubleExceptionVector)
|
||||||
EXTERN(_KernelExceptionVector)
|
EXTERN(sdk__KernelExceptionVector)
|
||||||
EXTERN(_NMIExceptionVector)
|
EXTERN(sdk__NMIExceptionVector)
|
||||||
EXTERN(_UserExceptionVector)
|
EXTERN(sdk__UserExceptionVector)
|
||||||
PROVIDE(_memmap_vecbase_reset = 0x40000000);
|
PROVIDE(_memmap_vecbase_reset = 0x40000000);
|
||||||
/* Various memory-map dependent cache attribute settings: */
|
/* Various memory-map dependent cache attribute settings: */
|
||||||
_memmap_cacheattr_wb_base = 0x00000110;
|
_memmap_cacheattr_wb_base = 0x00000110;
|
||||||
|
|
BIN
lib/libhal.a
BIN
lib/libhal.a
Binary file not shown.
6
lib/symbols_norename.txt
Normal file
6
lib/symbols_norename.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# this is a stop-gap to avoid renaming some useful libc
|
||||||
|
# symbols to sdk_xxx
|
||||||
|
puts
|
||||||
|
printf
|
||||||
|
putchar
|
||||||
|
atoi
|
|
@ -47,7 +47,7 @@
|
||||||
#include "netif/etharp.h"
|
#include "netif/etharp.h"
|
||||||
|
|
||||||
/* declared in libnet80211.a */
|
/* declared in libnet80211.a */
|
||||||
int8_t ieee80211_output_pbuf(struct netif *ifp, struct pbuf* pb);
|
int8_t sdk_ieee80211_output_pbuf(struct netif *ifp, struct pbuf* pb);
|
||||||
|
|
||||||
static err_t
|
static err_t
|
||||||
low_level_output(struct netif *netif, struct pbuf *p)
|
low_level_output(struct netif *netif, struct pbuf *p)
|
||||||
|
@ -55,7 +55,7 @@ low_level_output(struct netif *netif, struct pbuf *p)
|
||||||
struct pbuf *q;
|
struct pbuf *q;
|
||||||
|
|
||||||
for(q = p; q != NULL; q = q->next) {
|
for(q = p; q != NULL; q = q->next) {
|
||||||
ieee80211_output_pbuf(netif, q);
|
sdk_ieee80211_output_pbuf(netif, q);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_STATS_INC(link.xmit);
|
LINK_STATS_INC(link.xmit);
|
||||||
|
|
|
@ -35,6 +35,14 @@
|
||||||
/* include ESP SDK prototypes as they're used in some LWIP routines */
|
/* include ESP SDK prototypes as they're used in some LWIP routines */
|
||||||
#include "espressif/sdk_prototypes.h"
|
#include "espressif/sdk_prototypes.h"
|
||||||
|
|
||||||
|
/* ESP8266 SDK Interface
|
||||||
|
|
||||||
|
The lwip-esp stack is designed to be also compatible with other ESP8266 SDKs,
|
||||||
|
so we can't use our 'sdk_' prefixes there
|
||||||
|
*/
|
||||||
|
#define system_station_got_ip_set sdk_system_station_got_ip_set
|
||||||
|
#define system_pp_recycle_rx_pkt sdk_system_pp_recycle_rx_pkt
|
||||||
|
|
||||||
/* Include some files for defining library routines */
|
/* Include some files for defining library routines */
|
||||||
#include <stdio.h> /* printf, fflush, FILE */
|
#include <stdio.h> /* printf, fflush, FILE */
|
||||||
#include <stdlib.h> /* abort */
|
#include <stdlib.h> /* abort */
|
||||||
|
|
|
@ -37,6 +37,8 @@
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#include "semphr.h"
|
#include "semphr.h"
|
||||||
|
|
||||||
|
/* MBOX primitives */
|
||||||
|
|
||||||
#define SYS_MBOX_NULL ( ( xQueueHandle ) NULL )
|
#define SYS_MBOX_NULL ( ( xQueueHandle ) NULL )
|
||||||
#define SYS_SEM_NULL ( ( xSemaphoreHandle ) NULL )
|
#define SYS_SEM_NULL ( ( xSemaphoreHandle ) NULL )
|
||||||
#define SYS_DEFAULT_THREAD_STACK_DEPTH configMINIMAL_STACK_SIZE
|
#define SYS_DEFAULT_THREAD_STACK_DEPTH configMINIMAL_STACK_SIZE
|
||||||
|
|
Loading…
Reference in a new issue