Ядро процессора на 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