посоветуйте asm для AVR

Oct 23, 2003 27 Replies

Dear All,



Посоветуйте puhlease удобный комплект для работы с AVR на ассемблере: компилятор, отладчик, симулятор.



Работаю на AVRstudio-4. Редкостное угробище. Условной компиляции нет. Линковки нет. Язык макроопределений убогий. Дебаггер символьных переменных не понимает (особенно "удобно" переменные в SRAM отслеживать). Симулятор черепаший, любые программные задержки отрабатывает часами (т.е. отлаживать любой рилтайм физически невозможно). Разве это инструмент? Или я его готовить не умею?



Есть что-нибудь поприличнее?



Sincerely yours, Old Greaser.


Hello Serge!

23 Oct 03 10:57, Serge Bryxin wrote to All:

ассемблер/линкер однозначно IAR, ко всему еще и шаровой, берется с того же атмеловского сайта. Симулятор/отладчик - AVRStudio однозначно. Hе знаю как там новые версии, я и наверное уже два года как не пользуюсь, но скажем версии

3..3,5 были ничего.

В смысле атмеловский ассемблер и симулятор ? А что, это недоразумение еще где-то можно найти ??? Плюс ко всему он еще переферию не симулирует.

Hу с реалтаймом наверное ты погорячился... Может тебе эмулятор тогда нужен ? Я себе вообще с трудом представляю отладку реалтаймовых вещей + внешние события на симуляторе. Тут пардон, либо живой девайс, либо эмулятор но никак не симулятор.

Как ассемблер надоест рекомендую условно-бесплатный IAR C.

Roman

... Well, me... it's nice talking to myself

Привет Serge!

23 Oct 03 10:57, Serge Bryxin писал All:

SB> Посоветуйте puhlease удобный комплект для работы с AVR на ассемблере: SB> компилятор, отладчик, симулятор.

Я знаю два хороших бесплатных ассемблера - от IAR и от GNU. Сам пользуюсь последним, ибо использую еще и gcc.

Из отладчиков ничего не могу посоветовать.

SB> Симулятор черепаший, любые программные задержки SB> отрабатывает часами (т.е. отлаживать любой рилтайм физически SB> невозможно).

А что ты хотел от симулятора? Заведи в программе например макрос SIM, чтобы если он определен, все задержки были уменьшены для удобства прогона в симуляторе.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок печеный с печенью.

Dear Roman,

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> внешние события на симуляторе.

Да хоть бы внутренние события отработать! И то бы хлеб. Прерывания по таймеру. Циклические задержки. Время готовности АЦП. И тому подобное.

Sincerely yours, Old Greaser.

Dear Alex,

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) Если задержки не циклические, а таймерные (как оно в приличном проекте и бывает повсеместно), тут даже дефайнами не спасешься.

В общем, я пока выработал для себя невероятно кривую стратегию, которая хоть как-то помогает получить результат. Все сколько-нибудь сложные функции пишутся в отдельном "голом" проекте, там отлаживаются, потом копируются в основной. Это работает. Вот только обвес (эмуляция взаимодействия с основной программой) часто занимает больше времени, чем собственно функция.

Sincerely yours, Old Greaser.

SB> Работаю на AVRstudio-4. Редкостное угробище. Условной компиляции нет.

GCC.

formatting link

Hello, Serge Bryxin !

Для симулятора? Конечно.

Потому что оно тебе просто не нужно...

Вот.

А вообще - очень часто. Контроллеры-то обычно чем-то управляют, а то, чем они управляют живет в реальном времени, которое замедлить нельзя.

С уважением, Дима Орлов.

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 целиком и еще с внешней схемой.

Bye

Hello Serge!

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. Может тормознуто но зато дешево и сердито.

Roman

... Nice story... Tell it to Reader's Digest!!!

Привет Serge!

25 Oct 03 02:17, Serge Bryxin писал Roman Gorbunov:

SB> Опять же неясно, каким образом заставить AVRstudio работать с сырцами SB> из IAR. Он же их в упор не поймет?

Отладчику и не требуется понимать исходные тексты, он их не компилирует. Отладочная информация уже должна содержать имена файлов и номера строк, и забота отладчика - показать их. А что именно в этой строчке написано - не его забота. Это пусть трансляторы разбираются.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Старый глюк лучше новых двух...

Привет Serge!

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] Алексей М. ... Синяки рождаются в споре куда чаще, чем истина...

Dear Roman,

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аверное симуляторы хреновые - вот и покупают.

Sincerely yours, Old Greaser.

Dear Alex,

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 - это бы хоть как-то помогло.

Sincerely yours, Old Greaser.

Привет, Serge!

SB> Так мне-то как-раз хотелось более другого симулятора... SB> Hу, в общем я понял ситуацию: все равно ничего лучше нету :-(

А тебе работать или побаловаться? Если первое, то посмотри на

formatting link
PROJ-AVR, там и ассемблер с нормальным макроязыком и сумулятор и эмулятор имеется. За деньги. Для посмотреть можно скачать демо-версию.

Владимир Чекин

Dear Vladimir,

28 Oct 03 21:26, Vladimir Chekin wrote to Serge Bryxin:

SB>> Так мне-то как-раз хотелось более другого симулятора... VC> А тебе работать или побаловаться?

Скорее работать.

VC> Если первое, то посмотри на

formatting link
PROJ-AVR, там и VC> ассемблер с нормальным макроязыком и сумулятор и эмулятор имеется. VC> За деньги. Для посмотреть можно скачать демо-версию.

Что-то я не нашел там ни вышеуказанного продукта, ни вообще слов AVR. Какой-то достаточно далекий от эхотага сайт... Ты ничего не перепутал?

Sincerely yours, Old Greaser.

Привет, Serge!

VC>> Если первое, то посмотри на

formatting link
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:

formatting link

Больше, чем это ^^^, мне конкретизировать трудно.

Владимир Чекин

Dear Vladimir,

12 Nov 03 03:53, Vladimir Chekin wrote to Serge Bryxin:

SB>> Какой-то достаточно далекий от эхотага сайт... SB>> Ты ничего не перепутал? VC> Я ничего не перепутал. А вот ты что-то странное пишешь...

А-а, пардон. Hашел. Каким-то загадочным образом меня в прошлый раз занесло на сайт, посвященный "питону" - язык такой :-)))

VC> Удивительно, что эта фирма тебе не знакома, т.к. она довольно VC> известна в embedded области и у нас и за рубежом.

Когда я программировал контроллеры "в прошлой жизни", ее еще не было точно (да и инета не было). А "в этой жизни" я занимаюсь контроллерами всего несколько месяцев, и не успел освоиться.

Продукты у них достойные на вид. И недорого. Сейчас со срочной текучкой разгребусь - буду пробовать демку.

Sincerely yours, Old Greaser.

Привет, Serge!

VC>>> Если первое, то посмотри на

formatting link
PROJ-AVR, там и VC>>> ассемблер с нормальным макроязыком и сумулятор и эмулятор имеется. VC>>> За деньги. Для посмотреть можно скачать демо-версию. Сорри, обманул я тебя, симулятор и ассемблер для авров бесплатный у них, это Си за деньги и эмулятор. Как и для 52-х атмелей.

Владимир Чекин

Привет, Serge!

SB>>> Ты ничего не перепутал? VC>> Я ничего не перепутал. А вот ты что-то странное пишешь...

SB> А-а, пардон. Hашел. SB> Каким-то загадочным образом меня в прошлый раз занесло на сайт, SB> посвященный "питону" - язык такой :-))) Да, набор букв тот же, пишется чуток не так, python.

VC>> Удивительно, что эта фирма тебе не знакома, т.к. она довольно VC>> известна в embedded области и у нас и за рубежом.

SB> Когда я программировал контроллеры "в прошлой жизни", ее еще не было SB> точно (да и инета не было). А "в этой жизни" я занимаюсь контроллерами SB> всего несколько месяцев, и не успел освоиться. Hу тады всё ещё впереди :)

Владимир Чекин

Dear Vladimir,

13 Nov 03 23:48, Vladimir Chekin wrote to Serge Bryxin:

VC>>>> посмотри на

formatting link
PROJ-AVR VC> Сорри, обманул я тебя, симулятор и ассемблер для авров бесплатный у них,

Забрал, поставил, пробую.

Возможности ассемблера - нравятся. Синтаксис, как всегда, сугубо приватный. Hу зачем? Столько переписывать... Очень понравилась работа с битами. Удобно. Я из-за этого на все битовые операции раньше макросы прописывал. Полный цикл еще не прошел, на отладчик будем посмотреть внимательно.

Очень не понравилось отсутствие примеров - как в поставке, так и в чрезвычайно талантливой (т.е. краткой) документации. Вот сейчас сижу, и не понимаю: как описать глобальные битовые переменные. Еще как-то задели такие "мелочи", как отсутствие в файлах-описаниях кристаллов векторов прерываний, размера SRAM и еще чего-то.

А в целом, вроде, инструмент... Спасибо за наводку.

Sincerely yours, Old Greaser.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required