Привет.
Я тут провожу небольшое исследование.
Моя контора пишет IDE для своего
8битнного микроконтроллера, и посему интресно было-бы знать,
мнение профессионалов.
Кто какие системы разработки использовал и какие из них вам наиболее
симпатичны? Если можно, то рассказать какие именно вещи и функции удобны/неудобны, важны, нужны, хотелось бы и т.д. На худой конец, просто впечатление от использования той или иной системы разработки ПО для 8ми битников.
Есть ли такой "золотой" набор возможностей, которые-бы позволили назвать систему удачной? (допустим какие-то графические особенности интерфейса, быстрота выполнения той или иной последовательности действий - открытие нового проэкта (визарды) итд, возможность иправлять код в процессе отладки или изменять значения регистров итд. итд.)
Если кто имеет свои соображения по этому поводу - поделитесь!
Буду очень рад услышать любые отзывы!
best regards,
stirol
one_man_show
Aug 9 2004, 21:23
В давние времена использовал среду от Фитона Project51. Там нравилась возможность (по тем временам) визуализировать ввод-вывод. Например, имелась возможность отображать выходной сигнал ЦАП, 7-ми сегментные индикаторы и т.п.
Сейчас использую TASKING, средство мощное, но из его крутизны успеваю использовать процентов 20, все остальное - просто хорошо реализованный компилятор: уже на форуме говорил - честный С с настоящей плавающей точкой. Может быть и не нужно наворотов, пусть будет хорошо выполнять основную функцию - производство исполняемого кода, остальное сделает программер?
Лично мои пожелания:
- Работа с консолью. Т.е. я создаю пакетные файлы и нажав одну кнопочку компилирую проект, программирую микроконтроллер и пускаю отладчик. Мне удобнее править конфиги в редакторе, чем ползать по менюшкам и т.д. В отладчике не помешает раскраска дизассемблированного текста. Причем текст должен отображаться как в режиме дизассемблера, так и из исходников.
- Достаточно скопировать файлы существующего проекта в другой каталог для создания другого проекта с минимумом изменений
- Если создавать интерфейс пользователя, то в нем все максимально приблизить к интерфейсу популярнымх сред разработки.
Я например в основном пользуюсь IAR для MSP430. Там меня не устраивает то, что размеры окошек в отладчике не запоминаются, если связь с контроллером утеряна - отладчик вырубается.
Ассемблер:
- В механизме сегментации желательно сделать организацию памяти сегмент-в-сегменте: я могу сделать сегмент определенного размера в оперативке и несколько подсегментов, совместно использующих одну и ту же память.
Мнемоники команд (для asm) очень желательно сделать максимально похожими на мнемоники, скажем, avr.
- В библиотеках очень желательно предусмотреть возможность их гибкого конфигурирования (например, использую я один бит в одном порту, и хочу сделать, чтобы бит и порт мог изменяться в зависимости от того, в каком проекте я использую эту библиотеку).
Отладчик.
- Поставил я breakpoint. и хочу, чтобы он останавливался не сразу, а, скажем, через 1000 проходов в этой точке или просто счетчик попаданий на контрольную точку, обновляющийся в реалтайме.
- Быстрое изменение текущего адреса исполнения программы (достаточно кликнуть на соответствующую команду в дизассемблере).
- Точка останова, если конкретная ячейка памяти принимает заданный диапазон значений.
- Все переменные из оперативной памяти должны отображаться сразу. Не хочу я тратить время на их добавление в список или просмотр дампа памяти.
- Открыл отладчик, а он помнит точки останова (в т.ч. временно снятые).
- В отладчике открываю на просмотр код модуля. Пусть он открывается не с начала, а в том месте, где я был в прошлый раз.
- Неплохо было сделать вкладки для окошек дебагера. Все на мониторе редко когда умещаются, а прикрывать одно чтобы найти другое не очень удобно.
Есть такая программа называется Win*ter. Впечатляет даже демо версия, в настоящее врема занимаюсь просвещением начальства.
Основные особенности 1 и более процессоров, можно все разные. полностью реализованы 8051, часть avr-ов,x86, а самое главное к этому всему можно подключить внешнюю обвеску, стандартную и не очень(ацп,еепром,содержимое плис...). Т.е. моделирование всей системы целиком, а не только контроллера, с приемлимым быстродействием.
www.new*it.gs*u.uni*bel.by/ru/win*ter
starmos
Oct 12 2004, 07:26
Про Keil никто не написал, а по моему для 51-х так лучше нет.
А если самому писать IDE, так стоит обратить внимание на отладчик.
Отладку взаимодействия с периферией гибкую, но понятную.
ra4fox
Oct 12 2004, 07:40
starmosПо мне так Франклин интереснее

, если бы не его глюки в скомпилированном коде, то бросил бы Кейл и пользовался Франклином. Приходится сидеть в Кейле
ra4foxФранклин в развитии остановился еще в прошлом веке. Да и код он генерит далеко не самый оптимальный (хотя бы по сравнению с Кейлом). Зря Вы, батенька, так про Keil. Из моих знакомых (от 23 до 55) его используют все. Хотя на С для С51 сам начинал с франклина.
ra4fox
Oct 12 2004, 09:02
_KIV_Если бы франклин развивался дальше, то он стал бы хорошей альтернативой кейлу.
Сам начинал с паскаля, потом франклин, сейчас использую кейл.
Про кейл я ничего плохого не сказал, он лучший, но мне в нем не хватает удобства работы с большими числами как у франклина

.
ra4fox
KIV
Последнее время перешел на SlickEdit, как среду для ведения проектов.
Кстати, что значит удобства работы с большими числами ? IMHO, double, для проектов на 8-битниках это излишество.
starmos
Oct 12 2004, 11:39
Я франклин тоже не ругал, сам с него начинал. Но код у кейла короче получается (когда-то проверял).
MauZer
Oct 12 2004, 15:51
В среде разработки самое главное простота и понятность, без всяких там измудрений, минимальные требования одно из нескольких: или - или компилятор, или программатор хорошо если есть симулятор, но это уже средний уровень, внутрисхемный отладчик, дизассемблер и т.д. Самое главное чтоб всё просто и понятно любому , а не только тем у кого ум извращённый. Желательно так чтоб было трудно ошибиться. Очень неплохо продвинутый текстовый редактор с подсветкой синтаксиса и ошибок. Если вы начинающие начните с простого компилятора. А короче код или длиннее -потом доработаете.
Т.к пока все программы пишу на ассемблере, прошу обратить особое внимание на удобство текстового редактора. Будете смеяться, но до сих пор все проги набиваю в.. DN (dos navigator). Почему? нравится возможность настройки цвета фона и всего прочего, изумительные возможности поиска: по файлам (с заданным расширением, несколькими расширениями), вывод результатов во временную директорию, замена, копирование горизонтальных, вертикальных блоков, вставка с добавлением и заменой... И все операции делаются только с помощью сочетаний клавиш! На это обращаю особое внимание: не ленитесь дублировать кнопки для тыкания мышой сочетаниями клавиш! И возможности настройки этих клавиш.В том числе и сохранение (F2). Запоминание позиций открывавшихся файлов, переход между открытыми файлами (F9). Очень обязательное свойство - возможность сохранения текущего файла или всех открытых файлов перед вызовом внешней программы. Необходимо так же переоткрывать эти файлы после возврата, или после возврата из внешней программы проверять, не изменился ли файл и спрашивать - а не перегрузить ли?Так же могу посоветовать добавить возможность оперативно сворачивать/разворачивать фрагменты кода, что незаменимо при работе с большими файлами. Так же пллезны будут средства ведения версии проектов, с сохранением в виде архивов, сравнением версий..
Приветствуется поиск на базе регулярных выражений, который достаточно редко встречается.
IgorKossak
Oct 23 2004, 11:30
В качестве образцов для подражания хорошо использовать удачные продукты, например я всем рекомендую
wx-DevCpp.
Большинство из вышеперечисленного в нём есть и, кроме того, он есть в исходниках.
Раньше писал во Франклине, но он задолбал гльком, связанным с периодическим прокидываниемвозвращаемых функцией аргументов. Приходилось изголяться : вводить глобальные переменные, перекраивать код. Попытался поработать со встроенной ОС (етоже RTX 51) а она у меня стала глючить почём зря. Сейчас перешел на Кеил. И сразу недостаток: нет бы сделать как с сишном стандарте оформленные ассемблерные вставки
asm
....
endasm - нет ввели специальную опцию компилятора (#pragma ...) В результате наша #pragma не дружит с #define АсмовскаяМакроПодстановка
bialix
Nov 11 2004, 19:51
Посмотрел на WInter. Продукт из серии -- сам себя не похвалишь -- никто не похвалит. Как видно из сайта разработка закончилась в 2000 году -- наверное по причине отсутствия покупателей.
Я на Winter смотрел не как на отладчик, а как на средство функциональной верфикации FPGA проектов с парочкой процессоров.
Пака с ними переписывался, пришел к выводу, что они не хотят его продавать, и делают только заказные варианты.
С такими ценами они даже ментор переплюнули, а по функциональности не допрыгнули.
Cygnal IDE сейчас SiLabs IDE
Просто даже проше uC
Для меня идеалом IDE является Keil mVision3. Очень мощный дебагер с возможностью подключения и запуска при отладке специальных отладочных функций. Плюс можно подключать dll-ки иммитации различного рода компонентов (ЖКИ, i2c и т.д.) Удобно пользоваться. При отладке удобно управлять периферийными устройствами и все они расположены в отдельных окошках, которые легко размещаются по всему экрану. Если бы добавить возможность измерять время между двумя точками программы, как это сделано в MPLAB и астудии, то цены ему не было бы. Самая неудобная среда на мой взгляд - MPLAB.
Цитата(vesago @ Dec 6 2004, 11:24)
Если бы добавить возможность измерять время между двумя точками программы, как это сделано в MPLAB и астудии, то цены ему не было бы. Самая неудобная среда на мой взгляд - MPLAB.
А чем мой скрипт для измерения времени между точками программы плох/неудобен?
Скрипт p_time
Честно говоря я не знал о существовании оного. Обязательно попробую. Это конечно хорошо, что можно юзать скрипты, но приятнее было бы, чтоб такая приятная мелочь как волзможность измерения времени уже была встроена производителем IDE.
one_man_show
Dec 6 2004, 16:23
Так поддержка скриптов именно для удовлетворения множества пожеланий и сделана. Иначе, сколько программеров, столько и пожеланий. Среда разработки просто разбухнет и пользоваться ей будет неудобно, основное ее назначение будет теряться.
Целиком согласен, но должен быть какой то минимальный базовый набор функций уже изначально жестко заложенный в среду. Скрипт - это очень хорошо, но как приятно бы было чтоб уже была такая маленькая панелька с кнопочкой очистки времени и, собственно, с самим значением. Комфорт.
Цитата(vesago @ Dec 6 2004, 15:46)
Честно говоря я не знал о существовании оного. Обязательно попробую. Это конечно хорошо, что можно юзать скрипты, но приятнее было бы, чтоб такая приятная мелочь как волзможность измерения времени уже была встроена производителем IDE.
странно. одним словом.
Скрипты добовляют гибкость среде,
остается только научиться скриптами пользоваться,
хотя по началу это и кажется грузно.
Я, Саша, ранее читал твою статью и на основе примера сварганил скрипт отладки приемо-передатчика пакетов через UART, но как-то не обратил внимание на первичную роль

). Только кнопка чего-то не получилась.
У скриптов, измеряющих время, есть свои явные достоинства и неявные недостатки. Из недостатков -- что их все-таки нужно написать, хотя бы первый раз. Из достоинств -- они дают тебе гибкость. Скрипт можно настроить так, чтобы он выдавал данные в нужном формате (секунды, мс, мкс...), чтобы мерял время между двумя и более точками, чтобы ... еще и песни пел при этом...
Вот например в софтюновском симуляторе (это для фуджей) -- фишка измерения времени вроде бы как и есть, но она настолько убого реализована (как и вся остальная софтюна), что пользоваться ею жутко неудобно. И не подкорректируешь функциональность в ней никак, ибо она уже встроена в готовый exe-файл.
Две худшие оболочки для МК, которые я видел -- МыПыЛаб 5.7 и софтюна для 16-битных фуджей. У обоих есть общее качество -- они бесплатные. Напрашиваются неприятные и некорректные выводы (хотя делать их только по 2м случаям глубоко ошибочно).
Что касается определения времени - есть такая удобная фишка в u-Vision, как GraphicAnaliser, он кроме отображения состояния сигналов еще показывает абсолютные значения времени с момента сброса в двух точках, а так же разницу между ними.
[quote=bialix,Dec 7 2004, 23:51]
А у меня куча вопросов есть по кейлу
Пробую програмить на Си для 51 однокристалки
Научите где указать, что бы MAIN ф-я начиналась, к примеру, с адреса 0х40, а не черт знает где.
Читал тут
http://onembedding.com/tools/keil/articles/explicit_addr/но не помогло.
bialix
Jan 26 2005, 10:07
Цитата(-AB- @ Dec 17 2004, 12:36)
Что касается определения времени - есть такая удобная фишка в u-Vision, как GraphicAnaliser, он кроме отображения состояния сигналов еще показывает абсолютные значения времени с момента сброса в двух точках, а так же разницу между ними.
Не знаю, может мне очки надо менять, но в µVision2 я такой перелести не встречал. Где ее искать?
bialix
Jan 26 2005, 10:11
[quote=gek,Jan 26 2005, 10:33]
[quote=bialix,Dec 7 2004, 23:51]
А у меня куча вопросов есть по кейлу
Пробую програмить на Си для 51 однокристалки
Научите где указать, что бы MAIN ф-я начиналась, к примеру, с адреса 0х40, а не черт знает где.
Читал тут
http://onembedding.com/tools/keil/articles/explicit_addr/но не помогло.
[/quote]
Встречный вопрос: нафига это нужно?
Цитата
Встречный вопрос: нафига это нужно?
Испытывал трудности с прогой, оказалось в схеме грабли (чуть с ума не сошел пока чертей гонял

)
А теперь, если можно, хотелось бы получить ответ на свой вопрос
one_man_show
Jan 27 2005, 06:15
Думаю, если только в стартап файле подправить, иначе вряд ли. Можно например в стартап файле после начальной инициализации указывать переход не на МЭЙН, который находится в Вашем файле, а на Метку, которую создать здесь же. Перед этой Меткой указать абсолютный адрес размещения 0х40. По Метке джамп уже на Ваш МЭЙН. Правда при этом код после Метки будет по адресу 0х40, а Мэйн все равно, как получится
gek
Как абсолютно верно заметил уважаемый one_man_show
Есть такой волшебный файл в каталоге LIB - startup.a51
Его надо скопировать в рабочий каталог и подключить к проекту.
Там есть строчка "CSEG AT 0"- 0 надо заменить на адрес Вашей точки входа.
А, вообще, RTFM, RTFM, и ещё раз RTFM. Keil на редкость подробно документирован.
З.Ы. Зайдите на сайт к уважаемому bialix, там даже русский manual есть.
bialix
Jan 27 2005, 14:07
2 gek:
А Вы батенька - лентяй. Это я Вам без всякой задней мысли заявляю. Почитать доку не хватает силы воли?
Вот пример проекта, в котором функция main расположена по адресу 0x40. Сделал по описанной мной же методике, на которую Вы ссылались.
Вот кусочек из map-файла:
Код
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
CODE 0003H 0001H UNIT ?C_INITSEG
0004H 003CH *** GAP ***
CODE 0040H 0005H UNIT ?PR?MAIN?MAIN
CODE 0045H 008CH UNIT ?C_C51STARTUP
Как видно функция main расположена по адресу 0x40.
И да простят меня старшие товарищи - ни в стартапе, ни в асме ничего править не нужно.
Нажмите для просмотра прикрепленного файла
Я с ?СО? корячился

. Теперь компилер ругается, что у меня restricted version.
Дайте кто нить uVision3 C51 7.50 и кей (есть ведь), а пока я на туташний ФТП попаду - состарюсь быстрее.
volemax
Jan 31 2005, 09:05
Пищу дли PIC16, внутрисистемного отладчика нету, так-что мне кроме всего важен хороший симулятор (например picsimulator ide).
Юзает кто ни будь uVision3 C51 7.50?
хоть впечатлениями поделитесь
Может я зря жду свой очереди.
Говорят тут на фтп она кривая какая-то
Esquire
Feb 10 2005, 08:11
Цитата
Может я зря жду свой очереди.
Говорят тут на фтп она кривая какая-то
Нормальная, особенно для тех, кто не старается пролезть раньше времени

.
Цитата(Esquire @ Feb 10 2005, 11:11)
Цитата
Может я зря жду свой очереди.
Говорят тут на фтп она кривая какая-то
Нормальная, особенно для тех, кто не старается пролезть раньше времени

.
т.е. мне уже ни чего не поможет
понятно. горе мне безнадеге
Цитата(gek @ Feb 9 2005, 07:13)
Юзает кто ни будь uVision3 C51 7.50?
хоть впечатлениями поделитесь
Может я зря жду свой очереди.
Говорят тут на фтп она кривая какая-то
Мне лично понравилось: по сравнению с uVision2 у uVision3 появилось несколько достойных внимания изменений, и работать стало намного уютней.
Отмечу браузер по функциям и логический анализатор.
IchtiAndr
Feb 16 2005, 17:22
Цитата(Miron @ Feb 15 2005, 11:07)
Цитата(gek @ Feb 9 2005, 07:13)
Юзает кто ни будь uVision3 C51 7.50?
хоть впечатлениями поделитесь
Может я зря жду свой очереди.
Говорят тут на фтп она кривая какая-то
Мне лично понравилось: по сравнению с uVision2 у uVision3 появилось несколько достойных внимания изменений, и работать стало намного уютней.
Отмечу браузер по функциям и логический анализатор.
Браузер по функциям был и в uVision2, а в uVision3 добавлено вкладка в Project Workspace, а также вкладка шаблонов по ключевым словам, user keyword можно определять в диалоге, а не кобенить файл инициализации.
Да и вообще uVision3 появился не в 7.50, а гораздо раньше. А скачать это можно не только здесь, посмотри топики на телесистемах.
Да все уже облазил, нифига. Проще утянуть в совокупности uVision3 с с51 7.50, а то по отдельности искать и прикручивать друг к другу тоже проблемотично.
IchtiAndr
Feb 19 2005, 18:10
Чет я посмотрел свой 750.exe так там uVision3 нет, он у меня тянется еще с 7.10, а в 7.20 его уже убрали. А прикручивать его нефиг делать, он лежит в отдельном каталоге и в реестре почти есть не просит. Хочешь пускай второй, хочешь третий. А занимает в zipe 1.6 Метра, могу на почту кинуть или здесь выложить
Замена uv2 на uv3 кажется простой, но у меня не вышло. Пишет, что bad tools.ini
в реестре про uv3 ничего не нашел
IchtiAndr
Feb 22 2005, 08:38
Tools.ini должен быть в папке Keil, то есть на одном уровне с UV2 и UV3, хотя в принципе UV3 может быть где угодно, лишь бы Tools.ini был не в самой папке UV3, а на директорий выше (UV3\..). А в реестре и в самом деле ничего нет. Или может быть у Вас версия Kei*l очень раняя, ниже 7. Хотя я уже не помню, но по-моему структура Tools.ini там такая-же была, может ошибаюсь.
UV3 запускается, как оказалось, проще некуда. Восстановил в первоначальное состояние tools.ini и все заработало.
Короче ничего править вообще не нужно.
Еще 7.50 где бы утянуть?
Подскажите почему Keil uv2 пишет что это не полная версия и длина кода не должна превышать 2К. Заранее извиняюсь если это уже обсуждалось на форуме, при беглом просмотре не нашел.
Потому что ты денежку не заплатил разработчикам.
Ищи полную версию. EMule тебе поможет!
IchtiAndr
Mar 5 2005, 13:21
Цитата
Ищи полную версию
Зачем обманывать человека, EWAL тоже лечится (по крайней мере лечился), да и вообще может у него полная версия.
Цитата
почему Keil uv2 пишет что это не полная версия
Лекарство посмотрите в будке, что такое будка - найдете в факе на сахаре.