|
|
|
Работа с AVR в Linux, Перехожу с Win на Linux |
|
|
|
May 6 2008, 18:40
|
Участник
Группа: Участник
Сообщений: 60
Регистрация: 11-07-06
Из: Челябинск
Пользователь №: 18 726
|
Цитата(Kudlay Roman @ May 4 2008, 23:25) Доброго времени. Поставил несколько IDE для работы с avr, все используют avr-gcc, опыта программирования МК не имею, так что вместо зубрения даташитов предпочел поиск готовых либ для работы со всякой всячиной. В итоге был неприятно удивлен, что ни одна либа из опробованных не подошла. Вот собственно и вопрос: Что avr-gcc такой урезанный или чего у меня нет, и вообще, где искать либы для него? Так к примеру надо работать с HD44780 но при подключении всевозможных lcd44780.c lcd44780.h lcd.h hd44780lib.c LCD.HD4478.Driver.h разных версий получаю ошибки типа отсутствия заголовочных файлов, неправильных типов, ошибки синтаксиса. В итоге уже начал писать код с даташита. Я верю, что это хороший компилятор, неужели он так сильно уступает многим другим. Цитата(Kudlay Roman @ May 6 2008, 20:41) Имелось в виду, что большинство готовых библиотек на сях написано для других компиляторов, следовательно, для gcc-avr этот код надо еще портировать, многих заголовочных файлов у меня не нашлось. Datasheets + Карниган и Ричи Вам помогут PS. по gcc под avr есть отдельная ветка форума
Сообщение отредактировал kaf - May 6 2008, 18:45
|
|
|
|
|
Sep 6 2008, 21:45
|
фанат Linux'а
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008
|
На Linux'е торчу уже давно Но попробовать работать с AVRками под Linux нашел время только сейчас. Имеется atmega16 и 32 + avr-jtag-usb. Столкнулся с такой проблемой: тут говорят что можно воспользоваться DDD для удобства отладки по JTAG: http://www.oshec.org/articles/otladka-avr-...-avr-pod-linuh/ (хотя конечно удобнее прикрутить CodeBlocks для этой цели, но это потом ). Этот ddd не видит где лежит исходник и не понимает на каком языке написана программа. В последствии я выяснил что и просто avr-gdb не видит где исходник и какой язык использовался (Си или асм), в самом ELF файле я нашел какие-то левые пути и файлы с расширением .s ... Как правильно компилировать, чтобы в .efl помещалась правильная инфа об исходных файлах программы и их именах? ЗЫ Сама заливка программы и начало отладки происходит без каких-либо ошибок и даже можно брейкпоинты ставить и прочее делать. Просто хочется производить отладку видя исходник, иначе очень трудно... Добавил: Сам разобрался. Надо компилировать с опцией -g и тогда оно засунет в .elf правильные пути ко всем исходникам
--------------------
|
|
|
|
|
Mar 19 2009, 20:16
|
Местный
Группа: Свой
Сообщений: 202
Регистрация: 22-06-08
Из: Краснодарский край
Пользователь №: 38 488
|
Цитата(GDI @ Jun 25 2007, 16:14) Присоединил файл , правда от Prottosa там только само железо, а прошивка сделана из проекта MyDoper (не мой) который присоединен в ветке http://electronix.ru/forum/index.php?showtopic=18676, для работы в Линукс этот проект пришлось поправить как я описывал выше, чтобы включить поддержку HID. После прошивки программатор становится stk500v2, что и нужно установить в ключе -P для AVRDUDE, ключ -p(ort) установить порт avrdoper. т.е. Строка запуска будет выглядеть примерно так.. Код avrdude -P stk500v2 -p avrdoper и далее по тексту. Спасибо за прошивку. Давно искал чем можно завести программатор из под avrdude под Debian Lenny (Linux) и иногда под Vista (Windows). Однако остаётся небольшая непонятка, может конечно я что-то делаю не так, но ситуация такова, что читать Flash & EEPROM могу без проблем, а вот записать получается только в EEPROM. При попытке записи в терминальном режиме (опция -t) выдаётся следующая ошибка: Код lenny:/home/mobidev/PCB/# avrdude -c stk500v2 -P avrdoper -p ATMEGA168 -t
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.20s
avrdude: Device signature = 0x1e9406 avrdude> avrdude> write flash 0xc00 0x00 0x01 0x02 0x03 >>> write flash 0xc00 0x00 0x01 0x02 0x03 avrdude (write): error writing 0x00 at 0x00c00 cell=0xff avrdude (write): error writing 0x01 at 0x00c01 cell=0xff avrdude (write): error writing 0x02 at 0x00c02 cell=0xff avrdude (write): error writing 0x03 at 0x00c03 cell=0xff
avrdude> dump flash 0xc00 32 >>> dump flash 0xc00 32 0c00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| 0c10 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
avrdude>
avrdude> dump eeprom 0x00 32 >>> dump eeprom 0x00 32 0000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| 0010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
avrdude> write eeprom 0x00 0x00 0x01 0x02 0x03 >>> write eeprom 0x00 0x00 0x01 0x02 0x03
avrdude> dump eeprom 0x00 32 >>> dump eeprom 0x00 32 0000 00 01 02 03 ff ff ff ff ff ff ff ff ff ff ff ff |................| 0010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
avrdude> quit >>> quit
avrdude: safemode: Fuses OK
avrdude done. Thank you.
lenny:/home/mobidev/PCB/#
Сообщение отредактировал mobidev - Mar 19 2009, 20:17
|
|
|
|
|
Mar 23 2009, 13:27
|
Участник
Группа: Свой
Сообщений: 70
Регистрация: 3-03-05
Пользователь №: 3 029
|
Цитата(mobidev @ Mar 20 2009, 05:16) При попытке записи в терминальном режиме (опция -t) выдаётся следующая ошибка: Код lenny:/home/mobidev/PCB/# avrdude -c stk500v2 -P avrdoper -p ATMEGA168 -t
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.20s
avrdude: Device signature = 0x1e9406 avrdude> avrdude> write flash 0xc00 0x00 0x01 0x02 0x03 >>> write flash 0xc00 0x00 0x01 0x02 0x03 avrdude (write): error writing 0x00 at 0x00c00 cell=0xff avrdude (write): error writing 0x01 at 0x00c01 cell=0xff Было подобное. Решил опцией -B 10, это уменьшение скорости передачи данных при программировании. Правда у меня JTAG ICE MKII.
|
|
|
|
|
Mar 27 2009, 13:45
|
Профессионал
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008
|
Цитата(mobidev @ Mar 26 2009, 01:28) to GDI: Кстати, подскажите пожалуйста, а в Вашей прошивке, которая делает устройство как stk500v2 over avrdoper, оба светодиода должны работать (RD + WR), как и в оригинальной прошивке Prottoss или только один, а то почему-то наблюдаю у себя работу только одного LED, может я где-то чего то упустил. Прошивка не моя, я там просто подправил дефайн чтобы устройство стало работать как HID. А светодиод там только один работает и клок наружу не выдается, это все можно поправить в исходниках при наличии желания.
--------------------
|
|
|
|
|
Mar 27 2009, 18:41
|
Местный
Группа: Свой
Сообщений: 202
Регистрация: 22-06-08
Из: Краснодарский край
Пользователь №: 38 488
|
Цитата(GDI @ Mar 27 2009, 16:45) Прошивка не моя, я там просто подправил дефайн чтобы устройство стало работать как HID. А светодиод там только один работает и клок наружу не выдается, это все можно поправить в исходниках при наличии желания. То есть тогда опция "-B 10", указанная выше в моём случае не будет иметь эффекта?
|
|
|
|
|
Oct 13 2009, 16:26
|
Группа: Участник
Сообщений: 3
Регистрация: 12-10-09
Пользователь №: 52 901
|
Всем здравствуйте! Вот решил поделиться своим опытом. На линукс в качестве основной ОС я перешел уже очень давно, более 5 лет не пользуюсь никакими поделками микрософта. Вот заусило программировать микроконтроллеры в линуксе, собрал для начала STK200, заработал сразу и работает по сей день. Для программирования с бука в полевых условиях понадобился USB программатор, собрал по этой схеме http://www.hardlock.org.ua/mc/other/avr910/ автор чрезмерно упростил схему в части перемычки "modify", а вообще этот программатор заработал сразу с родной прошивкой от протоса. но при самосборном ядре он прошивал в режиме CDC. Со стандартным ядром как уже тут говорилось CDC режим неработает, зато отлично работает HID. Печатка разведена в KiCAD, на фото автомобильный 1wire термометр с дисплеем от нокиа3310 (точнее что от него осталось после летнего теста в машине). Для программирования использую avr-gcc + avrdude(через Makfile) (или ponyprog2000).
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|