Это может закрыть или нанести непоправимый ущерб Espressif.pvvx это было бы очень круто, сделать open sdk, я даже готов поддержать это начинание на материальной основе и могу попробовать привлечь donate коллег по цеху из-за границы.
Я думаю русскоязычное сообщество тоже поддержит Вас во всех отношениях.
Думаю сообщество могло бы и дальше двинуться, если бы порог вхождения в разработку для ESP был проще, например как у Ардуино. Возможно проект Sming решит эту проблему, но у него еще тоже полно проблем, ноги которых растут и от кривости базовых библиотек.Всё использование "сообществом" ограничено рамками Lua На большее "сообщество" не тянет. Следовательно Espressif достаточно открыть большую часть и оставить пару своих либов.
А в чем там кривость для библиотеки Sming в текущем SDK? Я этого не наблюдаю.Возможно проект Sming решит эту проблему, но у него еще тоже полно проблем, ноги которых растут и от кривости базовых библиотек.
/******************************************************************************
* FileName: wdt.c
* Description: Reverse SDK 1.0.0 (libmain.a)
* Author: PV` + ...
* ver1.0
*******************************************************************************/
#include "user_config.h"
#include "ets.h" // из
#include "ets_sys.h"
#include "os_type.h"
#include "osapi.h"
#include "user_interface.h"
#include "specreg.h"
#define _bss_start (*((uint8 *)0x3FFE9DF8)) // изменить на верную переменную
#define WDT_BASE 0x60000900
#define HWREG(BASE, OFF) (*((volatile uint32_t *)((BASE)+(OFF))))
/* WDT registers */
#define _WDT_CTRL 0
#define _WDT_REG1 4
#define _WDT_REG2 8
#define _WDT_FEED 0x14
#define WDT_CTRL HWREG(WDT_BASE, _WDT_CTRL)
#define WDT_REG1 HWREG(WDT_BASE, _WDT_REG1)
#define WDT_REG2 HWREG(WDT_BASE, _WDT_REG2)
#define WDT_FEED HWREG(WDT_BASE, _WDT_FEED)
#define _INTC_EDGE_EN 0x04
#define INTC_EDGE_EN HWREG(PERIPHS_DPORT_BASEADDR, _INTC_EDGE_EN)
#define WDT_FEED_MAGIC 0x73
#define __stringify_1(x...) #x
#define __stringify(x...) __stringify_1(x)
#define RSR(sr) ({uint32_t r; asm volatile ("rsr %0,"__stringify(sr) : "=a"(r)); r;})
// in ROM-BIOS
void ets_task(ETSTask, uint32_t, struct ETSEventTag *, ETSPriority);
void ets_isr_unmask(uint32_t intr);
void ets_post(uint32_t, ETSSignal, ETSParam);
//ets_post(
// in SDK
// bool system_rtc_mem_read(uint8 src_addr, void *des_addr, uint16 load_size); // user_interface.h
// bool system_rtc_mem_write(uint8 des_addr, const void *src_addr, uint16 save_size); // user_interface.h
static ETSEventQueue wdt_eventq;
void wdt_feed(void)
{
struct rst_info rst_info;
rst_info.exccause = RSR(EXCCAUSE);
rst_info.epc1 = RSR(EPC1);
rst_info.epc2 = RSR(EPC2);
rst_info.epc3 = RSR(EPC3);
rst_info.excvaddr = RSR(EXCVADDR);
rst_info.depc = RSR(DEPC);
system_rtc_mem_read(0, &rst_info.flag, 4);
if (rst_info.flag != EXP_RST_FLAG) {
rst_info.flag = WDT_RST_FLAG;
system_rtc_mem_write(0, &rst_info, sizeof(rst_info));
}
_bss_start = 1; // (*((uint8 *)0x3FFE9DF8)) = 1;
ets_post(0x1e, 0, 0);
}
static void wdt_task(ETSEvent *e)
{
struct rst_info rst_info;
if(_bss_start == 1) { // (*((uint8 *)0x3FFE9DF8))
ets_intr_lock();
_bss_start = 0; // (*((uint8 *)0x3FFE9DF8)) = 0
ets_intr_unlock();
}
system_rtc_mem_read(0, &rst_info, sizeof(rst_info));
if (rst_info.flag != EXP_RST_FLAG) {
rst_info.flag = DEFAULT_RST_FLAG;
system_rtc_mem_write(0, &rst_info, sizeof(rst_info));
}
WDT_FEED = WDT_FEED_MAGIC;
}
void wdt_init(void)
{
ets_task(&wdt_task, 0x1e, &wdt_eventq, 1);
WDT_CTRL &= 0x7e; // Disable WDT
ets_isr_attach(8, wdt_feed, NULL);
INTC_EDGE_EN |= 1; // 0x3ff00004 |= 1
WDT_REG1 = 0xb; // WDT timeot
WDT_REG2 = 0xb;
WDT_CTRL |= 0x38; // WDT cfg
WDT_CTRL &= 0x79;
WDT_CTRL |= 1; // Enable WDT
ets_isr_unmask(1 << 8); // Enable WDT isr
}
Основная причина отказа делать реверс именно их SDK - он очень кривой и там в каждой функции, писанной Espressif - ошибки, но главное там кривые и непоправимые алгоритмы. Если что-то делать на данном чипе, то требуется только его описание и нафиг не нужен этот софтовый глюкодром от Espressif.pvvx, пожалуй Вы правы. Я так думаю, что люди заинтересованные в SDK такого уровня есть, но только в случае если конторка не умрет, и я думаю вы знаете почему. Я один из них. Думаю стоит этот вопрос обсуждать в закрытом режиме.
З.Ы. Есть опыт работы с китайцами и корейцами. Эта закрытость у них на уровне менталитета. К сожалению, с этим ничего нельзя сделать. Они с радостью патчат свой софт, если от этого зависит доход, но всегда через известное место.
Давно этим не занимаюсь, только для знания, что там нового творится в мире....Именно. Но получить спецификацию это и есть самое трудное! Остается только реверсить А в таком случае лучше направить свои силы в более продуктивное русло. Благо мир не терпит пустоты и альтернативы есть.
Подправят школу и научатся писать ПО (не зря туда уехало множество наших програмеров). Дело это не хитрое и не сложное, надо то всего время для постановки школы, а человеческого ресурса там предостаточно и -> из-за дешивизы есть много человеко-часов на любую разработкуНо я не наблюдал ни единой китайской конторы-железячника, которая бы поняла что их задача производить железо, это они могут относительно неплохо, но не трогать софт! Как максимум пилить свой SDK, но при этом дать спеки на чип. Нет! Ежики колются, плачут но кактус не поддается.