Зачем нам аппаратные программисты?


22

Я использую Boarduino и 30-рядную макетную плату для программирования своей ATtiny. Я загружаю не слишком сложный скетч, называемый ArduinoISP (теперь он включен по умолчанию в Arduino IDE), и вдруг у меня появляется работающий программист. Atmel продает хорошего программиста за 30-40 долларов, и есть множество наборов для создания более дешевых.

Я был очень счастлив, когда получил своего работающего программиста и заставил крошечного моргнуть несколькими светодиодами. Однако, теперь мой бедный boarduino застрял на обязанности программиста.

Насколько я могу судить, этот программист удерживает нажатой кнопку сброса, а затем передает и принимает сигналы MOSI и MISO. Я думаю, что SCK не используется или, по крайней мере, не нужен. (Согласно спецификации ATtiny необходим SCK, мой программист не работает без него, и я не могу найти место, которое, как мне показалось, я прочитал, не нужно).

Зачем мне аппаратный программист, чтобы просто передавать последовательный? Я имею в виду, давайте предположим, что я хочу удерживать кнопку сброса пальцем вместо использования IC. Все, что осталось - это последовательная отправка и получение, поэтому все, что мне нужно, это три провода GND, RXD и TXD. Черт возьми, если у меня есть линия «DTR» или что-то еще, вы можете даже удерживать кнопку сброса с помощью последовательного кабеля.

Почему существуют все эти аппаратные решения, которые также требуют модного программного обеспечения (например, AVRdude, или AVR studio, или что-то еще)?

Я имею в виду, что мог бы понять маленький USB-кабель, который представлял микроконтроллер как устройство хранения данных и позволял вам перетаскивать двоичные файлы для программирования (например, на эту плату разработки ARM ). Только аппаратное обеспечение с использованием стандартных драйверов программного обеспечения.

Я также мог понять только программное решение (по модулю подключать провода от USB к чипу, используя что-то вроде чипа FTDI, чтобы упростить то, что идет по проводам). Весь причудливый протокол программирования будет обрабатываться программным обеспечением на компьютере, а аппаратное обеспечение будет просто проводом.

Почему у нас есть (сложное) программное и аппаратное обеспечение? Я имею в виду, насколько я могу судить, программирование микроконтроллеров довольно просто, но когда я только начинал в этом разбираться, я действительно беспокоился о том, как я собираюсь когда-либо покупать чип от mouser или digikey, не платя гуру за программирование загрузчика для меня.

Я уверен, что есть веская причина (это не значит, что я написал программное обеспечение или начал производство USB-программатора с технологией drag-n-drop), но как новичок я понятия не имею, что это такое.


Ваш домашний аппаратный программист разрешает отладку? Вы могли бы хорошо программировать в одиночку, но вам понадобится аппаратный программист, если вы хотите выполнять отладку на кристалле (устанавливая точки останова в коде и останавливая выполнение при достижении этой точки), так как эта операция может делать забавные вещи со строкой сброса.
Джоэл Б

1
Что-то, чем вы можете быть удивлены, hackaday.com/2013/05/10/…
binarysmacker

Ответы:


18

Вы правы, программировать AVR довольно легко. Это просто пользовательский протокол, реализованный поверх SPI, работающий при низком напряжении. СКК нужен.

Тем не менее, программирование старых PIC (и программирование не ISP AVR) требует высокого напряжения и другого пользовательского протокола. Это требует специального аппаратного программиста.

Другие устройства более сложные. Большинство микроконтроллеров ARM должны быть запрограммированы через JTAG, здесь память записывается напрямую, а процессор получает команду записи на флэш-память. Опять же, каждое устройство отличается.


Есть идеи, почему они намного сложнее? Способ AVR (низкое напряжение, стандартный протокол) кажется гораздо более разумным, чем требующий специального программиста (как этот парень, которому нужен программист 8051/8052 - требуется помощь, доступен представитель! Electronics.stackexchange.com/questions/4104 )
Кевин Вермеер

2
В PIC программистах нет ничего особенного или дорогого; Многие проекты доступны в Интернете, и большинство новых PIC могут быть запрограммированы низкого напряжения.
Akohlsmith

4
Производители микросхем на самом деле не заботятся о том, насколько сложным для любителей заниматься. Пока это может использоваться в производстве большого количества, это - все о стоимости.
эндолит

2
Сначала было высоковольтное программирование, это был способ программирования стираемых УФ-ПЗУ в восьмидесятых (и микроконтроллеров, содержащих такие ППЗУ).
звездный синий

Исправлено требование SCK. Мне нравится идея, что нужен только SPI, но поскольку на компьютерах нет порта SPI (и, черт возьми, в кабеле FTDI уже есть микросхема за 4 доллара !!), мы могли бы также потратить деньги на микроконтроллер за 2 доллара. Аргумент JTAG о загрузке и отладке продал мне все преимущества доски разработки в целом, и я думаю, что у endolith есть хорошая мысль, что никого не волнует, на что я потрачу свои 20 долларов; производители заботятся о том, на что настоящие инженеры (и их работодатели) собираются потратить свой бюджет.
Джек Шмидт

5

Я провел много исследований и готовлюсь начать играть с AVR, но я никогда не использовал их, так что это может быть неправильно, но:

Большинство дешевых программистов не будут поддерживать программирование высокого напряжения AVR. Это необходимо, если контроллер настроен как непрограммируемый с помощью битов предохранителей, или если вы каким-то образом допустили серьезные ошибки и вам нужно сбросить его на значения по умолчанию и так далее.


2
Программисты низкого напряжения, такие как AVRISP mkII [1] или USBtinyISP [2], могут использоваться для установки предохранителей с помощью avrdude или других программистов, но они не могут сохранить микросхему AVR, которая была сделана не загружаемой или в которой линия сброса была превращена в GPIO. Вам нужен программист высокого напряжения для такого рода вещей. [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
блалора

@blalor В свете этой информации я отредактирую свой ответ.
AndrejaKo

Я видел некоторые инструкции по созданию программатора высокого напряжения (и в таблице данных для чипа, похоже, есть довольно подробные инструкции по его созданию), но я жду, пока не поцарапаю одну из своих микросхем, пока не попробую. Завтра мои осцилляторы попадут сюда, так что я скоро сожгу взрыватели и соблазню кирпичную фею!
Джек Шмидт

Примечательно, что avrdude перепроверяет ваши биты предохранителей, чтобы предотвратить эту проблему. Немного более частая проблема - установка чипа на внешние часы.
Янн Вернье

4

Большинство дешевых программистов AVR просто синхронизируют последовательные интерфейсы с линией сброса. Вы можете использовать FT232 для последовательного подключения периферийного интерфейса (SPI). FT232 предназначен для асинхронной последовательной передачи, а не для синхронизации, поэтому все это делается программно.

Вы можете просто загрузить загрузчик типа arduino, который позволит вам загружать код через асинхронный последовательный интерфейс с использованием ft232 в обычном режиме или любой асинхронный последовательный интерфейс с использованием преобразователей уровня по мере необходимости. Только не забудьте использовать правильный загрузчик для вашей тактовой частоты и правильно установить байты предохранителей.


1

Многие программируемые устройства исторически требовали, чтобы они были запрограммированы с использованием относительно точно синхронизированных последовательностей сигналов. Во многих случаях, если бы кто-то хотел запрограммировать только один конкретный тип устройства, требуемое оборудование было бы довольно простым, но, поскольку разные устройства предъявляли разные требования, создание программиста более общего назначения было несколько сложнее.

Сегодня, вероятно, можно запрограммировать более 50% программируемых устройств, используя не более, чем кабель ввода-вывода USB и программное обеспечение для ПК, но «аппаратные» программисты все еще имеют значительное преимущество в скорости. Чтобы ПК реагировал на сигнал, полученный устройством USB, и отправлял ответ, обычно требуется минимум 1-2 миллисекунды. Если для последовательности программирования требуется неоднократно запрашивать устройство, когда оно готово к следующему фрагменту данных, а затем отправлять его, использование простого кабеля ввода-вывода добавит дополнительные одну или две миллисекунды ко времени, необходимому для обработки каждого фрагмента. В зависимости от природы рассматриваемого устройства, это может увеличить общее время, требуемое для программирования, на порядок по сравнению с программистом, который может получить информацию, ожидая, когда устройство будет готово, что оно должно делать, когда оно есть.

Лично мне нравится подход, когда устройства, оснащенные флэш-памятью, поставляются с завода с загрузчиком в памяти, который можно использовать с минимумом аппаратного обеспечения программирования. Если устройство поддерживает программирование флэш-памяти под управлением программного обеспечения, такой подход может упростить производство, не добавляя ничего к стоимости кремния, за исключением очень небольшого предельного времени, необходимого для установки программы заводского тестирования в загрузчике после того, как оно выполнит все остальное. ,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.