dima34 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Всем добрый день! Недавно начал осваивать микроконтроллеры фирмы ATMEL. Первое с чем имел дело - AT90S2313, теперь перешёл на ATmega. Проэкты в основном небольшие (думаю это времено), пользуюсь AVR Studio. Язык, который использую - assembler. Часто посещаю форум, и особо часто попадаю на программы написанные на С. Так вот, хочу задать вопрос всем, кто чувствует себя уже уверенными пользователями обоих языков, вы не могли бы обьяснить начинающему: 1. почему люди переходят с assemblera на C? 2. какие плюсы и минусы языка С? 3. где без языка С нельзя обойтись? 4. лично ваше мнение относительно обоих? (ненормативная лексика принимается:-) Всем, кто отзовется, заранее благодарен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Для начала, дабы не раздувать в 999 раз флейм пройдитесь поиском по форуму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vladimir_J 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Добрейшее время суток!!! В свое время я тоже сильно раздумывал переходить или не переходить на Си, когда попробывал оценил :) Представте Вы ехали на мерседеце, и Вам говорит содись на велосипед мол это класно свежий воздух, здоровье, а мерседец это же конфортнее. (Этой фразой можно объяснить разницу между ASM и Си). А так просто надо попробывать, и Вы ивидите в чем разница. А Вам удачи в Ваших начинаниях. С Уважением, Владимир. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Вот чисто практические данные. http://electronix.ru/forum/index.php?showtopic=43498 к примеру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Omen_13 0 3 марта, 2008 Опубликовано 3 марта, 2008 (изменено) · Жалоба Очередная религиозная война назревает? :smile3009: :maniac: На асме можно делать простые конструкции с предельным быстродействием за счёт использования особенностей архитектуры и команд, на С математика и навороченные платформонезависимые алгоритмы. В теории конечно можете написать для себя математику с точкой на асме, но лучше потратить это время на освоение С... Моё мнение - надо знать оба языка. ИМХО!!! ----------- :bb-offtopic: Уважаемый zltigo, в этой войне на меня не расчитывайте! Изменено 3 марта, 2008 пользователем Omen_13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Очередная религиозная война назревает? :smile3009: :maniac: Только попробуйте! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Omen_13 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба zltigo, см. выше! Добавлю еще: Асм как язык привязан к семействам - насколько я помню 51, АВР и ПИКи по командам отличаются довольно капитально, т.е. при смене практически всё придётся писать с 0. Зная только асм вы принудительно ограничиваете себе "область применения". При написании проги больше 4 кБ надо очень постараться не наклепать ошибок. С другой стороны при использовании С вы вносите элемент неизвестности - кто знает как компилятор разложит команды в машинный код и какие при этом могут возникнуть ошибки по вине разработчика компилятора (шашкой махать не буду - об этом уже говорили/спорили). Изучить аппаратные особенности применяемого процессора всё равно придётся в не зависимости от того какой язык С или асм Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Don_Ambrosio 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба ИМХО, ассемблер - это база, которую ДОСКОНАЛЬНО должен знать любой программист-эмбеддер, считающий себя профессионалом. Если человек "плавает" в ассемблере, то (ИМХО конечно) он и на СИ не сможет написать хорошую программу для Target MCU. Потому что в отличии от писателей программ для компов, которые (если они не пишут низкоуровневые драйвера) больше решают задачи по обработке информации разработчики программ для микроконтроллеров рещают задачи управления железом и обработки сигналов в реальном времени ИМХО, сначала нужно досконально изучить архитектуру и АСМ ( который является отражением архитектуры MCU ), а уж потом пиши на чём хочешь: хоть на СИ, хоть на Паскале, хоть на Басике...Хоть на Смаллталке наконец Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Don_Ambrosio 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба насколько я помню 51, АВР и ПИКи по командам отличаются довольно капитально, т.е. при смене практически всё придётся писать с 0. Из опыта. А если проект написан на СИ разве не придётся всё писать практически с нуля? Если Вы не пишите конечно какую-нибудь универсальную RTOS на продажу в которой априори закладывается возможность портирования на несколько архитектур. А так. По-большому счёту большинтсво программ для MCU - это программы уникального применения, предназначенные для конкретного MCU в конкретном девайсе. А насчёт переписывания с нуля? Я за много лет работы выработал целый ряд принципов организации программы, которые определяют какой набор мудулей должен быть в программе и как организовать алгоритм. А зная их написать код на любом языке - это плёвое дело. Я, например, легко портировал свою RTOS на АСМ-е с 51-й архитектуры под AVR. Разработка RTOS под 51 -ю архитектуру у меня заняла более полгода. А переписывание её под AVR заняло чуть больше недели.... Так что не с нуля Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rv3dll 0 4 марта, 2008 Опубликовано 4 марта, 2008 · Жалоба Си так и не смог выучить - не дано наверное но что точно что если проект в упор работает на ассемблере (было много случаев, когда считал команды пропробывал несколько вариантов это было в системе некоторой обработки, где 256 раз в секунду приходили новые данные с 12 каналов и в соответствии с частотой уже стоявшего контроллера на обработку можно было потратить 1100 циклов - меньше чем 100 циклов на канал) а там надо было умножать делить искать экстреммумы сравнивать с порогом сортировать расчитывать порог по шуму складывать в буфер и передавать по последовательной линии это уже экстримальное программирование но параллельно каждой ассемблерной команде стояла её длительность и количество циклов от начала на си этого сделать нельзя, задачи подобного рода не решаемы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0608 0 4 марта, 2008 Опубликовано 4 марта, 2008 (изменено) · Жалоба Всем, кто отзовется, заранее благодарен! Си конечно лучше, но Ваша проблема, видимо, это отсутствие хорошего компилятора Си и еще, наверное, некому ввести в курс дела. Рекомендую IAR (для AVR) и Keil (для 51), все это есть с лечениями. Что характерно, просматривая листинги асм-кода после компиляции, Вы еще лучше начнете писать программы на ассемблере. А также делать асм-вставки в Си-коды, в критичных местах. Но это уже высший класс, для этого надо много стараться и ковыряться в интернете, а также надо найти рядом помощника, чтобы подсказал. Изменено 4 марта, 2008 пользователем 608 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 4 марта, 2008 Опубликовано 4 марта, 2008 · Жалоба на си этого сделать нельзя, задачи подобного рода не решаемыНу, это и на тираж предполагаемый смотреть надо... Если ожидаемый тираж пусть 1000 штук, зарплата программиста пусть 1000 баксов, протолчётся на асме считая такты он пусть лишний месяц - итого можно спокойно брать процессор на 2 бакса дороже и спокойно писать на С. Это будет как минимум не убыточно (затраты на программиста больше получаемой им зарплаты, надо ещё о сопровождении подумать). Числа можно двигать туда-сюда и думать, стоит ли оно того. А также не мешает проштудировать "историю одного байта" и подумать о том, что время сейчас несколько другое, если вдруг плнадобится не 256, а 320 раз в секунду или не с 12 а с 16 каналов - разрабатывать всё заново? Конечно, есть крайние случаи - типа такого: тираж предполагается 10000/месяц, среднерыночная цена изделия так мала, что каждый цент на счету, из соображений потребления и быстродействия приходится каждый такт экономить - и это всё одновремённо. Но что-то мне говорит, что в большинстве случаев это не так, на асме пишется по привычке/из любвы к искусству и можно или всё написать на С, или только критические 5% написать на асме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 4 4 марта, 2008 Опубликовано 4 марта, 2008 · Жалоба У вас в корне неправильное понимание вопроса: "Выбор пути ... Assembler или C ?". Это неправильно, потому что правильно: "Выбор пути: Assembler ==> Assembler и C ==> Assembler и C++ ==> То_Что_Дальше_Придумают" То, что начали с ассма, хорошо. Без его знания правильно писать на Си будет трудно: в листинг на ассме частенько заглядывать приходится. А дальше - исходя из задачи по быстродействию: укладывается программа на Си по быстродействию в нужные рамки - тогда чистый C/C++. Не укладывается - критические секции на ассме. Вот и вся философия пути :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 4 марта, 2008 Опубликовано 4 марта, 2008 · Жалоба Вот и вся философия пути :) Да и философии тут нет никакой. Один только момент - если вовремя не задуматься, как по другому можно сделать проект - значит потерять перспективу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rv3dll 0 4 марта, 2008 Опубликовано 4 марта, 2008 · Жалоба Ну, это и на тираж предполагаемый смотреть надо... Если ожидаемый тираж пусть 1000 штук, зарплата программиста пусть 1000 баксов, протолчётся на асме считая такты он пусть лишний месяц - итого можно спокойно брать процессор на 2 бакса дороже и спокойно писать на С. Это будет как минимум не убыточно (затраты на программиста больше получаемой им зарплаты, надо ещё о сопровождении подумать). Числа можно двигать туда-сюда и думать, стоит ли оно того. А также не мешает проштудировать "историю одного байта" и подумать о том, что время сейчас несколько другое, если вдруг плнадобится не 256, а 320 раз в секунду или не с 12 а с 16 каналов - разрабатывать всё заново? Конечно, есть крайние случаи - типа такого: тираж предполагается 10000/месяц, среднерыночная цена изделия так мала, что каждый цент на счету, из соображений потребления и быстродействия приходится каждый такт экономить - и это всё одновремённо. Но что-то мне говорит, что в большинстве случаев это не так, на асме пишется по привычке/из любвы к искусству и можно или всё написать на С, или только критические 5% написать на асме. тираж был единичный - 3 экземпляра - на самом деле это НИР другой процессор поставить и изготовить новый образец никто бы не дал - ВПК блин - он наверное там до сих пор стоит))) , да и стоимость его была не на 2 доллара больше речь о TMS2406 и TMS2812 5 лет назад они только появились. скорость написания - согласен знаковая арифметика не беспокоит функций навалом можно быстро написать работающий проект не беспокоясь о забытых переменных и LDP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться