• 大小: 15.03MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-07-03
  • 语言: 其他
  • 标签: Arduino  esp8266  wifi  

资源简介

Arduino上开发,配合使用的esp8266 wifi芯片,其库函数,版本号为 2.4.2

资源截图

代码片段和文件信息

/* Copyright (c) 2015-2016 Ivan Grokhotkov. All rights reserved.
 * This file is part of eboot bootloader.
 *
 * Redistribution and use is permitted according to the conditions of the
 * 3-clause BSD license to be found in the LICENSE file.
 */


#include 
#include 
#include 
#include 
#include “flash.h“
#include “eboot_command.h“

#define SWRST do { (*((volatile uint32_t*) 0x60000700)) |= 0x80000000; } while(0);

extern void ets_wdt_enable(void);
extern void ets_wdt_disable(void);

int print_version(const uint32_t flash_addr)
{
    uint32_t ver;
    if (SPIRead(flash_addr + APP_START_OFFSET + sizeof(image_header_t) + sizeof(section_header_t) &ver sizeof(ver))) {
        return 1;
    }
    const char* __attribute__ ((aligned (4))) fmtt = “v%08x\n\0\0“;
    uint32_t fmt[2];
    fmt[0] = ((uint32_t*) fmtt)[0];
    fmt[1] = ((uint32_t*) fmtt)[1];
    ets_printf((const char*) fmt ver);
    return 0;
}

int load_app_from_flash_raw(const uint32_t flash_addr)
{
    image_header_t image_header;
    uint32_t pos = flash_addr + APP_START_OFFSET;

    if (SPIRead(pos &image_header sizeof(image_header))) {
        return 1;
    }
    pos += sizeof(image_header);


    for (uint32_t section_index = 0;
        section_index < image_header.num_segments;
        ++section_index)
    {
        section_header_t section_header = {0};
        if (SPIRead(pos §ion_header sizeof(section_header))) {
            return 2;
        }
        pos += sizeof(section_header);

        const uint32_t address = section_header.address;

        bool load = false;

        if (address < 0x40000000) {
            load = true;
        }

        if (address >= 0x40100000 && address < 0x40108000) {
            load = true;
        }

        if (address >= 0x60000000) {
            load = true;
        }

        if (!load) {
            pos += section_header.size;
            continue;
        }

        if (SPIRead(pos (void*)address section_header.size))
            return 3;

        pos += section_header.size;
    }

    register uint32_t sp asm(“a1“) = 0x3ffffff0;
    register uint32_t pc asm(“a3“) = image_header.entry;
    __asm__  __volatile__ (“jx a3“);

    return 0;
}



int copy_raw(const uint32_t src_addr
             const uint32_t dst_addr
             const uint32_t size)
{
    // require regions to be aligned
    if (src_addr & 0xfff != 0 ||
        dst_addr & 0xfff != 0) {
        return 1;
    }

    const uint32_t buffer_size = FLASH_SECTOR_SIZE;
    uint8_t buffer[buffer_size];
    uint32_t left = ((size+buffer_size-1) & ~(buffer_size-1));
    uint32_t saddr = src_addr;
    uint32_t daddr = dst_addr;

    while (left) {
        if (SPIEraseSector(daddr/buffer_size)) {
            return 2;
        }
        if (SPIRead(saddr buffer buffer_size)) {
            return 3;
        }
        if (SPIWrite(daddr buffer buffer_size)) {
            return 4;
        }
        saddr += buffer_size;
        daddr

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-03 07:19  esp8266-2.4.2\
     文件        7722  2018-08-03 07:19  esp8266-2.4.2\README.md
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\
     文件        9159  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\README.md
     文件        1356  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\keywords.txt
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\examples\
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\examples\HelloMesh\
     文件        5708  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\examples\HelloMesh\HelloMesh.ino
     文件         267  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\library.properties
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\
     文件       18190  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\ESP8266WiFiMesh.cpp
     文件        2133  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\TransmissionResult.cpp
     文件        4789  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\Compatibilitylayer.cpp
     文件        2173  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\TransmissionResult.h
     文件        2292  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\NetworkInfo.h
     文件        4123  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\UtilityMethods.cpp
     文件        2290  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\NetworkInfo.cpp
     文件       14411  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266WiFiMesh\src\ESP8266WiFiMesh.h
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\
     文件        1203  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\README.rst
     文件        1336  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\keywords.txt
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\examples\
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\examples\SSDP\
     文件        1308  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\examples\SSDP\SSDP.ino
     文件        4578  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\ESP8266SSDP.h
     文件       12811  2018-08-03 07:19  esp8266-2.4.2\libraries\ESP8266SSDP\ESP8266SSDP.cpp
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\Ticker\
     文件         656  2018-08-03 07:19  esp8266-2.4.2\libraries\Ticker\keywords.txt
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\Ticker\examples\
     目录           0  2018-08-03 07:19  esp8266-2.4.2\libraries\Ticker\examples\TickerBasic\
............此处省略2107个文件信息

评论

共有 条评论