Навіщо нам потрібні апаратні програмісти?


22

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

Я був дуже щасливий, як тільки я взяв свого робочого програміста і змусив крихітне моргати. Однак зараз мій бідний боардуїно застряг у програмуванні.

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

Навіщо мені потрібен апаратний програміст, щоб просто передавати серійні? Я маю на увазі, припустимо, я готовий натиснути кнопку скидання пальцем замість використання ІМС. Залишилося послідовно надсилати та отримувати, тому мені потрібно лише три дроти GND, RXD і TXD. Чорт, якщо у мене є лінія "DTR" або будь-що інше, можна навіть натиснути кнопку скидання за допомогою послідовного кабелю.

Чому існують усі ці апаратні рішення, які також потребують вигадливого програмного забезпечення (наприклад, AVRdude, або AVR studio чи інше)?

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

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

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

Я впевнений, що є вагомі причини (це не так, як я написав програмне забезпечення або почав виготовляти USB-програміст перетягування n-drop), але як новачок я не маю поняття, що це таке.


Чи дозволяє ваш програмний апаратник для домашнього приготування дозволити налагодження? Можливо, ви самі добре програмуєте, але вам знадобиться апаратний програміст, якщо ви хочете робити налагодження на мікросхемі (встановлення точок прориву в коді та зупинення виконання, коли ви досягнете цієї точки), оскільки ця операція може робити смішні речі з лінією скидання.
Джоель Б

1
Щось, що може вас потішити
binarysmacker

Відповіді:


18

Ви маєте рацію, програмувати AVR досить просто. Це просто спеціальний протокол, реалізований поверх SPI, який працює при низькій напрузі. SCK потрібен.

Однак для програмування старих PIC (та не для ISP AVR програмування) потрібні високі напруги та інший спеціальний протокол. Для цього необхідний спеціальний апаратний програміст.

Інші пристрої складніші. Більшість мікроконтролерів ARM повинні бути запрограмовані через JTAG, тут пам'ять записується безпосередньо, і процесор доручає записувати на спалах. Знову ж таки, кожен пристрій відрізняється.


Будь-які ідеї, чому вони настільки складніші? Шлях AVR (Низька напруга, стандартний протокол) здається набагато більш розумним, ніж вимагати користувальницького програміста (як, наприклад, цей хлопець, який потребує програміста 8051/8052 - допомога потрібна, доступний реп! Electronics.stackexchange.com/questions/4104 )
Кевін Вермер

2
Насправді немає нічого особливого або дорогого у програмах PIC; багато дизайнів доступні в Інтернеті, і більшість нових ПІК можуть бути запрограмовані з низькою напругою.
akohlsmith

4
Виробники ІС не дуже цікавляться тим, наскільки складним є щось для любителів. Поки його можна використовувати у виробництві великої кількості, інакше справа стосується витрат.
ендоліт

2
Першим було там програмування високої напруги, це було способом програмування EPROM, що стирається УФ, у вісімдесяті роки (та мікроконтролери, що містять такі EPROM).
starblue

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

5

Я робив багато досліджень і готуюся почати грати з AVR, але ніколи насправді не використовував, тому це може бути неправильно, але:

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


2
Програмісти низької напруги, такі як AVRISP mkII [1] або USBtinyISP [2], можуть бути використані для встановлення запобіжників з avrdude або іншими програмістами, але вони не можуть зберегти AVR-чіп, який був зроблений незавантажуваним або перетворив його лінію скидання GPIO. Для цього вам потрібен програміст високої напруги. [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor

@blalor У світлі цієї інформації я відредагую свою відповідь.
AndrejaKo

Я бачив деякі вказівки щодо створення програміста високої напруги (а в аркуші для мікросхеми, мабуть, є досить детальні інструкції щодо його проектування), але я чекаю, поки я закладу одну зі своїх мікросхем, поки не спробую. Мої осцилятори приїдуть сюди завтра, тож я незабаром спалю запобіжники та спокушаю цегляну фею!
Джек Шмідт

Примітно, що avrdude двічі перевіряє ваші біти запобіжника, щоб запобігти цій проблемі. Трохи більш поширеною проблемою є встановлення мікросхеми на зовнішній годинник.
Янна Верньє

4

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

Ви можете просто завантажити завантажувач типу arduino, який дозволить вам завантажувати код через послідовний інтерфейс async, використовуючи ft232 у звичайному режимі, або будь-який послідовний інтерфейс async, використовуючи перетворювачі рівнів, якщо це необхідно. Просто не забудьте використовувати правильний завантажувач для вашої тактової швидкості та правильно встановити байти запобіжника.


1

Багато програмованих пристроїв історично вимагали, щоб вони були запрограмовані, використовуючи відносно точно встановлені послідовності сигналів. У багатьох випадках, якби хотілося запрограмувати лише певний тип пристроїв, необхідне обладнання було б досить простим, але оскільки різні пристрої мали різні вимоги, побудувати програміста загального призначення було дещо складніше.

Сьогодні, ймовірно, можна запрограмувати понад 50% програмованих пристроїв, використовуючи не більше USB-кабелю та програмного забезпечення для ПК, але "апаратні" програмісти все ще мають значну перевагу в швидкості. Для того, щоб ПК реагував на сигнал, отриманий USB-пристроєм, і надіслати відповідь, як правило, потрібно мінімум 1-2 мілісекунди. Якщо послідовність програмування вимагає багаторазового запитання пристрою, коли він готовий до наступного фрагменту даних, а потім його надсилання, використання простого кабелю вводу / виводу додасть додаткових мілісекунд або двох часу, необхідного для обробки кожного фрагменту. Залежно від природи відповідного пристрою, це могло б збільшити загальний час, необхідний для програмування, на порядок порівняно з програмістом, про який можна було сказати, очікуючи, що пристрій буде готовий, що він повинен робити, як тільки він є.

Особисто мені подобається підхід пристроїв із флеш-пам’яткою, що постачаються з заводу із завантажувачем у пам’яті, який можна використовувати з мінімальним обладнанням для програмування. Якщо пристрій підтримує програмування флеш-систем під управлінням програмним забезпеченням, такий підхід може спростити виробництво, не додаючи нічого до вартості кремнію за дуже малий граничний час, необхідний для того, щоб програма заводу-тестового кріплення в завантажувачі після того, як вона зробила все інше .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.