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

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

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

  1. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.189
    Симпатии:
    373
  2. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    There are many compelling reasons to not do this, including the possibility of building devices that violate the WiFi standards and wreak havoc on the network.
    :D:D:D
    Хаос у них в голове. От своей глупости они терпят убытки.
    Как я понял, они скоро закроются от истощения. Так было с многими. Их замучают и перекупят.
     
  3. CHERTS

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

    Сообщения:
    483
    Симпатии:
    103
    Эх, как жаль что у Espressif твориться такой бардак.
    Если они производят ESP по лицензированию от Tensilica, то тогда они заложники их NDA и низкоуровневые исходники они явно не откроют, а без них сообщество не может нормально развивать SDK.
     
  4. jcmvbkbc

    jcmvbkbc Читатель

    Сообщения:
    179
    Симпатии:
    17
    Всё интересное, что относится к тенсилике и так распространяется под лицензиеями MIT/GPL. WiFi они у тенсилики лицензировать не могли, поскольку у неё его нет и никогда не было.
     
  5. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    Зато давно есть у Qualcomm Atheros с Tensilica
    12.03.201319:00 Компания Qualcomm Atheros открыла код прошивок для беспроводных чипов AR7010 и AR9271
    https://github.com/qca/open-ath9k-htc-firmware/
     
  6. CHERTS

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

    Сообщения:
    483
    Симпатии:
    103
    Возможно внутри ESP8266 стоит что-то от Atheros с глубокой модификацией, но кЕтайцы это не скажут. Сильно сомневаюсь, что они с нуля создали wi-fi передатчик, скорее всего использовали что-то готовое.
     
  7. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    На сегодня много этого добра MT7681SDK - http://www.andestech.com.tw/en/download/Andesightv2.0.1MCU(official).zip (http://forum.andestech.com/viewtopic.php?f=23&t=576&p=672)
    Примеры работы с LwIP есть и у Nordic nRF51 с SDK (но там BT и ARM) (имею в виду компактную систему по памяти)
    Да много ещё... Можно собрать коды и без Espressif :) Они уже "выдали" всё необходимое.
     
    Последнее редактирование: 28 янв 2015
  8. CHERTS

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

    Сообщения:
    483
    Симпатии:
    103
    Да добра с Wi-Fi на борту и нормальным SDK полно, но они увы далеко не компактны и требуют внушительного обвеса + наверняка жрут дофига, так что от батарейки не запитаешь.
     
  9. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    Как раз наоборот. Тот-же TL-MR3020 и его дальнейшие модификации (китай-наборы и т.д.) работают на полную 802.11n с меньшим потреблением и в 100 раз большей функциональностью. А питание для sleep всегда можно вырубить внешнем компонентом и будет общая ещё меньше, чем у ESP8266. А уж рейтинг функциональность/цена - несравним.
    Да и ныне навыпускают альтернатив получше и дешевле, чем ESP8266 c политикой Espressif. Espressif помрет > 90%.
     
    Последнее редактирование: 28 янв 2015
  10. CHERTS

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

    Сообщения:
    483
    Симпатии:
    103
    А размеры платы? У плат ESP очень выгодные размеры, можно в спичечный коробок все добро запихнуть, а TL-MR3020 и модификации?
     
  11. CHERTS

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

    Сообщения:
    483
    Симпатии:
    103
    Кстате MT7681 очень даже неплохо выглядит, цена конечно подороже чем у ESP и GPIO меньше, официальную SDK бы пощупать или спросить у кого, как там в ней дела с багами обстоят.
     
  12. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    aliexpress.com "OpenWRT" тама встречалось. Найдете и плату RT-56U "в спичечный коробок", а это мегобайты памяти и Гего-герцы и полная open система.... :)
    Но это не интересно - там всё описано и всё есть. :)
     
    Последнее редактирование: 28 янв 2015
  13. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    Старые частичные исходники MT7681_IoT_Package_v1.30.zip https://yadi.sk/d/iUic47c5ed9Qb , используется uIP TCP/IP stack.
    И интересная тема http://www.esp8266.com/viewtopic.php?f=9&t=1495 - пытаются примотать picotcp к ESP8266 :)
    Посмотреть (раскрыть)

    RE: LOOKS LIKE PICOTCP IS COMMING TO THE ESP8266 ...#9411
    By kadamski - Tue Feb 10, 2015 2:19 pm

    I haven't seen picoTCP code yet but closed mac layer isn't really that big problem. You can communicate with lower layers the same way LwIP does (emulating usage of typical LwIP data structures like netif and pbuf) - if you have any data to send, you call ieee80211_output_pbuf() function, if there is any data to be read, the XTOS task with prio 28 (for STA interface) or 29 (for AP interface) will be posted with the pointer to pbuf structure in event->par in argument.

    If you're interested in how LwIP is set up, take a look at https://github.com/kadamski/esp-lwip/bl ... _lwip_if.c

    EDIT: I've made a quick look at both documentation and source now. There is no driver initialization code on github but it looks like it should be easy to implement using the information I provided above. The only problem is that you need to create/manage LwIP netif structure with the same ABI as internal SDK functions expect.

    Кончина SDK от Espressif всё ближе и ближе... :)
     
    Последнее редактирование: 12 фев 2015
  14. aloika

    aloika Читатель

    Сообщения:
    329
    Симпатии:
    21
    В начале этого года MediaTek выпустила официальную документацию и SDK на модуль MT7681 http://labs.mediatek.com/site/global/developer_tools/mediatek_7681/documentation/index.gsp, а Seeed Studio - отладочную плату для модуля http://www.seeedstudio.com/depot/LinkIt-Connect-7681-WiFi-HDK-for-IoT-p-2262.html . На плате, помимо модуля - преобразователь USB-UART, стабилизатор питания, светодиоды на GPIO, кнопка reset.
    Я такую плату купил, попробовал. Пока еще мало наковырял, но вообще она мне нравится.
    Самое здоровское, по моему мнению - smartconnect. Т.е. переводишь модуль в режим "смартконнект" (режим, как я понял, сниффера), потом на телефоне, предварительно введя SSID и пароль, нажимаешь кнопочку SmartConnect - и модуль получает имя и пароль сети и к сети цепляется. После чего с телефона можно управлять модулем - зажигать светодиоды, слать/принимать данные в UART. Исходники программ для андроида и для айос есть в SDK.
    То есть не надо делать web-сервер (хотя че-то такое в SDK есть, не разобрался еще). Не надо пользователю вводить/запоминать айпишники, чтобы соединить свое IoT-устройство с сетью. Достаточно просто на телефоне ввести имя и пароль и нажать кнопку.

    Что я сейчас пока что сделал - перевод модуля в режим смартконнект нажатием на кнопку на модуле (т.е. проводком, а не кнопкой), индикация светодиодами, соединился модуль с сетью или еще соединяется или ни то, ни то.

    Буду дальше ковырять, проблема в том, что под Андроид я никогда ничего не писал, по ходу дела с этим приходится разбираться.

    offtopic: CHERTS, мы с вами из одного города - Челябинска, прикольно :)
     
  15. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    На нем и не сделать - там памяти для TCP стека вообще нет. Да и проц тормозной. А ценник на макетку с этим убожеством вообще запредельный.
     
  16. aloika

    aloika Читатель

    Сообщения:
    329
    Симпатии:
    21
    Цена на макетку никакой роли не играет, на алиэкспрессе отдельно есть модули за 5 баксов или около того. Думаю, оптом можно еще дешевле найти. Макетка просто для удобства первоначального ковыряния.

    Насчет памяти и проца - вам видней, тут не спорю. Вопрос просто в том, зачем вообще в таком маленьком устройстве веб-сервер. Я вижу, что только для того, чтобы подключить устройство к сети. Ну какие-то мелкие настройки сделать. Все равно, к примеру, вебсокет там не поднять (ну или непросто это сделать, в какое-нить ограничение да упрешься).

    Если вопрос подключения к сети решить без веб-сервера - то нужен ли еще веб-сервер? Если это единичное устройство - ну и управлять им с телефона. Если сеть устройств - им все равно нужен какой-то управляющий сервер, вот он и пусть будет веб-сервером заодно. И делать этот сервер на чем-то серьезнее, чем эти модули - я, например, делал в одном проекте на Cubieboard.
     
  17. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    Вопросов подключения к сети нет ни у одного устройства. Smartlink есть у всех, но годится только для включения одной лампочки.
    Веб-сервер на исполнительном устройстве требуется для его управления любым внешним устройством не имеющим никакого специализированного ПО.
    Или например для элементарного TCP2UART, где и используется сокет + веб-сервер. Всё это уже есть на ESP8266, а на MT7681 возможно только с очень большими ограничениями и будет не полнофункционально. Т.е. MT7681 на сегодня - это модуль ниже уровня ESP8266, да дороже и почти равен стоимости полноценных модулей на OpenWRT, где вообще никаких ограничений нет.
    Если описывать проще, то всё, что возможно сделать на MT7681 делается и на ESP8266. Но не наоборот, из-за аппаратных ограничений MT7681.
     
    Последнее редактирование: 2 мар 2015
    Algis нравится это.
  18. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
  19. CHERTS

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

    Сообщения:
    483
    Симпатии:
    103
    Ну что и следовало ожидать... да да мы используем LWIP, Contiki, and freeRTOS, etc но исходники не дадим, собсно LWIP распространяется под лицензией New BSD License, а она позволяет закрывать модифицированный код. У freeRTOS тоже модифицированная GPL, нужно смотреть разрешено ли закрывать исходники, скорее всего да, так что тоже облом.
     
  20. pvvx

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

    Сообщения:
    7.227
    Симпатии:
    1.168
    Облома не будет. Если у меня будет свободное время, то создам полный ревес-опен SDK :) Уже прикинул затраты - недели две на переработку asm в си и недельку на причесать... :)
    НО - работать каждый день нелзя - требуются перерывы. От это срок надо умножать на 2 и я не собираюсь пока делать такой "трудовой забег" :)
    90% исходников libmain.a уже есть кусками в сети...
    Надо дать возможность самой Espressif исправить ситуацию.
    Пример (spi_flash.o из libmain.a) :
    Код (C):
    1.  
    2. /******************************************************************************
    3. * FileName: spi_flash.c
    4. * Description: Reverse SDK 1.0.0 (libmain.a)
    5. * Author: PV`
    6. * ver1.0
    7. *******************************************************************************/
    8. #include "user_config.h"
    9. #include "ets_sys.h"
    10. #include "os_type.h"
    11. #include "osapi.h"
    12. #include "user_interface.h"
    13. #include "driver/spi_register.h"
    14. #include "spi_flash.h"
    15.  
    16. // In ROM-BIOS
    17. extern SpiFlashChip * flashchip;
    18. void Wait_SPI_Idle(SpiFlashChip *sflashchip);
    19. void Cache_Read_Disable(void);
    20. void Cache_Read_Enable(uint32 a, uint32 b, uint32 c);
    21. void ets_intr_lock(void);
    22. void ets_intr_unlock(void);
    23. int SPI_read_status(SpiFlashChip *sflashchip, uint32 sta);
    24. int SPI_write_status(SpiFlashChip *sflashchip, uint32 *sta);
    25. int SPIRead(uint32_t src, uint32_t *dst, uint32_t size);
    26. int SPIWrite(uint32_t dst, const uint32_t *src, uint32_t size);
    27. int SPIEraseSector(uint16_t sector);
    28. void Wait_SPI_Idle(uint32_t *base);
    29.  
    30. /* in user_interface.o (libmain.a)
    31. uint32 system_get_time(void); // user_interface.h
    32. */
    33.  
    34. uint32 spi_flash_get_id(void)
    35. {
    36.     Cache_Read_Disable();
    37.     Wait_SPI_Idle(flashchip);
    38.     WRITE_PERI_REG(SPI_W0(0),0);     // 0x60000240 = 0
    39.     WRITE_PERI_REG(SPI_CMD(0), SPI_RDID); // 0x60000200 = 0x10000000
    40.     while (READ_PERI_REG(SPI_CMD(0)));
    41.     uint32_t id = READ_PERI_REG(SPI_W0(0)) & 0xffffff;
    42.     Cache_Read_Enable(0, 0, 1);
    43.     return id;
    44. }
    45.  
    46. uint32 spi_flash_read_status(uint32 * sta)
    47. {
    48.     Cache_Read_Disable();
    49.     uint32 ret = SPI_read_status(flashchip, sta);
    50.     Cache_Read_Enable(0, 0, 1);
    51.     return ret;
    52. }
    53.  
    54. uint32 spi_flash_write_status(uint32 sta)
    55. {
    56.     Cache_Read_Disable();
    57.     SpiFlashOpResult ret = SPI_write_status(flashchip, sta);
    58.     Cache_Read_Enable(0, 0, 1);
    59.     return ret;
    60. }
    61.  
    62. SpiFlashOpResult spi_flash_erase_sector(uint16 sec)
    63. {
    64.     system_get_time();
    65.     ets_intr_lock();
    66.     Cache_Read_Disable();
    67.     SpiFlashOpResult ret = SPIEraseSector(sec);
    68.     Cache_Read_Enable(0, 0, 1);
    69.     ets_intr_unlock();
    70.     system_get_time();
    71.     return ret;
    72. }
    73.  
    74. SpiFlashOpResult spi_flash_write(uint32 des_addr, uint32 *src_addr, uint32 size)
    75. {
    76.     if(src_addr == NULL) return SPI_FLASH_RESULT_ERR;
    77.     if(size & 3) size &= ~3;
    78.     system_get_time();
    79.     Cache_Read_Disable();
    80.     SpiFlashOpResult ret = SPIWrite(des_addr, src_addr, size);
    81.     Cache_Read_Enable(0, 0, 1);
    82.     system_get_time();
    83.     return ret;
    84. }
    85.  
    86. SpiFlashOpResult spi_flash_read(uint32 src_addr, uint32 *des_addr, uint32 size)
    87. {
    88.     if(des_addr == NULL) return SPI_FLASH_RESULT_ERR;
    89.     Cache_Read_Disable();
    90.     SpiFlashOpResult ret = SPIRead(src_addr, des_addr, size);
    91.     Cache_Read_Enable(0, 0, 1);
    92.     return ret;
    93. }
    94.  
    :)
    Да, и они не первая контора, которую я закрыл в своей жизни. Они будут самыми мелкими - по тому это можно делать в открытую :)
     
    Последнее редактирование: 25 мар 2015

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