Я использую 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), но как новичок я понятия не имею, что это такое.
источник
Ответы:
Вы правы, программировать AVR довольно легко. Это просто пользовательский протокол, реализованный поверх SPI, работающий при низком напряжении. СКК нужен.
Тем не менее, программирование старых PIC (и программирование не ISP AVR) требует высокого напряжения и другого пользовательского протокола. Это требует специального аппаратного программиста.
Другие устройства более сложные. Большинство микроконтроллеров ARM должны быть запрограммированы через JTAG, здесь память записывается напрямую, а процессор получает команду записи на флэш-память. Опять же, каждое устройство отличается.
источник
Я провел много исследований и готовлюсь начать играть с AVR, но я никогда не использовал их, так что это может быть неправильно, но:
Большинство дешевых программистов не будут поддерживать программирование высокого напряжения AVR. Это необходимо, если контроллер настроен как непрограммируемый с помощью битов предохранителей, или если вы каким-то образом допустили серьезные ошибки и вам нужно сбросить его на значения по умолчанию и так далее.
источник
Большинство дешевых программистов AVR просто синхронизируют последовательные интерфейсы с линией сброса. Вы можете использовать FT232 для последовательного подключения периферийного интерфейса (SPI). FT232 предназначен для асинхронной последовательной передачи, а не для синхронизации, поэтому все это делается программно.
Вы можете просто загрузить загрузчик типа arduino, который позволит вам загружать код через асинхронный последовательный интерфейс с использованием ft232 в обычном режиме или любой асинхронный последовательный интерфейс с использованием преобразователей уровня по мере необходимости. Только не забудьте использовать правильный загрузчик для вашей тактовой частоты и правильно установить байты предохранителей.
источник
Многие программируемые устройства исторически требовали, чтобы они были запрограммированы с использованием относительно точно синхронизированных последовательностей сигналов. Во многих случаях, если бы кто-то хотел запрограммировать только один конкретный тип устройства, требуемое оборудование было бы довольно простым, но, поскольку разные устройства предъявляли разные требования, создание программиста более общего назначения было несколько сложнее.
Сегодня, вероятно, можно запрограммировать более 50% программируемых устройств, используя не более, чем кабель ввода-вывода USB и программное обеспечение для ПК, но «аппаратные» программисты все еще имеют значительное преимущество в скорости. Чтобы ПК реагировал на сигнал, полученный устройством USB, и отправлял ответ, обычно требуется минимум 1-2 миллисекунды. Если для последовательности программирования требуется неоднократно запрашивать устройство, когда оно готово к следующему фрагменту данных, а затем отправлять его, использование простого кабеля ввода-вывода добавит дополнительные одну или две миллисекунды ко времени, необходимому для обработки каждого фрагмента. В зависимости от природы рассматриваемого устройства, это может увеличить общее время, требуемое для программирования, на порядок по сравнению с программистом, который может получить информацию, ожидая, когда устройство будет готово, что оно должно делать, когда оно есть.
Лично мне нравится подход, когда устройства, оснащенные флэш-памятью, поставляются с завода с загрузчиком в памяти, который можно использовать с минимумом аппаратного обеспечения программирования. Если устройство поддерживает программирование флэш-памяти под управлением программного обеспечения, такой подход может упростить производство, не добавляя ничего к стоимости кремния, за исключением очень небольшого предельного времени, необходимого для установки программы заводского тестирования в загрузчике после того, как оно выполнит все остальное. ,
источник