diff --git a/examples/espressif/esp8266-native/README.rst b/examples/espressif/esp8266-native/README.rst deleted file mode 100644 index ab31e6cf..00000000 --- a/examples/espressif/esp8266-native/README.rst +++ /dev/null @@ -1,21 +0,0 @@ -How to build PlatformIO based project -===================================== - -1. `Install PlatformIO `_ -2. Download `source code with examples `_ -3. Extract ZIP archive -4. Run these commands: - -.. code-block:: bash - - # Change directory to example - > cd platformio-develop/examples/espressif/esp8266-native/ - - # Process example project - > platformio run - - # Upload firmware - > platformio run --target upload - - # Clean build files - > platformio run --target clean diff --git a/examples/espressif/esp8266-native/platformio.ini b/examples/espressif/esp8266-native/platformio.ini deleted file mode 100644 index 304bd86f..00000000 --- a/examples/espressif/esp8266-native/platformio.ini +++ /dev/null @@ -1,22 +0,0 @@ -# -# Project Configuration File -# -# A detailed documentation with the EXAMPLES is located here: -# http://docs.platformio.org/en/latest/projectconf.html -# - -# A sign `#` at the beginning of the line indicates a comment -# Comment lines are ignored. - -# Simple and base environment -# [env:mybaseenv] -# platform = %INSTALLED_PLATFORM_NAME_HERE% -# framework = -# board = -# -# Automatic targets - enable auto-uploading -# targets = upload - -[env:esp01_8266] -platform = espressif -board = esp01 diff --git a/examples/espressif/esp8266-native/src/at_upgrade.c b/examples/espressif/esp8266-native/src/at_upgrade.c deleted file mode 100644 index 59ecdea2..00000000 --- a/examples/espressif/esp8266-native/src/at_upgrade.c +++ /dev/null @@ -1,288 +0,0 @@ -/****************************************************************************** - * Copyright 2015-2018 Espressif Systems (Wuxi) - * - * FileName: user_main.c - * - * Description: entry file of user application - * - * Modification history: - * 2015/3/06, v1.0 create this file. -*******************************************************************************/ -#include "c_types.h" -#include "user_interface.h" -#include "espconn.h" -#include "mem.h" -#include "osapi.h" -#include "upgrade.h" - -#ifdef AT_CUSTOM_UPGRADE - -#define UPGRADE_FRAME "{\"path\": \"/v1/messages/\", \"method\": \"POST\", \"meta\": {\"Authorization\": \"token %s\"},\ -\"get\":{\"action\":\"%s\"},\"body\":{\"pre_rom_version\":\"%s\",\"rom_version\":\"%s\"}}\n" - -#define pheadbuffer "Connection: keep-alive\r\n\ -Cache-Control: no-cache\r\n\ -User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 \r\n\ -Accept: */*\r\n\ -Accept-Encoding: gzip,deflate\r\n\ -Accept-Language: zh-CN,eb-US;q=0.8\r\n\r\n" - -/**/ - - -struct espconn *pespconn = NULL; -struct upgrade_server_info *upServer = NULL; - -static os_timer_t at_delay_check; -static struct espconn *pTcpServer = NULL; -static ip_addr_t host_ip; -/****************************************************************************** - * FunctionName : user_esp_platform_upgrade_cb - * Description : Processing the downloaded data from the server - * Parameters : pespconn -- the espconn used to connetion with the host - * Returns : none -*******************************************************************************/ -LOCAL void ICACHE_FLASH_ATTR -at_upDate_rsp(void *arg) -{ - struct upgrade_server_info *server = arg; - - - if(server->upgrade_flag == true) - { - os_printf("device_upgrade_success\r\n"); - at_response_ok(); - system_upgrade_reboot(); - } - else - { - os_printf("device_upgrade_failed\r\n"); - at_response_error(); - } - - os_free(server->url); - server->url = NULL; - os_free(server); - server = NULL; -} -/** - * @brief Tcp client disconnect success callback function. - * @param arg: contain the ip link information - * @retval None - */ -static void ICACHE_FLASH_ATTR -at_upDate_discon_cb(void *arg) -{ - struct espconn *pespconn = (struct espconn *)arg; - uint8_t idTemp = 0; - - if(pespconn->proto.tcp != NULL) - { - os_free(pespconn->proto.tcp); - } - if(pespconn != NULL) - { - os_free(pespconn); - } - - os_printf("disconnect\r\n"); - - if(system_upgrade_start(upServer) == false) - { - at_response_error(); - } - else - { - at_port_print("+CIPUPDATE:4\r\n"); - } -} - -/** - * @brief Udp server receive data callback function. - * @param arg: contain the ip link information - * @retval None - */ -LOCAL void ICACHE_FLASH_ATTR -at_upDate_recv(void *arg, char *pusrdata, unsigned short len) -{ - struct espconn *pespconn = (struct espconn *)arg; - char temp[32] = {0}; - uint8_t user_bin[12] = {0}; - uint8_t i = 0; - - os_timer_disarm(&at_delay_check); - at_port_print("+CIPUPDATE:3\r\n"); - - upServer = (struct upgrade_server_info *)os_zalloc(sizeof(struct upgrade_server_info)); - - upServer->upgrade_version[5] = '\0'; - - upServer->pespconn = pespconn; - - os_memcpy(upServer->ip, pespconn->proto.tcp->remote_ip, 4); - - upServer->port = 80; - - upServer->check_cb = at_upDate_rsp; - upServer->check_times = 60000; - - if(upServer->url == NULL) - { - upServer->url = (uint8 *) os_zalloc(1024); - } - - if(system_upgrade_userbin_check() == UPGRADE_FW_BIN1) - { - os_memcpy(user_bin, "user2.bin", 10); - } - else if(system_upgrade_userbin_check() == UPGRADE_FW_BIN2) - { - os_memcpy(user_bin, "user1.bin", 10); - } - - os_sprintf(upServer->url, - "GET /%s HTTP/1.1\r\nHost: "IPSTR"\r\n"pheadbuffer"", - user_bin, IP2STR(upServer->ip)); -} - -LOCAL void ICACHE_FLASH_ATTR -at_upDate_wait(void *arg) -{ - struct espconn *pespconn = arg; - os_timer_disarm(&at_delay_check); - if(pespconn != NULL) - { - espconn_disconnect(pespconn); - } - else - { - at_response_error(); - } -} - -/****************************************************************************** - * FunctionName : user_esp_platform_sent_cb - * Description : Data has been sent successfully and acknowledged by the remote host. - * Parameters : arg -- Additional argument to pass to the callback function - * Returns : none -*******************************************************************************/ -LOCAL void ICACHE_FLASH_ATTR -at_upDate_sent_cb(void *arg) -{ - struct espconn *pespconn = arg; - os_timer_disarm(&at_delay_check); - os_timer_setfn(&at_delay_check, (os_timer_func_t *)at_upDate_wait, pespconn); - os_timer_arm(&at_delay_check, 5000, 0); - os_printf("at_upDate_sent_cb\r\n"); -} - -/** - * @brief Tcp client connect success callback function. - * @param arg: contain the ip link information - * @retval None - */ -static void ICACHE_FLASH_ATTR -at_upDate_connect_cb(void *arg) -{ - struct espconn *pespconn = (struct espconn *)arg; - uint8_t user_bin[9] = {0}; - char *temp = NULL; - - at_port_print("+CIPUPDATE:2\r\n"); - - - espconn_regist_disconcb(pespconn, at_upDate_discon_cb); - espconn_regist_recvcb(pespconn, at_upDate_recv);//////// - espconn_regist_sentcb(pespconn, at_upDate_sent_cb); - - temp = (uint8 *) os_zalloc(512); - - os_sprintf(temp,"GET /v1/device/rom/?is_format_simple=true HTTP/1.0\r\nHost: "IPSTR"\r\n"pheadbuffer"", - IP2STR(pespconn->proto.tcp->remote_ip)); - - espconn_sent(pespconn, temp, os_strlen(temp)); - os_free(temp); -} - -/** - * @brief Tcp client connect repeat callback function. - * @param arg: contain the ip link information - * @retval None - */ -static void ICACHE_FLASH_ATTR -at_upDate_recon_cb(void *arg, sint8 errType) -{ - struct espconn *pespconn = (struct espconn *)arg; - - at_response_error(); - if(pespconn->proto.tcp != NULL) - { - os_free(pespconn->proto.tcp); - } - os_free(pespconn); - os_printf("disconnect\r\n"); - - if(upServer != NULL) - { - os_free(upServer); - upServer = NULL; - } - at_response_error(); - -} - -/****************************************************************************** - * FunctionName : upServer_dns_found - * Description : dns found callback - * Parameters : name -- pointer to the name that was looked up. - * ipaddr -- pointer to an ip_addr_t containing the IP address of - * the hostname, or NULL if the name could not be found (or on any - * other error). - * callback_arg -- a user-specified callback argument passed to - * dns_gethostbyname - * Returns : none -*******************************************************************************/ -LOCAL void ICACHE_FLASH_ATTR -upServer_dns_found(const char *name, ip_addr_t *ipaddr, void *arg) -{ - struct espconn *pespconn = (struct espconn *) arg; -// char temp[32]; - - if(ipaddr == NULL) - { - at_response_error(); - return; - } - at_port_print("+CIPUPDATE:1\r\n"); - - - if(host_ip.addr == 0 && ipaddr->addr != 0) - { - if(pespconn->type == ESPCONN_TCP) - { - os_memcpy(pespconn->proto.tcp->remote_ip, &ipaddr->addr, 4); - espconn_regist_connectcb(pespconn, at_upDate_connect_cb); - espconn_regist_reconcb(pespconn, at_upDate_recon_cb); - espconn_connect(pespconn); - } - } -} - -void ICACHE_FLASH_ATTR -at_exeCmdCiupdate(uint8_t id) -{ - pespconn = (struct espconn *)os_zalloc(sizeof(struct espconn)); - pespconn->type = ESPCONN_TCP; - pespconn->state = ESPCONN_NONE; - pespconn->proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp)); - pespconn->proto.tcp->local_port = espconn_port(); - pespconn->proto.tcp->remote_port = 80; - - host_ip.addr = ipaddr_addr("192.168.10.9"); - at_port_print("+CIPUPDATE:1\r\n"); - os_memcpy(pespconn->proto.tcp->remote_ip, &host_ip.addr, 4); - espconn_regist_connectcb(pespconn, at_upDate_connect_cb); - espconn_regist_reconcb(pespconn, at_upDate_recon_cb); - espconn_connect(pespconn); -} -#endif diff --git a/examples/espressif/esp8266-native/src/user_config.h b/examples/espressif/esp8266-native/src/user_config.h deleted file mode 100644 index 4a573ebe..00000000 --- a/examples/espressif/esp8266-native/src/user_config.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __USER_CONFIG_H__ -#define __USER_CONFIG_H__ - -#define AT_CUSTOM_UPGRADE - -#endif diff --git a/examples/espressif/esp8266-native/src/user_main.c b/examples/espressif/esp8266-native/src/user_main.c deleted file mode 100644 index 953bf00e..00000000 --- a/examples/espressif/esp8266-native/src/user_main.c +++ /dev/null @@ -1,113 +0,0 @@ -/****************************************************************************** - * Copyright 2013-2014 Espressif Systems (Wuxi) - * - * FileName: user_main.c - * - * Description: entry file of user application - * - * Modification history: - * 2015/1/23, v1.0 create this file. -*******************************************************************************/ - -#include "osapi.h" -#include "at_custom.h" -#include "user_interface.h" - -// test :AT+TEST=1,"abc"<,3> -void ICACHE_FLASH_ATTR -at_setupCmdTest(uint8_t id, char *pPara) -{ - int result = 0, err = 0, flag = 0; - uint8 buffer[32] = {0}; - pPara++; // skip '=' - - //get the first parameter - // digit - flag = at_get_next_int_dec(&pPara, &result, &err); - - // flag must be ture because there are more parameter - if (flag == FALSE) { - at_response_error(); - return; - } - - if (*pPara++ != ',') { // skip ',' - at_response_error(); - return; - } - - os_sprintf(buffer, "the first parameter:%d\r\n", result); - at_port_print(buffer); - - //get the second parameter - // string - at_data_str_copy(buffer, &pPara, 10); - at_port_print("the second parameter:"); - at_port_print(buffer); - at_port_print("\r\n"); - - if (*pPara == ',') { - pPara++; // skip ',' - result = 0; - //there is the third parameter - // digit - flag = at_get_next_int_dec(&pPara, &result, &err); - // we donot care of flag - os_sprintf(buffer, "the third parameter:%d\r\n", result); - at_port_print(buffer); - } - - if (*pPara != '\r') { - at_response_error(); - return; - } - - at_response_ok(); -} - -void ICACHE_FLASH_ATTR -at_testCmdTest(uint8_t id) -{ - uint8 buffer[32] = {0}; - - os_sprintf(buffer, "%s\r\n", "at_testCmdTest"); - at_port_print(buffer); - at_response_ok(); -} - -void ICACHE_FLASH_ATTR -at_queryCmdTest(uint8_t id) -{ - uint8 buffer[32] = {0}; - - os_sprintf(buffer, "%s\r\n", "at_queryCmdTest"); - at_port_print(buffer); - at_response_ok(); -} - -void ICACHE_FLASH_ATTR -at_exeCmdTest(uint8_t id) -{ - uint8 buffer[32] = {0}; - - os_sprintf(buffer, "%s\r\n", "at_exeCmdTest"); - at_port_print(buffer); - at_response_ok(); -} - -extern void at_exeCmdCiupdate(uint8_t id); -at_funcationType at_custom_cmd[] = { - {"+TEST", 5, at_testCmdTest, at_queryCmdTest, at_setupCmdTest, at_exeCmdTest}, - {"+CIUPDATE", 9, NULL, NULL, NULL, at_exeCmdCiupdate} -}; - -void user_init(void) -{ - char buf[64] = {0}; - at_customLinkMax = 5; - at_init(); - os_sprintf(buf,"compile time:%s %s",__DATE__,__TIME__); - at_set_custom_info(buf); - at_port_print("\r\nready\r\n"); - at_cmd_array_regist(&at_custom_cmd[0], sizeof(at_custom_cmd)/sizeof(at_custom_cmd[0])); -} diff --git a/examples/teensy/teensy-internal-libs/platformio.ini b/examples/teensy/teensy-internal-libs/platformio.ini index ced3cf02..18ce5b16 100644 --- a/examples/teensy/teensy-internal-libs/platformio.ini +++ b/examples/teensy/teensy-internal-libs/platformio.ini @@ -40,3 +40,9 @@ platform = teensy framework = arduino board = teensy31 build_flags = -DTEENSY31 + +[env:teensylc] +platform = teensy +framework = arduino +board = teensylc +build_flags = -DTEENSYLC diff --git a/platformio/boards/teensy.json b/platformio/boards/teensy.json index bb3b4a88..c0e39961 100644 --- a/platformio/boards/teensy.json +++ b/platformio/boards/teensy.json @@ -71,5 +71,25 @@ }, "url": "https://www.pjrc.com/store/teensy31.html", "vendor": "Teensy" + }, + + "teensylc": { + "build": { + "core": "teensy3", + "extra_flags": "-D__MKL26Z64__", + "f_cpu": "48000000L", + "ldscript": "mkl26z64.ld", + "mcu": "mkl26z64", + "cpu": "cortex-m0plus" + }, + "frameworks": ["arduino"], + "name": "Teensy LC", + "platform": "teensy", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 63488 + }, + "url": "http://www.pjrc.com/teensy/teensyLC.html", + "vendor": "Teensy" } } diff --git a/platformio/builder/scripts/basearm.py b/platformio/builder/scripts/basearm.py index 9ae00990..cc947a32 100644 --- a/platformio/builder/scripts/basearm.py +++ b/platformio/builder/scripts/basearm.py @@ -45,9 +45,10 @@ env.Replace( LINKFLAGS=[ "-Os", - "-Wl,--gc-sections", + "-Wl,--gc-sections,--relax", "-mthumb", - "-mcpu=${BOARD_OPTIONS['build']['cpu']}" + "-mcpu=${BOARD_OPTIONS['build']['cpu']}", + "--specs=nano.specs" ], LIBS=["c", "gcc", "m"], diff --git a/platformio/builder/scripts/baseavr.py b/platformio/builder/scripts/baseavr.py index 8a0384f1..3ac52b00 100644 --- a/platformio/builder/scripts/baseavr.py +++ b/platformio/builder/scripts/baseavr.py @@ -44,7 +44,7 @@ env.Replace( LINKFLAGS=[ "-Os", "-mmcu=$BOARD_MCU", - "-Wl,--gc-sections" + "-Wl,--gc-sections,--relax" ], LIBS=["m"], diff --git a/platformio/builder/scripts/espressif.py b/platformio/builder/scripts/espressif.py index 7a654832..5d2d3c85 100644 --- a/platformio/builder/scripts/espressif.py +++ b/platformio/builder/scripts/espressif.py @@ -35,6 +35,7 @@ env.Replace( "-Wpointer-arith", "-Wno-implicit-function-declaration", "-Wl,-EL", + "-fno-inline-functions", "-nostdlib" ], @@ -57,6 +58,11 @@ env.Replace( "ICACHE_FLASH" ], + CPPPATH=[ + join("$PIOPACKAGES_DIR", "sdk-esp8266", "include"), + "$PROJECTSRC_DIR" + ], + LINKFLAGS=[ "-nostdlib", "-Wl,--no-check-section", @@ -64,7 +70,8 @@ env.Replace( "-Wl,-static" ], - LIBS=["c", "gcc"], + LIBPATH=[join("$PIOPACKAGES_DIR", "sdk-esp8266", "lib")], + LIBS=["c", "gcc", "hal", "phy", "net80211", "lwip", "wpa", "main", "pp"], SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES', @@ -102,26 +109,6 @@ env.Append( ) ) -# -# Configure SDK -# - -if "FRAMEWORK" not in env: - env.Append( - CPPPATH=[ - join("$PIOPACKAGES_DIR", "sdk-esp8266", "include"), - "$PROJECTSRC_DIR" - ], - LIBPATH=[join("$PIOPACKAGES_DIR", "sdk-esp8266", "lib")], - LIBS=["at", "json", "lwip", "main", "net80211", "phy", "pp", - "smartconfig", "ssl", "upgrade", "wpa"] - ) - env.Replace( - LDSCRIPT_PATH=join( - "$PIOPACKAGES_DIR", "sdk-esp8266", "ld", "eagle.app.v6.ld") - ) - - # # Target: Build executable and linkable firmware # diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 5c4846bb..cbeb1e42 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -42,14 +42,6 @@ elif env.get("PLATFORM") == "timsp430": "$PIOPACKAGES_DIR", "framework-arduinomsp430" ) -elif env.get("PLATFORM") == "espressif": - PLATFORMFW_DIR = join( - "$PIOPACKAGES_DIR", - "framework-arduinoespressif" - ) - env.Append( - CPPPATH=[join("$PLATFORMFW_DIR", "sdk", "include")] - ) env.Replace(PLATFORMFW_DIR=PLATFORMFW_DIR) @@ -203,14 +195,12 @@ libs.append(envsafe.BuildLibrary( )) if env.subst("${PLATFORMFW_DIR}")[-3:] == "sam": - env.Append( LIBPATH=[ join("$PLATFORMFW_DIR", "variants", "${BOARD_OPTIONS['build']['variant']}") ] ) - envsafe.Append( CFLAGS=[ "-std=gnu99" @@ -218,10 +208,4 @@ if env.subst("${PLATFORMFW_DIR}")[-3:] == "sam": ) libs.append("sam_sam3x8e_gcc_rel") -elif env.get("PLATFORM") == "espressif": - env.Append( - LIBPATH=[join("$PLATFORMFW_DIR", "sdk", "lib")] - ) - libs.extend(["hal", "phy", "net80211", "lwip", "wpa", "main", "pp"]) - env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/teensy.py b/platformio/builder/scripts/teensy.py index 140fa8fd..ba657713 100644 --- a/platformio/builder/scripts/teensy.py +++ b/platformio/builder/scripts/teensy.py @@ -16,6 +16,9 @@ if env.get("BOARD_OPTIONS", {}).get("build", {}).get("core") == "teensy": SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "baseavr.py"))) elif env.get("BOARD_OPTIONS", {}).get("build", {}).get("core") == "teensy3": SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) + env.Append( + LINKFLAGS=["-Wl,--defsym=__rtc_localtime=$UNIX_TIME"] + ) env.Append( CPPDEFINES=[