Программирование ESP8266 без SDK

Существуют ограничения в библиотеках ESP SDK (которые не являются общедоступными), например, длина принимаемого пакета (максимум 112 байт) в режиме promisc.

Я пытался связаться с ними, чтобы получить некоторую информацию и указания, но они, кажется, отвечают ерундой.

Можно ли запрограммировать чип без SDK - таким образом сделать свой собственный SDK и забыть об их ограничениях?


person PeeS    schedule 02.07.2019    source источник
comment
SDK содержит «программное устройство». он обрабатывает WiFi на уровне аналогового радио   -  person Juraj    schedule 03.07.2019
comment
@Juraj - извините, что вы имеете в виду?   -  person PeeS    schedule 03.07.2019
comment
то есть вы не можете говорить с процессором как с голым железом?   -  person PeeS    schedule 03.07.2019
comment
к процессору, может быть, вы можете, но без возможности WiFi   -  person Juraj    schedule 03.07.2019
comment
так что WiFi не является процессором, к которому вы можете получить доступ?   -  person PeeS    schedule 03.07.2019
comment
Думаю, на esp8266 Wi-Fi делается программно больше, чем на любом другом устройстве. дело в том, что его нельзя заменить без огромных усилий   -  person Juraj    schedule 03.07.2019
comment
что-нибудь, на что вы можете сослаться - чтобы я мог прочитать? первый раз слышу, что "Wi-Fi делается с помощью программного обеспечения". звучит более чем интересно   -  person PeeS    schedule 03.07.2019
comment
это только мое впечатление от опыта работы с esp8266. см. здесь альтернативу полному Espressif SDK en.wikipedia.org/wiki/ESP8266#SDKs   -  person Juraj    schedule 04.07.2019
comment
забавно, что все неофициальные SDK содержат официальный SDK. но часть, которую вы хотите изменить, возможно, находится в части с открытым исходным кодом   -  person Juraj    schedule 04.07.2019
comment
@Juraj, к сожалению, его нет в открытом исходном коде. Функциональность режима promisc встроена в библиотеку, у которой нет доступных исходных кодов. См.: wifi_set_promiscuous_rx_cb Я вхожу в группу разработки продуктов, которая планирует создать недорогую систему обнаружения вторжений в беспроводную сеть для SOHO. ESP казался лучшим выбором, но из-за ограничения в 112 байт на пакет в неразборчивом режиме нам нужно отказаться от этого продукта. Мы уже выпустили продукт на рынок с 1200 устройствами на основе ESP, но для этой новой инициативы нам пришлось бы отказаться от ESP только из-за установленных ими ограничений.   -  person PeeS    schedule 04.07.2019


Ответы (1)


Ядро процессора на esp8266 — это «xtensa». Ядро процессора, или, назовем его просто процессором, — это то, что мы программируем на C, C++ или ассемблере. Набор инструкций процессора публикуется компанией (Tensilica .. или Cadence??), и когда у вас есть набор инструкций, вы можете программировать напрямую или создавать компилятор и иметь полную свободу с процессором.

Процессорное ядро ​​не является законченным продуктом, и для нас, конечных потребителей, и таких компаний, как Espressif, покупаются права интеллектуальной собственности на конструкцию процессорного ядра и создается конечный продукт с использованием периферийных устройств, таких как SPI, I2C, UART и т. д. корпус esp8266, Wi-Fi-трансивер, вокруг ядра процессора.

Эти периферийные устройства управляются в цифровом виде и выводятся на процессор в цифровом виде, поэтому процессор может взаимодействовать с ними, но их действие может быть как цифровым, так и аналоговым. Для UART, SPI, I2C и т. д. espressif предоставил нам таблицу данных, в которой указаны все регистры, которые можно использовать для управления этим периферийным устройством. Это что-то вроде записи в этот адрес памяти X того, что вы хотите передать, а затем установить бит Y в адресе памяти Z, чтобы начать передачу. Например, для SPI есть регистры для управления скоростью, полярностью, фазой и т. д. для передачи. Как только вы узнаете, как управлять периферийным устройством на более низком уровне, вы сможете писать драйверы высокого уровня, которые также предоставляет espressif, но вы можете написать и свои собственные.

Для Wi-Fi espressif не сообщил, как можно взаимодействовать с периферийным устройством, поэтому нам приходится полагаться на скомпилированные двоичные файлы, которые нам отправляет espressif. Вы можете использовать «objdump -t» в «lib/lib80211.a», чтобы получить по крайней мере имена подпрограмм, которые предоставляет драйвер Wi-Fi. Вы можете вызвать эти подпрограммы из кода C или ассемблера и пойти немного ниже, чем предполагалось espressif, но для того, чтобы пойти еще ниже, потребуется «Обратный инжиниринг», вручную разбираясь в низкоуровневом коде в скомпилированном драйвере, и никто не будет рисковать и тратить время. осушать.

person Solomon Candy    schedule 04.07.2019
comment
Спасибо, кажется, что необходимых усилий слишком много для результатов, которых я хотел достичь. - person PeeS; 04.07.2019