Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: PeeSОтветов: 1

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

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

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

  • SDK содержит "программное устройство". он обрабатывает WiFi на уровне аналогового радио Juraj 03.07.2019
  • @Juraj - извините, что вы имеете в виду? PeeS 03.07.2019
  • то есть вы не можете говорить с процессором как с голым железом? PeeS 03.07.2019
  • к процессору, может быть, вы можете, но без возможности WiFi Juraj 03.07.2019
  • так что WiFi не является процессором, к которому вы можете получить доступ? PeeS 03.07.2019
  • Думаю, на esp8266 Wi-Fi делается программно больше, чем на любом другом устройстве. дело в том, что его нельзя заменить без огромных усилий Juraj 03.07.2019

esp8266arduino-esp8266

Ответы

Ответ 1 · рейтинг 2 · Solomon Candy

Ядро процессора на 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, но для того, чтобы пойти еще ниже, потребуется "Обратный инжиниринг", вручную разбираясь в низкоуровневом коде в скомпилированном драйвере, и никто не будет рисковать и тратить время. осушать.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы