Проба пера с AVR под Linux. Avrdude + AVRDUDESS
Сегодня решил наконец прикрутить к своей второй машинке ftdi программатор. Но на ней только 12.04 Убунта. Пришлось немного поразбираться как там шить аврки. Плюс хотелось какой нить GUI. Остановился на AVRDUDESS (спасибо товарищу с именем Zak Kemble blog.zakkemble.co.uk/).
Необходимо проделать следующе действия:
Убедится что в каталоге /etc появился конфиг avrdude.conf и добавить в него следующие строки (пример для моего программатора):
Если используете другую распиновку в своем FTDI программаторе, то соответственно поменяйте.
Запуск приложения:
mono avrdudess.exe
Картинка стырена с сайта автора
Комментарии ( 46 )
Работа в консоли через Makefile несет правоту собственных действий при решении различны проблем в работе. Это самая твердая почва. Ты сам контролируешь весь свой мир. Это мощно.
Не надо бояться, что на освоение базовых принципов функционирования утилиты make нужно затратить не много времени. Нужно просто начать ее осваивать. Просто «поиграться» пару часов с ее возможностями. А по прошествии недели или месяца станет понятно — ни какие ГУИ нафиг не нужны! Все эти ГУИ от Лукавого. Это Антураж. Это как обязательность для какой-нибудь блондинки наличия у ее авто капота, прикрывающего страшно-рычащий грязно-замасленный двигатель. Это как обязательность закрытого системного блока в компе. (У меня у всех системников крышки сняты! Я не ханжа, мне так удобнее эксплуатировать комп.)
У себя в блоге я много раз писал на тему Линукса, консоли и Makefile-ов.
Ну, будем считать, что со мной всё ясно (Хотя я ничего и не понял.)
Теперь для полноты картины, охарактеризуй себя как-нибудь. А то не понятно, кто ты — пацак, чатланин? Кто? Должны же мы как-то друг друга квалифицировать. Я вот, например, затрудняюсь, вот так, сходу определять генотип собеседника.
«Нет, генацвале! Когда у общества нет цветовой дифференциации штанов, то нет цели!» (с)
навешивание ярлыков — удел недалеких людей.
Да. Я тоже так считаю.
— Павлины (МЛМ), говоришь. Х-хы! (с) из к/ф «Белое солнце пустыни»
Вы произнесли слово «прогресс». Но что оно означает? А если об этом подумать в контексте Виндовса? А в контексте Линукса?
Виндовс развивается в своем направлении — управление программами с помощью мышки. Ставка делается на графические примитивы — кнопки, менющки и другие графические элементы. Считается, что если пункта меню нет или нет кнопки, то и у пользователя нет возможности вызвать то или иное действие в программе. Это в некоторой степени гарантирует безопасность (сохранность, работоспособность) программы. Нельзя сделать того, чего не отражено на экране. Поэтому пользователь может безопасно нажимать любые кнопки до которых он сможет дотянуться. С другой стороны, всё спрятано под капотом, а это значит — мир, видимый пользователем, упрощается. А поскольку все (до поры до времени) работает, то возникает ложное чувство, что пользователь полностью контролирует систему.
Прогресс в Линукс происходит не только в направлении графического интерфейса (вспомним Убунту), но и в направлении консольной функциональности. Считается, что пользователь неплохо разбирается в системе и способен руками набрать любые нужные ему команды. Что же касается опасных команд, могущих сломать систему или как-то помешать другим пользователям (не зыбываем, что Линукс — это многопользовательская ОС), то они убраны от неопытных пользователей. Количество консольных команд (и их вариаций с помощью флагов), которые набираются на клавиатуре — просто огромно! Практически невозможно изобразить из с помощью меню, кнопочек, выпадающих списков и всплывающих диалоговых окон. Поэтому у пользователя поле для выбора действий чрезвычайно широко. Широкое поле выбора влечет за собой такую же сложность в работе.
К счастью, в Линуксе существуют также способы для уменьшения сложности в управлении. В частности — утилита make и сопутствующие Makefile-ы. Сюда же относятся и всевозможные скрипты.
Линукс — это не аналог Виндовса. Для какой-нибудь блондинки, для секретаря-референта эти две операционки — почти одинаковые. Но для нас — для программистов и разработчиков эти операционки разные!
Они, конечно, частично перекрывают возможности друг друга. На Виндовсе есть консольное окно, а Линукс давно уже обзавелся графическим интерфейсом. Принципиальная разница между этими операционками в их способе предоставления пользователю управления разделяемыми (shared) ресурсами.
И вот тут возникает интересный вопрос. Допустим, мы пользуемся одинаковыми (по своемц назначению) программами в Виндовсе и Линуксе. В Виндовсе это будет IAR, а в Линуксе — тулчейн, состоящий из avr-gcc, avr-binutils, avrdude.
В случае с IAR, я даже не представляю, как я буду поступать. (Собственно, это один из тех критериев, которые подвигнул меня отказаться от Винды.) Но в случае с Линуксом, у меня созданы Makefile-ы, которые кочуют от проекта к проекту с небольшими изменениями. Я их кручу как хочу! Я могу с ними делать такие чудеса, которые для платформы Виндовс вообще могут быть недостижимы!
Принципиальная разница состоит в том, что глубина контролируемости (to control == управлять) на платформе Линукс значительно больше, чем на платформе Виндовс.
И когда мне на платформе Линукса нужно спрятать промасленный двигатель под розовенький капот, я это могу сделать сам. Без участия IAR и Майкрософт.
Понимаете, в чем дело — я много лет сидел под Виндой (писал проги как для самой Винды, так и для микроконтроллеров), и много лет провел под Линуксом. И я знаю и ту, другую платформы. Знаю их специфику, знаю их слабые и сильные стороны. И на основе своих знаний и личных требований к операционке, я выбираю Линукс. У каждого свои требования. И это означает только одно — каждый идет своим путём.
Я лишь говорю, что хорошая развитость консольных фичей в Линуксе ставит под сомнение использование графических программ. Поэтому, для те, кто владеет консолью, видят в ней только преимущества. А вот, люди из Виндовс-среды, консоль не знают. Они думают, что консоль Линукса чуть-чуть отличается от командной строки Виндовса. Нет! Это серьезное заблуждение!
Поэтому не утихают споры, что «Линукс не дотягивает до уровня Виндовс» (с). А позвольте спросить — по какому параметру? В области графических программ? А зачем этот подход, присущий Виндовс-платформе, нужнет в Линуксе? Тут свои средств много. Просто их Виндовс-пользователи не знают, и судят о Линуксе с позиции Виндовса.
Как в прочем некоторые товарищи, и на Виндовс пытаются натянуть Линукс-технологии. Я не говорю, что это абсолютно не верно. Просто Линукс и Виндовс — имеют несколько разный подход в понимании того, как управлять компьютером, поэтому перетаскивание технологий с одной платформы на другую зачастую приносит более скромные результаты.
У консольного интерфейса есть одна ооочень большая проблема — его надо изучать. Метод тыка там работает крайне плохо. Но для проф использования консоль необходима и удобна. Сам тащусь от консоли в автокаде, например, и Eagle.
«Линукс не дотягивает до уровня Виндовс» (с). А позвольте спросить — по какому параметру?
По интерфейсу 🙂 Чем проще интерфейс, тем больше пользователей, больше пользователей — больше стимула писать софта. Получается прямая связь развивающая систему. Так что без этого подхода «Присущего Виндовзу» Линкус так бы и останется системой написанной программистами для программистов и они там и будут вариться в собственном соку никому больше не нужные. Ну либо как чисто служебная система для серверов всяких. Обслуживать которую будет специально обученный на это профессионал, а не баба клава которая компьютер увидела месяц назад у дочки.
Собственно линух ща движется в правильном направлении постепенно развивая гуй до такой степени, чтобы консоль там была не нужна совершенно. Вот когда этой системой можно будет пользоваться вообще не зная о том, что там есть какая-то, тогда можно будет сказать, что система готова к массовой эксплуатации.
AVRDUDESS – A GUI for AVRDUDE
AVRDUDESS is a GUI for AVRDUDE, a tool for programming Atmel microcontrollers.
Some key features:
- Supports all programmers and MCUs that AVRDUDE supports
- Supports presets, allowing you to change between devices and configurations quickly and easily
- Drag and drop files for easy uploading
- Automatically lists available COM ports
- Cross-platform with the use of Mono for Linux & macOS
Downloads
Source available on GitHub
Requirements
Windows
Requires .NET Framework 2.0 SP1 or newer. All systems since Windows Vista will have the required version already installed.
Linux & macOS
Can be ran using Mono.
Has not been tested on macOS, but should work. Might need the —arch=32 argument.
mono —arch=32 avrdudess.exe
Installing on Ubuntu 18.04
Install Mono (this is the minimum required, you can use mono-complete for a full install):
sudo apt-get install libmono-system-windows-forms4.0-cil
On older versions of Ubuntu you might need to use libmono-winforms2.0-cil instead.
Install AVRDUDE and AVR-GCC (for avr-size):
sudo apt-get install avrdude gcc-avr
Run AVRDUDESS with mono, you might have to run as root (sudo) so that AVRDUDE can access ports if you haven’t changed any permissions or rules.d stuff:
mono avrdudess.exe
463 comments
32 pings
I’m getting this error when i launch Avrdudess.exe on windows 7 Pro. It used to work fine up until recently. I tried both the installer and portable version still the same error. I tried disabled the AV still not working. I also tried another pc and it loads fine any idea why it doesn’t work on this computer anymore? Thanks
ERROR: avrdude is missing!
>>>: avrdude
Hi Dave, in options make sure the avrdude location is blank so it tries to find it automatically. If it’s already blank then try setting it to the install location of avrdudess.
Thank you, I empty that field an it works now.
Hey Zak,
Is there a way to encrypt a hex file or an arduino code and upload it. Handy when sharing files but not the code itself.
Hi George, hex files don’t contain your original code, but compiled code (in Intel Hex format). It can be disassembled, but then you end up with assembly code. If you really want to encrypt your stuff then you’ll need a bootloader that can decrypt it when uploading to the Arduino, like this one https://github.com/sirgal/AVR-EAX-AES-bootloader
Make sure to set the lock bits so that the decrypted code can’t be read from the flash afterwards.
I just ran into a problem I don’t remember having before. I can load an Nano with the ch340 chip from the arduino ide, but it hangs in Avrdudess ver 2.12. Does avrdudess recognize the port with the ch340? I don’t remember if I loaded a nano this way before.
The CH340 shows as a standard serial port so there shouldn’t be any issues there. Are you able to press stop when it hangs, and does it show anything in the console output?
Is there a way to load a preset automatically when it starts? I had set it up like this before, but I can’t remember how I did it. I don’t mean the “Load previous settings” Option. The presets always start with default and not with the last used preset.
Hey Micha, you can specify the preset to as the first command line argument – C:/path/to/avrdudess.exe «Your Preset Name»
Hi Zak. Thank you for your answer. But unfortunately I still don’t understand exactly how to do it. I created a preset for my USBasp programmer at Preset Manager. But every time I open avrdudess again, the preset is back to default. I can select my preset for my USBasp in the list, but I want it to be activated automatically when avrdudess starts. I’ve already looked in … \ AppData \ Roaming \ AVRDUDESS \ config (and) \ presets, but I can’t find a way to change it.
In older versions it would load your previously loaded preset (which would wipe any changes you did after loading the preset), but in newer versions it loads all of the previous settings instead (hex file, fuse settings, which options were ticked etc). Preset is set to Default, however it isn’t actually loading the Default preset (I should maybe set the preset box to a blank name). The best way to specify a preset to load when opening would probably be to create a new shortcut to avrdudess.exe, right click it and go to properties then at the end of the Target box add a space then the name of your preset in quote marks.
Hi Zak
The GUI is not showing up,but still exist in process list.
I have installed the AVRDUDESS portable on a new win10 and it showed the GUI OK.
I have changed the avrdude path to the arduino location.
And after restart The GUI is not showing up,but exist in process list.
I have tried also the installer version of AVRDUDESS but no change.GUI does not appear anymore.
What is the solution?
Hi Eitan, looks like you’ve found a bug! If AVRDUDESS can’t find avrdude.exe then it won’t be able to start up (arduino avrdude.exe is in arduino-x.x.x\hardware\tools\avr\bin , though AVRDUDESS already comes with its own avrdude.exe and .conf).
The easiest way to fix this is to go to C:\Users\USERNAME\AppData\Roaming\AVRDUDESS and delete config.xml.
Thanks Zak
It worked like a charm.
In the portable version, Why not putting the config.xml file in the same directory of the AVRDUDESS?
Best Regards
Eitan
Awesome 😀 Yea I forgot about making the portable version read from its own directory instead of the user data folders. That will be fixed in the next release.
I got “ERROR: Update check failed: Error: SecureChannelFailure (The authentication or decryption has failed.)” while I open the avrdudess application.
I tried to find a solution in google but unfortunately couldn’t find a proper solution for that.
Can you give me a solution? please..
This is usually caused by using an old operating system (like Windows XP) that does not support the newer encryption methods used by the web server.
[…] Saya mengunakan avrdudess, […] […] a mikrokontroller programozásával kezdtem. Ehhez egy Arduino-ISP programozót és az Avrdudess programot használtam. A mikrokontrollert egy próbapanel és 6db összekötő vezeték […] […] bir kristal veya internal kristali kullanacaksanız kristal değerine uygun sigorta ayarlarını AVRDUDES adlı yazılımla çipinize […]