Re: Avrdude для Linux
Добавлено: Пт янв 31, 2025 19:10:24
ppp, Спасибо за файл - переделал прогу, теперь все в хранится в xml
https://gitflic.ru/project/athosnm/avrprogrammer
https://gitflic.ru/project/athosnm/avrprogrammer
Код: Выделить всё
cd LavrProg/languages
rm -fr *Gtk2.ru.po *Qt5.ru.po *Qt6.ru.po
ln -sf lavrprog.ru.po lavrprogGtk2.ru.po
ln -sf lavrprog.ru.po lavrprogQt5.ru.po
ln -sf lavrprog.ru.po lavrprogQt6.ru.po
cd -как пример, выхлоп/запуск программы, на системе, где нет установленной "подобной" библиотеки:должна быть установлена библиотека-прослойка qt4pas/qt5pas/qt6pas
Код: Выделить всё
$ ./lavrprogQt6
./lavrprogQt6: error while loading shared libraries: libQt6Pas.so.6: cannot open shared object file: No such file or directoryКод: Выделить всё
- export
- shell wrapper
- PREFFIX
- LD_LIBRARY_PATH
- linux sysadmin book's & etc...Код: Выделить всё
/etc - системные настройки
/bin
/lib
/opt - альтернативный каталог для "блоб/все в одном" установокКод: Выделить всё
/usr/bin
/usr/lib
/usr/share - настройки/конфиги и прочее "нечто"Код: Выделить всё
~/ - дом.каталог
~/bin - бинарники и прочее
~/opt - альтернативный каталог для "блоб/все в одном" установок
~/.config - настройки/конфиги и прочееКод: Выделить всё
/lib
/usr/libКод: Выделить всё
~/opt/app-name
~/bin/app-nameКод: Выделить всё
~/bin/app-nameКод: Выделить всё
~/bin/app-name/bin
~/bin/app-name/lib
~/bin/app-name/lang
~/bin/app-name/etc~/bin/app-name.sh
Код: Выделить всё
#!/bin/bash
P=~/bin/app-name/
BIN=$P/bin
LIB=$P/lib
LNG=$P/lng
export PATH="$BIN:${PATH}"
export LD_LIBRARY_PATH="${LIB}:${LD_LIBRARY_PATH}"
#
# etc set/cmd env... :o)
#
$BIN/app-name "$@"
Код: Выделить всё
export PATH=~/bin:${PATH}
Код: Выделить всё
LD_LIBRARY_PATH="./:${LD_LIBRARY_PATH}"Код: Выделить всё
///////////////////////////////////////////////////////////////////////////////
исходные косяки/непонятки/недоработки
///////////////////////////////////////////////////////////////////////////////
1. /dev/-устройство в линуксе
в линкусе arduino цепляется по умолчанию к
/dev/ttyUSBx - переходник USB-to-COM (дешевые модели)
/dev/ttyACMx - натуральная arduino (фирменный дизайн с atmel-8 чипом на порту)
все фирменные программаторы/отладчики (в данном случае) - цепляются к своим usb/hide портам.
avrdude - в курсе и знает куда цепляться
т.е. нормально работает, если указать в поле порт: -P usb
2. поля ввода/кнопки выбора avrdude-bin/avrdude-conf
- что-то тупит (разбираться не стал, сделал по своему)
- не воспринимает тильду '~'
--> починил
3. кнопка Read (cells calibration)
нет выхлопа в "терминал"
--> починил
4. параметр '-u' - wrong argument
--> заменил на [-v|--verbose] Verbose output
///////////////////////////////////////////////////////////////////////////////
TO DO - туду или нетуду :о)
///////////////////////////////////////////////////////////////////////////////
0. ОК - общий рефакторинг кода :о)
1. OK
кнопка Abort - аварийный сброс/зависание
2. OK
если fuse читаются как нули (arduino/usb-port, все мои версии) - происходит исключение в системной библиотеке
сделал/отследил/установил RET_CODE
3. OK
добавил в Atmega328PB (копия 328-го, без уточнения "деталей")
4. OK
сообщения в "терминал"
- шапка с настройками
- в конце вывод RET_CODE
- автопрокрутка на последнюю строку, что-бы сразу видеть результат команды (прям кровь из носу необходимая фишка)
+
SO-SO...(вроде да, а вроде хрен-пойми как работает)
txtTerminal - автоскролл немного странно работает, на кнопках
write, read - без проблем
verify & fuse_x - как-то странно и через раз
предполагаю из-за особенностей реализации LCL/Lazarus под разные платформы (они и глючат по разному :о)
5. NO
текст с ошибками в "терминале"
ConsoleToMemo()
иногда, когда отлавливается отсутствие файла - и до ConsoleToMemo() не доходит дела,
то текст в терминале не стирается а добавляется
--> не стал "думать" - пусть остается как есть.
6. NO
косяк/глюк LCL?
ConsoleToMemo() - проблема с курсором (в gtk-версии), если avrdude не может подконнектить к чипу(arduino).
7. OK
RET_CODE/анализ
ManualFuse()
btnReadFuseClick() - обработчик нажатия, т.е. не возвращает результат, а тут, в принципе, можно выдать ERROR_LEVEL
надо подумать над этим
-->
добавил во все обработчики кнопок - формирователи (где возожно) RET_CODE
8. OK
кнопки Write/Verity/Read
продумать "политику" с VOID/DEV_NULL файлом
оформить в функцию
9. OK
кнопка очистки терминала
10. NO
шоткат очистки терминала:
с 2м кликом у нас аблом:
TPageControl - не отслеживает это событие
TMemo - отслеживает по своему, очень не удобно: сначало надо кликнуть по самому полю, что-бы оно "поймало фокус" и
только потом срабатывает 2х клик, в реале это выглядит как 2 раза надо сделать 2й клик... не удобно
--> пока отложил
11. OK
сохранение: шрифт/размер (терминал & GUI)
12. OK
- убрал лишнюю проверку, связанную с "каталогами"
- дополнительная пред/проверка/обработка имен каталогов (именно имен, вбитых в текстовые поля, а не ПУТИ)
- правильная обработка тильды: '~' -> HOME
13. ОК
сохранение: позиции, размеров формы
14. ОК
programmer.xml
- доработаны старые устройства согласно источникам и собственным наработкам
- добавлено новые программаторы/отладчики
- доб. параметр 'add' - для дополнительных/кастомных настроек avrdude
- создал "громадные" и кастомный конфигураторы
programmer.xml.huge1 (большой)
programmer.xml.huge2 (еще чуть поболее)
programmer.xml.mini (для себя, минимальный набор)
15. OK
обработать ошибки при чтении xml-файлов
16. OK
добавил строку кастомных команд avrdude
17. OK - programmer.xml
добавил параметр для arduino-платы с кастомным контроллером
arduino -> chip="ATmega328PB"
arduino mega -> chip="ATmega2560"
--> автоустановка на соотв. контроллер, при выборе arduino.
18. ОК
check-box вкл/выкл автоскрола терминал-текста
19. OK
на кнопку ERASE - добавить доп. диалог/подтверждение
20. OK
разрешил немного програмке свободнее "дышать" (т.е. изменять размеры)
особенно полезно растянуть терминал с выхлопом что-бы удобно читать/наблюдать за процессом/ошибками.
21. OK
ConsoleToMemo()
- переписал, что-бы не было фатальной фрагментации памяти.
- уменьшил размер буфера с неприлично-гогромного до прилично-подходящего
- добавил фильтр на esc-последовательности, что-бы не мусорить в "терминал"
22. ОК
блокировка во время выполнения "работы"
+
работу с языковыми файлами не проверял/не тестировал
///////////////////////////////////////////////////////////////////////////////