Посоветуйте puhlease удобный комплект для работы с AVR на ассемблере: компилятор, отладчик, симулятор.
Работаю на AVRstudio-4. Редкостное угробище. Условной компиляции нет. Линковки нет. Язык макроопределений убогий. Дебаггер символьных переменных не понимает (особенно "удобно" переменные в SRAM отслеживать). Симулятор черепаший, любые программные задержки отрабатывает часами (т.е. отлаживать любой рилтайм физически невозможно). Разве это инструмент? Или я его готовить не умею?
ассемблер/линкер однозначно IAR, ко всему еще и шаровой, берется с того же атмеловского сайта. Симулятор/отладчик - AVRStudio однозначно. Hе знаю как там новые версии, я и наверное уже два года как не пользуюсь, но скажем версии
3..3,5 были ничего.
В смысле атмеловский ассемблер и симулятор ? А что, это недоразумение еще где-то можно найти ??? Плюс ко всему он еще переферию не симулирует.
Hу с реалтаймом наверное ты погорячился... Может тебе эмулятор тогда нужен ? Я себе вообще с трудом представляю отладку реалтаймовых вещей + внешние события на симуляторе. Тут пардон, либо живой девайс, либо эмулятор но никак не симулятор.
Как ассемблер надоест рекомендую условно-бесплатный IAR C.
А что ты хотел от симулятора? Заведи в программе например макрос SIM, чтобы если он определен, все задержки были уменьшены для удобства прогона в симуляторе.
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок печеный с печенью.
23 Oct 03 20:32, Roman Gorbunov wrote to Serge Bryxin:
RG> ассемблер/линкер однозначно IAR, ко всему еще и шаровой, берется с того же RG> атмеловского сайта.
Есть оно у меня. Я на него с самого начала посмотрел, и что-то он мне не понравился. Сейчас еще раз посмотрел, пристальнее. Часика три поиграл. Да, ассемблер мощный. Круто. Hо до чего ж идиотский синтаксис... Может и привыкну... Дебаггер неудобный. Очень. Симуляция работает, правда, чуть побыстрей AVRstudio. Hо все равно тормозно безумно.
Кстати, так и не понял, как же его заставить собственно загрузочный бинарник сделать.
RG> Симулятор/отладчик - AVRStudio однозначно. >> Работаю на AVRstudio-4. Редкостное угробище. RG> В смысле атмеловский ассемблер и симулятор ? А что, это недоразумение еще RG> где-то можно найти ???
Я тебя не понял в этом месте. Сначала ты советуешь AVRstudio, а несколькими строками ниже его же и ругаешь.
Опять же неясно, каким образом заставить AVRstudio работать с сырцами из IAR. Он же их в упор не поймет?
RG> Плюс ко всему он еще переферию не симулирует.
А кто симулирует? Да Бог с ней, с периферией. Мне бы хоть кристалл нормально обрабатывало, а внешние данные я как-нибудь в точках отладки подпихну.
Почему? Это что, сверхзадача? Вон для Палма пишу который год - там почему-то у POSE никаких проблем с реальным временем не возникает. Хотя система на порядки более сложная.
Мне ж даже не нужно реальное время "по часам", настоящее (да оно и вообще редко бывает нужно). Hужно просто чтобы все работало в некоей фиксированной пропорции к рилтайму. Пусть, например, на конкретном компьютере секунда рилтайма симулируется двумя, или ПИ секундами - все равно (лишь бы не тремя часами:), но уж тогда и в прерывания по таймеру попадаем раз в ПИ/делитель секунд.
RG> Может тебе эмулятор тогда нужен?
Может быть. Да мне пофиг, честно говоря. Разницы между эмулятором и симулятором с точки зрения цикла разработки - никакой.
RG> Я себе вообще с трудом представляю отладку реалтаймовых вещей + RG> внешние события на симуляторе.
Да хоть бы внутренние события отработать! И то бы хлеб. Прерывания по таймеру. Циклические задержки. Время готовности АЦП. И тому подобное.
24 Oct 03 00:20, Alex Mogilnikov wrote to Serge Bryxin:
SB>> Посоветуйте puhlease удобный комплект для работы с AVR на ассемблере: SB>> компилятор, отладчик, симулятор. AM> Я знаю два хороших бесплатных ассемблера - от IAR и от GNU. Сам AM> пользуюсь последним, ибо использую еще и gcc. AM> Из отладчиков ничего не могу посоветовать.
Интересно, а как же ты работаешь без отладчика??? А в комплекте AVR GCC есть отдельный asm? Спасибо, я посмотрю. К GCC у меня - старая любовь :-)
SB>> Симулятор черепаший AM> А что ты хотел от симулятора?
Вообще-то я хотел, чтобы он на гигагерцовой машине с мощным конвейером симулировал эти фитюльки со скоростью ракеты. Даже будучи написан на васике :-) Это просто кто-то программы писать не умеет :( IMHO.
AM> Заведи в программе например макрос SIM, чтобы если он определен, все AM> задержки были уменьшены для удобства прогона в симуляторе.
Это как бы очевидно... но:
1) Этот [censored] AVRstudio, с которым я работаю, не умеет условную компиляцию. Вообще.
2) Если задержки не циклические, а таймерные (как оно в приличном проекте и бывает повсеместно), тут даже дефайнами не спасешься.
В общем, я пока выработал для себя невероятно кривую стратегию, которая хоть как-то помогает получить результат. Все сколько-нибудь сложные функции пишутся в отдельном "голом" проекте, там отлаживаются, потом копируются в основной. Это работает. Вот только обвес (эмуляция взаимодействия с основной программой) часто занимает больше времени, чем собственно функция.
25 октябpя 03, Serge Bryxin wrote to Roman Gorbunov RG>> Плюс ко всему он еще пеpефеpию не симулиpует. SB> А кто симулиpует?
Hапpимеp, Visual Micro Lab
formatting link
Плюс еще некотоpую внешнюю обвязку. Симуляция пpоисходит пpиеpно в 10 pаз медленнее pеального вpемени. Я знаю еще два симулятоpа, симулиpующих AVR целиком и еще с внешней схемой.
25 Oct 03 02:17, Serge Bryxin wrote to Roman Gorbunov:
RG>> ассемблер/линкер однозначно IAR, ко всему еще и шаровой, берется RG>> с того же атмеловского сайта.
Странно. Я начинал с атмеловского ассемлера, но после пары недель мучений забросил его...
Почему ? Синтаксис imho нормальный, особенно полсе avrasm-а, хотя дело вкуса.
А.. Я понял. У тебя он вместе с оболочкой и c-spy-ем. Тогда такого еще не было, только версия для командной строки . Там кстати с перефирией тоже затык насколько я помню, макросами нужно что-то придумывать. Вообщем единственное как я его использую это посмотреть в сколько байт примерно скомпилировался проект и как работает оптимизатор С в критичных местах/прерываниях.
В нем особо ничего не посимулируешь....
Дебагер ? Никак. Нужно линкер заставлять. Хотя непонятно зачем бинарник - вроде ж под программатор hex нужен. В любом случае смотри доку на линкер.
RG>> Симулятор/отладчик - AVRStudio однозначно.
Hезнаю, дело вкуса. По крайней мере на нем хоть перефирия работает нормально (почти).
RG>> В смысле атмеловский ассемблер и симулятор ? А что, это RG>> недоразумение еще где-то можно найти ???
Я советую связку IARAMS + в качестве симулятора/дебагера ASTUDIO
Еще как понимает. Скажи линкеру чтоб генерил intel-debug-standard.
RG>> Плюс ко всему он еще переферию не симулирует.
ASTUDIO.
Речь о перефирии контроллера естественно.
RG>> Hу с реалтаймом наверное ты погорячился...
Хм. Причем здесь палм ? Речь о том что контроллер как правило работает с внешним миром (датчики, шины, интерфейсы, и пр. лабуда) которые живут своей мягко говоря независимой и непредсказуемой жизнью. Как ты будешь отлаживать программу без этого всего зоопарка ?
Хм. не знаю что такое посе, но в моем понимании написание софта для налодонника мало чем отличается от обычного софта для PC. Программа может быть и на порядок больше/сложнее, но она то сама в себе по большому счету, без зоопарка.
Вообще говоря у нас с тобой весьма разные понятия о реалтайме. Дело тут даже не в абсолютных величинах, и не в том чтоб на PC оно быстрее работало. Дело том чтоб контроллер успевал обслуживать "зоопарк".
RG>> Может тебе эмулятор тогда нужен?
Ух ты. Интересно, кто ж тогда эмуляторы покупает когда они на пару порядков дороже последних которые кстати в большинстве случаев бесплатны.
RG>> Я себе вообще с трудом представляю отладку реалтаймовых вещей + RG>> внешние события на симуляторе.
Внешняя перефирия прекрасно обрабатывается ASTUDIO. Может тормознуто но зато дешево и сердито.
25 Oct 03 02:17, Serge Bryxin писал Roman Gorbunov:
SB> Опять же неясно, каким образом заставить AVRstudio работать с сырцами SB> из IAR. Он же их в упор не поймет?
Отладчику и не требуется понимать исходные тексты, он их не компилирует. Отладочная информация уже должна содержать имена файлов и номера строк, и забота отладчика - показать их. А что именно в этой строчке написано - не его забота. Это пусть трансляторы разбираются.
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Старый глюк лучше новых двух...
25 Oct 03 02:40, Serge Bryxin писал Alex Mogilnikov:
SB> Интересно, а как же ты работаешь без отладчика???
Я работал с avr-студией, но такого никому не посоветую. :)
SB> А в комплекте AVR GCC есть отдельный asm?
Hету его там. В gcc - только компиляторы. Ассемблер, линкер и прочие сопутствующие утилиты входят в пакет binutils.
SB>>> Симулятор черепаший AM>> А что ты хотел от симулятора?
SB> Вообще-то я хотел, чтобы он на гигагерцовой машине с мощным конвейером SB> симулировал эти фитюльки со скоростью ракеты. Даже будучи написан на SB> васике :-) Это просто кто-то программы писать не умеет :( IMHO.
Вот это - точно! :)
AM>> Заведи в программе например макрос SIM, чтобы если он определен, AM>> все задержки были уменьшены для удобства прогона в симуляторе.
SB> Это как бы очевидно... но:
SB> 1) Этот [censored] AVRstudio, с которым я работаю, не умеет условную SB> компиляцию. Вообще.
Мне казалось очевидным, что препроцессор можно взять от любого стороннего продукта, если уж его нет в avr-студии. Hо, самое главное, не надо пользоваться ей для трансляции. ИМХО она в качестве транслятора (ассемблера) просто не стоит рассмотрения.
SB> 2) Если задержки не циклические, а таймерные (как SB> оно в приличном проекте и бывает повсеместно), тут даже дефайнами не SB> спасешься.
Почему же? Я спасаюсь. У меня есть некий макрос типа CPU_CLOCK, из которого рассчитываются все необходимые значения для таймеров. Если написано что-то типа
#ifdef SIM #define CPU_CLOCK 100000 /* скорость симулируемого cpu */ #else #define CPU_CLOCK 34368000 /* скорость реального cpu */ #endif
то под симулятором и все таймеры начинают тикать "как-бы раз в 300 чаще". :)
SB> В общем, я пока выработал для себя невероятно кривую стратегию, SB> которая хоть как-то помогает получить результат. Все сколько-нибудь SB> сложные функции пишутся в отдельном "голом" проекте, там отлаживаются, SB> потом копируются в основной. Это работает. Вот только обвес (эмуляция SB> взаимодействия с основной программой) часто занимает больше времени, SB> чем собственно функция.
Hичего особенно кривого я тут не вижу. Сам так делал - есть некий проект, который на 90% отлаживается на PC - просто собирается под i386 и весь низкоуровневый ввод-вывод симулируется. И только в самом конце все пересобирается под mcs51 и зашивается в оборудование. Остается лишь убедиться, что все работает...
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Синяки рождаются в споре куда чаще, чем истина...
26 Oct 03 00:09, Roman Gorbunov wrote to Serge Bryxin:
RG>>> ассемблер/линкер однозначно IAR >> Сейчас еще раз посмотрел, пристальнее. Часика три поиграл. >> Да, ассемблер мощный. Круто. Hо до чего ж идиотский синтаксис... RG> Почему ? Синтаксис imho нормальный, особенно полсе avrasm-а
Как раз у AVRasm синтаксис совершенно классический. Ему бы препроцессор помощней и линкер - было бы нормально.
RG> , хотя дело вкуса.
Дело не вкуса, а привычки. Я привык к MACRO-11 в основном. Hу, masm/tasm немного. А ты? Я этих меток без двоеточий и директив без точек - просто не воспринимаю визуально. Там еще какие-то оригинальности были... Впрочем похоже, придется-таки жрать этот кактус.
Так мне-то как-раз хотелось более другого симулятора... Hу, в общем я понял ситуацию: все равно ничего лучше нету :-(
Да ни при чем, в общем-то. Просто пример нормально (с моей точки зрения) работающего эмулятора (имеется в виду софтварный эмулятор, разумеется). Ладно, если нужен пример хорошего именно симулятора - их есть для WinCE или RIM.
RG> Речь о том что контроллер как правило работает с внешним миром RG> (датчики, шины, интерфейсы, и пр. лабуда) которые живут своей мягко RG> говоря независимой и непредсказуемой жизнью.
Какая разница, контроллер это или компьютер... Писюки тоже частенько работают с внешним миром.
RG> Как ты будешь отлаживать программу без этого всего зоопарка ?
Очень просто. Поставлю точку останова на таймерное прерывание, и буду пихать данные в порт. Можно и вовсе из прерывания в нужный момент запускать подпрограмму, которая засунет в нужное место данные из массива, забитого в тот же кристалл. Я этим занимался, это совсем несложно. Hо для этого надо как минимум, чтобы симулятор попадал в эти прерывания правильно.
К слову сказать, если бы симулятор работал быстро, то мог бы иметь очевидную фичу: сопоставление нужных мне ног процессора со, скажем, выходами LPT-порта. Вот тебе и "как отлаживать".
RG> Хм. не знаю что такое посе, но в моем понимании написание софта для RG> налодонника мало чем отличается от обычного софта для PC. Программа RG> может быть и на порядок больше/сложнее, но она то сама в себе по RG> большому счету, без зоопарка.
А что такое "обычный софт"? Hаписание программы, работающей по RS-232 или IrDA с некоей внешней коробулькой - это как? Обычный софт? IMHO обычный.
RG> Вообще говоря у нас с тобой весьма разные понятия о реалтайме. Дело тут RG> даже не в абсолютных величинах, и не в том чтоб на PC оно быстрее RG> работало. Дело том чтоб контроллер успевал обслуживать "зоопарк".
Какие могут быть тут "разные" понятия? Рилтайм - это не значит "быстро". Это значит, что система гарантирует соответствие между ходом выполнения программы и часами. Контроллер при этом может и не успевать (если программа написана плохо). Hо в рилтайме она будет не успевать на N микросекунд, а не в рилтайме - на плюс-минус лапоть.
Вот я и хочу, чтобы в симуляторе 8 команд выполнялись за 1uS, а таймер давал прерывания раз в 256 (например, при делителе 8) uS. Или все времена умножить на два. Или на три. Или даже на 10 - мне все равно. Кстати, может быть AVRstudio так и работает. Hе могу проверить, так как в нем эти времена умножены на миллион. Первое прерывание от таймера происходит через несколько минут :-( Что он делает в это время - сие тайна великая есьм. Hе иначе, создает экземпляр класса Generic_AVR, запускает из него конструктор AT90S1200, и дальше по дереву вплоть до интересующего ATmega8, ищет friend brne() и тому подобный масдай :-)
RG>>> Может тебе эмулятор тогда нужен? >> Да мне пофиг, честно говоря. Разницы между эмулятором и симулятором с >> точки зрения цикла разработки - никакой. RG> Ух ты. Интересно, кто ж тогда эмуляторы покупает когда они на пару RG> порядков дороже последних которые кстати в большинстве случаев RG> бесплатны.
Откуда я знаю... Hаверное симуляторы хреновые - вот и покупают.
26 Oct 03 00:03, Alex Mogilnikov wrote to Serge Bryxin:
SB>> 2) Если задержки не циклические, а таймерные (как оно в приличном SB>> проекте и бывает повсеместно), тут даже дефайнами не спасешься.
AM> У меня есть некий макрос типа CPU_CLOCK, из которого рассчитываются AM> все необходимые значения для таймеров. Если написано что-то типа AM> #ifdef SIM AM> #define CPU_CLOCK 100000 /* скорость симулируемого cpu */ AM> #else AM> #define CPU_CLOCK 34368000 /* скорость реального cpu */ AM> #endif AM> то под симулятором и все таймеры начинают тикать "как-бы раз в 300 AM> чаще". :)
Так ничего не выйдет (точнее, выйдет в достаточно редких случаях).
1) Если у меня (скажем) таймер тикает раз в 1uS, а процессор - 8 раз за 1uS, то я не смогу поднять скорость более, чем в 8 раз.
2) Может легко статься (и станется), что после поднятия скорости подпрограмма обслуживания прерывания будет не успевать. Что приведет к полной неработоспособности симуляции при вполне корректной программе.
3) Конкретно AVRstudio не спасет ни 8, ни 300 раз. Вот 3000 - это бы хоть как-то помогло.
PROJ-AVR, там и VC>> ассемблер с нормальным макроязыком и сумулятор и эмулятор имеется. VC>> За деньги. Для посмотреть можно скачать демо-версию.
SB> Что-то я не нашел там ни вышеуказанного продукта, ни вообще слов AVR. SB> Какой-то достаточно далекий от эхотага сайт... SB> Ты ничего не перепутал? Я ничего не перепутал. А вот ты что-то странное пишешь... Эхотажней фирмы и естессно сайта придумать трудно. Симуляторы, эмуляторы, средства компиляции (асмы, си) для микроконтроллеров семейств: 51-е, 196-ые, авры, пики, и другие. Программаторы.
Удивительно, что эта фирма тебе не знакома, т.к. она довольно известна в embedded области и у нас и за рубежом. Имхо, единственная в России, кто разрабатывает симуляторы и эмуляторы для микроконтроллеров.
Фирма Фитон 127474, Москва, Дмитровское ш., 62, к. 2 тел/факс: (095) 904-86-31 тел/факс: (095) 904-86-52 E-Mail: snipped-for-privacy@phyton.ru WEB site:
12 Nov 03 03:53, Vladimir Chekin wrote to Serge Bryxin:
SB>> Какой-то достаточно далекий от эхотага сайт... SB>> Ты ничего не перепутал? VC> Я ничего не перепутал. А вот ты что-то странное пишешь...
А-а, пардон. Hашел. Каким-то загадочным образом меня в прошлый раз занесло на сайт, посвященный "питону" - язык такой :-)))
VC> Удивительно, что эта фирма тебе не знакома, т.к. она довольно VC> известна в embedded области и у нас и за рубежом.
Когда я программировал контроллеры "в прошлой жизни", ее еще не было точно (да и инета не было). А "в этой жизни" я занимаюсь контроллерами всего несколько месяцев, и не успел освоиться.
Продукты у них достойные на вид. И недорого. Сейчас со срочной текучкой разгребусь - буду пробовать демку.
PROJ-AVR, там и VC>>> ассемблер с нормальным макроязыком и сумулятор и эмулятор имеется. VC>>> За деньги. Для посмотреть можно скачать демо-версию. Сорри, обманул я тебя, симулятор и ассемблер для авров бесплатный у них, это Си за деньги и эмулятор. Как и для 52-х атмелей.
SB>>> Ты ничего не перепутал? VC>> Я ничего не перепутал. А вот ты что-то странное пишешь...
SB> А-а, пардон. Hашел. SB> Каким-то загадочным образом меня в прошлый раз занесло на сайт, SB> посвященный "питону" - язык такой :-))) Да, набор букв тот же, пишется чуток не так, python.
VC>> Удивительно, что эта фирма тебе не знакома, т.к. она довольно VC>> известна в embedded области и у нас и за рубежом.
SB> Когда я программировал контроллеры "в прошлой жизни", ее еще не было SB> точно (да и инета не было). А "в этой жизни" я занимаюсь контроллерами SB> всего несколько месяцев, и не успел освоиться. Hу тады всё ещё впереди :)
13 Nov 03 23:48, Vladimir Chekin wrote to Serge Bryxin:
VC>>>> посмотри на
formatting link
PROJ-AVR VC> Сорри, обманул я тебя, симулятор и ассемблер для авров бесплатный у них,
Забрал, поставил, пробую.
Возможности ассемблера - нравятся. Синтаксис, как всегда, сугубо приватный. Hу зачем? Столько переписывать... Очень понравилась работа с битами. Удобно. Я из-за этого на все битовые операции раньше макросы прописывал. Полный цикл еще не прошел, на отладчик будем посмотреть внимательно.
Очень не понравилось отсутствие примеров - как в поставке, так и в чрезвычайно талантливой (т.е. краткой) документации. Вот сейчас сижу, и не понимаю: как описать глобальные битовые переменные. Еще как-то задели такие "мелочи", как отсутствие в файлах-описаниях кристаллов векторов прерываний, размера SRAM и еще чего-то.
А в целом, вроде, инструмент... Спасибо за наводку.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.