Закрыть
Как ускорить загрузку скетчей в Arduino

Как ускорить загрузку скетчей в Arduino

Существует простой способ в два раза увеличить скорость загрузки скомпилированного кода в микроконтроллер при использовании Arduino IDE.

Заходим в Настройки в Arduino IDE, снимаем галочку с пункта Проверка кода после загрузки и жмем OK. Вот и все что нужно сделать. Не верите? Откроем большой скетч, который занимает около 30 килобайт во флеш-памяти микроконтроллера. С выбранным пунктом проверки, загрузка файла занимает примерно 24 секунды. Сняв отметку, мы выполним это же действие примерно за 13 секунд.

Что при этом происходит? По умолчанию, Arduino IDE проверяет, что все было записано правильно:

Загрузка:

Arduino IDE: Эй
Микроконтроллер: О, привет
Arduino IDE: У меня есть для тебя немного нового кода
Микроконтроллер: Отлично! Отправляй его мне
Arduino IDE: Вот скомпилированный код... [30 килобайт]
Микроконтроллер: Получил. Спасибо!

Проверка:

Arduino IDE: Эй
Микроконтроллер: О, привет
Arduino IDE: Я не уверен, что ты получил все правильно. Перешли полученный код.
Микроконтроллер: Хорошо, вот он... [30 килобайт]
Arduino IDE: [Сравнивает байты в Arduino с оригинальными байтами кода]
             Выглядит нормально. Продолжай.

Вот как работает функция загрузки: отправляется код, затем проверяется, есть ли ошибки во время передачи. Пропуская проверочный шаг, вы уменьшите количество байтов, которые должны быть переданы туда и обратно в два раза.

На самом деле, даже с выключенной проверкой, все равно будут произведены две другие проверки ошибок. Одна на уровне загрузчика — каждый блок данных загрузчика STK500 имеет, так называемый циклический избыточный код (Cyclic redundancy check, CRC), который представляет из себя алгоритм нахождения контрольной суммы, предназначенный для проверки целостности данных. Другая проверка происходит на уровне соединения между USB и последовательным интерфейсом микроконтроллера (каждый блок данных, переданных через USB имеет свой CRC). Если какое-то сообщение будет повреждено, оно выявляется и исправляется на этих уровнях. Маловероятно, что что ваш скетч будет записан неправильно в Arduino, после того, как вы нажмете Загрузить.

 

Почему это важно?

Многие скетчи занимают несколько тысяч байт и, выключив проверку, вы сэкономите лишь несколько секунд при их загрузке. Но сколько раз вы загружаете скетч, когда вы работаете над проектом? 10 раз? 50? И над сколькими проектами вы могли бы работать? Некоторые, наверное, загрузили уже десятки тысяч скетчей. Теперь умножьте на казалось бы незначительную экономию при загрузке и вы получите внушительное количество сэкономленного времени. В любом случае, будет точно не хуже, если вы меньше времени будете тратить на наблюдение за миганием светодиодов на TX и RX.

 

Случаи, при которых проверка не помешает

Так выглядит ошибка при проверке в Arduino IDE
Так выглядит ошибка при проверке в Arduino IDE

В некоторых случаях вы, возможно, все же захотите проверить свой ​​код. Если вы собираетесь поместить Arduino в спутник или в какой-либо другой ответственный проект, вы можете спать спокойнее, зная, что загруженный в него код является корректным. Если вы подкючаетесь к Arduino при помощи 15-метрового USB-кабеля или у вас провод длиной 2 км при передаче через интерфейс RS485, вы, возможно, захотите произвести проверку после загрузки своего скетча. Хотя также маловероятно, что ошибка проскочет через проверку контрольных сумм, так что решайте сами делать проверку или нет.

 

На каких платах этот трюк работает?

Это работает с любой платой Arduino, которая использует соединение последовательное USB-соединение (Uno, Mega, Pro Mini, LilyPad Simple, Fio и т.д.). Эти все платы используют один и тот же загрузчик avrdude, в котором по умолчанию устанавливается флаг проверки.

Любые платы, использующие загрузчик Catarina (Leonardo, Micro и т.д.) или загрузчик Halfkay (платы Teensy) имеют гораздо более быстрее загрузчики, и для них преимущество в скорости неочевидно.

Еще раз повторюсь, что вероятность пропуска ошибки в процессе минимальна, а поэтому, вполне можно довериться компилятору и снять этот флажок!

Источник: Sparkfun

[add_ratings]

Оставить ответ

Ваш email не будет опубликован.Обязательны поля помечены *