Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки мира, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме. Официальный сайт приложения и документация IoTmanager.ru
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Интересное обсуждение лицензирования espressif sdk

Тема в разделе "SDK и создание собственных прошивок", создана пользователем Victor, 28 дек 2014.

  1. CHERTS

    CHERTS Moderator Команда форума

    Сообщения:
    483
    Симпатии:
    103
    pvvx это было бы очень круто, сделать open sdk, я даже готов поддержать это начинание на материальной основе и могу попробовать привлечь donate коллег по цеху из-за границы.
    Я думаю русскоязычное сообщество тоже поддержит Вас во всех отношениях.
     
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.647
    Симпатии:
    1.114
    Это может закрыть или нанести непоправимый ущерб Espressif.
    А "сообщество" не в состоянии поддерживать проект. Не в финансовом смысле, а ...

    Кода от самого Espressif в их библиотеках не так и много. И например никому из "сообщества" не требуется код от работы с аппаратурой WiFi чипа. Всё использование "сообществом" ограничено рамками Lua :) На большее "сообщество" не тянет. Следовательно Espressif достаточно открыть большую часть и оставить пару своих либов.
     
    Последнее редактирование: 25 мар 2015
  3. CHERTS

    CHERTS Moderator Команда форума

    Сообщения:
    483
    Симпатии:
    103
    Думаю сообщество могло бы и дальше двинуться, если бы порог вхождения в разработку для ESP был проще, например как у Ардуино. Возможно проект Sming решит эту проблему, но у него еще тоже полно проблем, ноги которых растут и от кривости базовых библиотек.
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.647
    Симпатии:
    1.114
    А в чем там кривость для библиотеки Sming в текущем SDK? Я этого не наблюдаю.
    Что WDT срабатывает через task или что при записи flash вызывается system_get_time() ? :) Но это безразлично для той аудитории, для которой делается Sming. Тем более он сам в состоянии пересобрать базовые библиотеки...
    Недоправленный и не проверенный реверс wdt.o из libmain.a:
    Код (C):
    1.  
    2. /******************************************************************************
    3. * FileName: wdt.c
    4. * Description: Reverse SDK 1.0.0 (libmain.a)
    5. * Author: PV` + ...
    6. * ver1.0
    7. *******************************************************************************/
    8.  
    9. #include "user_config.h"
    10. #include "ets.h" // из
    11. #include "ets_sys.h"
    12. #include "os_type.h"
    13. #include "osapi.h"
    14. #include "user_interface.h"
    15. #include "specreg.h"
    16.  
    17. #define _bss_start (*((uint8 *)0x3FFE9DF8)) // изменить на верную переменную
    18.  
    19. #define WDT_BASE    0x60000900
    20. #define HWREG(BASE, OFF) (*((volatile uint32_t *)((BASE)+(OFF))))
    21.  
    22. /* WDT registers */
    23. #define _WDT_CTRL    0
    24. #define _WDT_REG1    4
    25. #define _WDT_REG2    8
    26. #define _WDT_FEED    0x14
    27.  
    28. #define WDT_CTRL    HWREG(WDT_BASE, _WDT_CTRL)
    29. #define WDT_REG1    HWREG(WDT_BASE, _WDT_REG1)
    30. #define WDT_REG2    HWREG(WDT_BASE, _WDT_REG2)
    31. #define WDT_FEED    HWREG(WDT_BASE, _WDT_FEED)
    32.  
    33. #define _INTC_EDGE_EN    0x04
    34. #define INTC_EDGE_EN    HWREG(PERIPHS_DPORT_BASEADDR, _INTC_EDGE_EN)
    35.  
    36. #define WDT_FEED_MAGIC    0x73
    37.  
    38.  
    39. #define __stringify_1(x...)  #x
    40. #define __stringify(x...)  __stringify_1(x)
    41. #define RSR(sr) ({uint32_t r; asm volatile ("rsr %0,"__stringify(sr) : "=a"(r)); r;})
    42.  
    43.  
    44. // in ROM-BIOS
    45. void ets_task(ETSTask, uint32_t, struct ETSEventTag *, ETSPriority);
    46. void ets_isr_unmask(uint32_t intr);
    47. void ets_post(uint32_t, ETSSignal, ETSParam);
    48. //ets_post(
    49.  
    50. // in SDK
    51. // bool system_rtc_mem_read(uint8 src_addr, void *des_addr, uint16 load_size); // user_interface.h
    52. // bool system_rtc_mem_write(uint8 des_addr, const void *src_addr, uint16 save_size); // user_interface.h
    53.  
    54. static ETSEventQueue wdt_eventq;
    55.  
    56. void wdt_feed(void)
    57. {
    58.     struct rst_info rst_info;
    59.  
    60.     rst_info.exccause = RSR(EXCCAUSE);
    61.     rst_info.epc1 = RSR(EPC1);
    62.     rst_info.epc2 = RSR(EPC2);
    63.     rst_info.epc3 = RSR(EPC3);
    64.     rst_info.excvaddr = RSR(EXCVADDR);
    65.     rst_info.depc = RSR(DEPC);
    66.  
    67.     system_rtc_mem_read(0, &rst_info.flag, 4);
    68.  
    69.     if (rst_info.flag != EXP_RST_FLAG) {
    70.         rst_info.flag = WDT_RST_FLAG;
    71.         system_rtc_mem_write(0, &rst_info, sizeof(rst_info));
    72.     }
    73.  
    74.     _bss_start = 1; // (*((uint8 *)0x3FFE9DF8)) = 1;
    75.     ets_post(0x1e, 0, 0);
    76. }
    77.  
    78. static void wdt_task(ETSEvent *e)
    79. {
    80.     struct rst_info rst_info;
    81.  
    82.     if(_bss_start == 1) { // (*((uint8 *)0x3FFE9DF8))
    83.         ets_intr_lock();
    84.         _bss_start = 0; // (*((uint8 *)0x3FFE9DF8)) = 0
    85.         ets_intr_unlock();
    86.     }
    87.  
    88.     system_rtc_mem_read(0, &rst_info, sizeof(rst_info));
    89.  
    90.     if (rst_info.flag != EXP_RST_FLAG) {
    91.         rst_info.flag = DEFAULT_RST_FLAG;
    92.         system_rtc_mem_write(0, &rst_info, sizeof(rst_info));
    93.     }
    94.  
    95.     WDT_FEED = WDT_FEED_MAGIC;
    96. }
    97.  
    98. void wdt_init(void)
    99. {
    100.     ets_task(&wdt_task, 0x1e, &wdt_eventq, 1);
    101.  
    102.     WDT_CTRL &= 0x7e; // Disable WDT
    103.  
    104.     ets_isr_attach(8, wdt_feed, NULL);
    105.  
    106.     INTC_EDGE_EN |= 1; // 0x3ff00004 |= 1
    107.     WDT_REG1 = 0xb; // WDT timeot
    108.     WDT_REG2 = 0xb;
    109.     WDT_CTRL |= 0x38; // WDT cfg
    110.     WDT_CTRL &= 0x79;
    111.     WDT_CTRL |= 1;    // Enable WDT
    112.  
    113.     ets_isr_unmask(1 << 8); // Enable WDT isr
    114. }
    115.  
     
    Последнее редактирование: 25 мар 2015
  5. kovz

    kovz Новичок

    Сообщения:
    8
    Симпатии:
    0
    pvvx, пожалуй Вы правы. Я так думаю, что люди заинтересованные в SDK такого уровня есть, но только в случае если конторка не умрет, и я думаю вы знаете почему. Я один из них. Думаю стоит этот вопрос обсуждать в закрытом режиме.
    З.Ы. Есть опыт работы с китайцами и корейцами. Эта закрытость у них на уровне менталитета. К сожалению, с этим ничего нельзя сделать. Они с радостью патчат свой софт, если от этого зависит доход, но всегда через известное место.
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.647
    Симпатии:
    1.114
    Основная причина отказа делать реверс именно их SDK - он очень кривой и там в каждой функции, писанной Espressif - ошибки, но главное там кривые и непоправимые алгоритмы. Если что-то делать на данном чипе, то требуется только его описание и нафиг не нужен этот софтовый глюкодром от Espressif.
    И это не закрытость, а жадность и боязнь, что у них стянут последний цент.
     
    Последнее редактирование: 25 мар 2015
  7. kovz

    kovz Новичок

    Сообщения:
    8
    Симпатии:
    0
    Именно. Но получить спецификацию это и есть самое трудное! Остается только реверсить :( А в таком случае лучше направить свои силы в более продуктивное русло. Благо мир не терпит пустоты и альтернативы есть. Но я не наблюдал ни единой китайской конторы-железячника, которая бы поняла что их задача производить железо, это они могут относительно неплохо, но не трогать софт! Как максимум пилить свой SDK, но при этом дать спеки на чип. Нет! Ежики колются, плачут но кактус не поддается.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.647
    Симпатии:
    1.114
    Давно этим не занимаюсь, только для знания, что там нового творится в мире....
    Подправят школу и научатся писать ПО (не зря туда уехало множество наших програмеров). Дело это не хитрое и не сложное, надо то всего время для постановки школы, а человеческого ресурса там предостаточно и -> из-за дешивизы есть много человеко-часов на любую разработку :)
    У них нет всяких всяких обременяющих идолов типа Richard Matthew Stallman, навязывающих бюрократию в данном деле. А так- же фанатов авторского-права и пирамиды патентной бюрократии… Это нам ныне навязывают, для тормоза деградации :)
     
    Последнее редактирование: 26 мар 2015

Поделиться этой страницей