ESP32 прошивка

И так, вышла новая версия ESP.

Для меня всегда самой большой загадкой является связь какой-то железки и ПК на предмет прошивание первой, так что начну с

Подготовка среды Arduino IDE для ESP32

Идем по Ссылке на гит https://github.com/espressif/arduino-esp32 (для красноглазых читаем README.md )

  1. Скачиваем все содержимое.
  2. В папке  arduino/hardware создаем папку espressif
  3. в нее копируем содержимое архива из гита
  4. в папке tools запускем get.py просто двойным кликом, никакой черной магии
  5. нужно добавить питон в PATH: Система > Дополнительные параметры системы > Переменные среды > доавить в строчку PATH следующее ;C:\Python27
  6. скачиваем архив https://pypi.python.org/pypi/pyserial, распаковываем
  7. в распакованной папке запускаем GIT Bash и выполняем:
  8. python setup.py install
  9. запускаем Arduino IDE, проверяем Инструменты >Плата > ESP32 Dev Module. Если такая строчка есть, то все профит. среда настроена.
  10. Создаем новый проект, компилируем,
  11. Profit.

NB: убедитесь что финальный путь у вас /hardware/espressif/esp32/tools .

NB: установка питона https://www.python.org/downloads/release/python-2712/

 

Использование библиотек из Arduino в AVRStudio

Чтобы использовать любую библиотеку Arduino в AVRStudio необходимо совсем немногое.

Разберем структуру пустого проекта. В общем то там 2 файла. Нас интересует следующий:

У него вот такое вот содержимое:

#define __AVR_ATmega328p__
#define __AVR_ATmega328P__
#define ARDUINO 161
#define ARDUINO_MAIN
#define F_CPU 16000000L
#define __AVR__
extern "C" void __cxa_pure_virtual() {;}

//
//

#include "...\arduino\hardware\arduino\avr\variants\standard\pins_arduino.h" 
#include "...\arduino\hardware\arduino\avr\cores\arduino\arduino.h"
#include <testtest.ino>

Нам понабоится подключить 2 библиотеки. Далее смотрим структуру main.cpp (точка входа)

...\arduino\hardware\arduino\avr\cores\arduino\main.cpp

Там собственно описана вся структура работы ардуины:

#include <Arduino.h>

//Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (*func)()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

Попробуем создать свой проект по такому лекалу.

  • Создаем новый проект
  • Копируем из ArduinoIDE папку C:\Users\Sainquake\Desktop\arduino\hardware\arduino\avr к себе в проект рядом с входной точкой проекта (Файл в котором main)
  • Пишем следующий код в теле. Подгрузку выделеной бибилотеки нужно отключить

  • Меняем пути на которые ругается компилятор

Все. Должно скомпилироваться.

Тестируем

Добавляем следующий код:

void setup(void){
	pinMode(13, OUTPUT);
}

void loop(void){
	  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
	  delay(1000);              // wait for a second
	  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
	  delay(1000);              // wait for a second
}

Добавляем библиотеки ваеринга:

#include "avr\cores\arduino\wiring.c"
#include "avr\cores\arduino\wiring_digital.c"

В них опять нужно поменять путь к pins_arduino.h

#include "C:\Users\Sainquake\Documents\Atmel Studio\6.2\GccApplication1\GccApplication1\avr\variants\standard\pins_arduino.h"

Компилируем, прошиваем. У меня нет программатора, так что я пользуюсь бутлоадером Arduino и прогой XLoader.

Результат следующий