Существуют ограничения в библиотеках ESP SDK (которые не являются общедоступными), например, длина принимаемого пакета (максимум 112 байт) в режиме promisc.
Я пытался связаться с ними, чтобы получить некоторую информацию и указания, но они, кажется, отвечают ерундой.
Можно ли запрограммировать чип без SDK - таким образом сделать свой собственный SDK и забыть об их ограничениях?
Ответ 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, но для того, чтобы пойти еще ниже, потребуется "Обратный инжиниринг", вручную разбираясь в низкоуровневом коде в скомпилированном драйвере, и никто не будет рисковать и тратить время. осушать.