>> она неоправдана, когда есть возможность применять стандартный подход
Я бы сказал, что это под вопросом. Может, и оправдано, а может, и нет.
>> Выглядело весьма печально
Я так и сказал: «и в итоге это будет провально по деньгам». Денежный проект я бы по-любому не начал на этой железке, не проведя исследований. Но для исследований — нужна и полезна железка и задача, а заранее сформированное мнение «даже и пробовать исследовать не стоит» — вредно.
>> а не восхищаться что теперь без интерраптов можно писать.
Я никогда не писал без интерраптов, можно я хоть тут попробую?! :)
Когда-то и про Arduino так говорили. Красная платка, IDE для `мака`, светодиодики, стоит дорого относительно «да чо вон я рассыпухи в Тушино куплю и спаяю» :D
ARM — да, классные процессоры, мне очень нравятся. И MIPS, понимаете, ли тоже реализация идей классических инженерных задач. И Transmeta с Code morphing. И Tilera с 64 и 100 ядрами. Просто идеи другие. Тут идея, как и в ардуине — там тоже на плате не всё на свете есть. Только тут шилды не надо покупать, можно так изобразить попробовать.
Но видите ли, в чём дело. Мне лично не надо, чтобы вы решили, что этот процессор — лучше ARM. А вам почему-то надо, чтобы я и TolTol решили, что этот процессор — определённо хуже ARM. Непонятно. И я на это указал.
И — смотрите — я вас даже не знаю, а вы мне уже ультиматумы ставите. Остыньте.
Не, нет эмоций. Как и нет каких-то мыслей про «оскорбление чувств» или что-то там ещё. Заметьте, это вы подняли эту тему и решаете за меня, что именно и где я считаю.
Я, как вы говорите, как инженер, пытаюсь подойти бесстрастно. А вот вы уже зачем-то про гей-парады вспоминаете. Похоже, это правда: любая статья Википедии рано или поздно переходит к Гитлеру, любой спор в интернете сводится к упоминанию гей-парадов :)
Никто не требует доказать, доказать — невозможно. Требуют обосновать, т.е. привести аргументированные доводы. А обосновывать на сферических кейсах — я не знаю, как это. Но аргумент «а вот у того контроллера 3 USART, поэтому он лучше, чем тот, у которого 2» — для меня не аргумент. Выбирать надо под задачу.
Как не аргумент, что «мы можем всё реализовать софтверно, у нас много ядер». Конечно, можем. Всё же полное по Тьюрингу. Вопрос только в ресурсах, которых может потребоваться очень много, и в итоге это будет провально по деньгам.
Тут просто оппонент заранее занял точку зрения «софверная реализация» — однозначно плохо. И требует ему доказать, что это не так. А дискуссия-то не об этом, а о том, что если вам надо чуточку периферии, то и такой способ — работоспособен.
Что, впрочем, не отменяет того, что это чип — исследовательский, и даже не то чтобы мелкосерийный, а ещё меньше. И в этом случае вопрос бизнес-эффективности при реализации фич — он как бэ не основной. Очевидно же.
Было бы ядер за сотню — вы бы ныли, что жрёт много. Жрал бы мало — что msp430 всё равно меньше. Ел бы меньше 430 — что производительность плохая. Была бы высокая производительность и много ядер — 32K мало. Сделали бы больше памяти — что кеша нет.
Он не лучше и не хуже, он интересный, не такой. Лет 20-30 назад было неимоверное количество архитектур (не, не так — НЕИМОВЕРНОЕ, одних стековых машин десятка два могу перечислить), сейчас только x86 и ARM на слуху.
А тут «пропеллер» появился. Не хуже и не лучше. Просто другой. Не такой. Никто и не говорит, что он вот прям ща выдавит с рынка всё остальное.
И тут появляетесь вы, и требуете доказать, что он лучше. Вон, посмотрите, весь топик засрали комментариями в стиле «Мадам, я бежал за вами 4 мили, чтобы сказать, как вы мне безразличны». Смешно и грустно.
Это не он пошёл, это его туда идут. Лично я только приветствую.
Но вот касательно того факта, что DIP8 — это именно что поиграться, типа многочисленных EZ-board, arduino и launchpad. Потому что для промышленных серийных применений там, где я видел, чаще используется softcore ARM
Соглашусь с вами.
Выпуск ARM в DIP8 — это, скорее, популяризаторская мера на радость юным радиогубителям и другим любителям канифольного дыма, чтобы иметь возможность кочергой, нагретой в камине, распаять на макетке и попробовать Cortex. Причём, достаточно неплохая мера
>> вполне себе позиционируются как general purpose
Всё, что Тьюринг-полное, вполне себе может быть general purpose, кто спорит. Особо смысла не, хотя и можно
>> Так вот, они этого не делают.
Общался с инженерами из TI, было это в году 2004-2005. Называют.
>> Это они про Intel x86 что ли с их кучей C-states?
То-то я смотрю, все разработчики софта только и делают, что пишут софт под эти режимы
>>По такту на доступ к памяти асимптотически
От одного до шести тактов на инструкцию, чаще ближе к последнему. Это медленно. Тактовая частота в 8 Мгц тоже маловато для процессора основного назначения
>> просто напомню про современные Cortex A,
Сравнивать современный процессор с разработкой 99го года очень ок
>> Типично для 8/16 битный микропроцессоров, не?
Не. Буду рад увидеть, для кого ещё типично
>>а то, к чему оно якобы довесок, нету.
В семье не без урода. Вы сами говорите «для некоторых»
>> Средний размер флеша в MSP430 где-то 50 кил
Только 4 конфигурации больше 50 (56, 60, 92 и 116/120), остальные 12 штук — от 1кб до 48. Погорячились вы со средним. Кроме того, если писать на C, а не на форте, например, место заканчивается катастрофически быстро.
>>звучат с подтекстом «поэтому я буду и дальше долбиться с AVR»
Не-не, что вы. msp вполне удобно использовать как основной, особенно в носимых автономных девайсах. Скажем, если бы мне нужно было делать GPS-трекер, 430 был бы в числе кандидатов. Или, скажем, датчик давления — там нужен усреднение с накоплением и пересчёт по калибровочной кривой. Калибровочную кривую удобно шить как таблицу констант вместе с программой на флеш, а у msp430 память программ мапится в общее адресное пространство, и есть косвенная адресация как раз для таких целей.
Это вы просто переобщались с ардуинщиками, видимо, что заранее предполагаете фанатизм и категоричность.
Если честно, у меня до последнего абзаца было такое ощущение, что вам не важна точка зрения, вам важно доебаться и доказать, что оппонент неправ. Рад, что я ошибся :)
Не понял, доказательства чего нужны. Учитывая, что «микропроцессор», «микроконтроллер», «микрокомпьютер» и «система на кристалле» крайне раплывчатые термины, доказать можно что угодно.
Лично я имею в виду, что архитектура микроконтроллера имеет много общего с «микроконверторами».
Обозначение «микроконвертор» впервые применила Analog devices, изготавливавшая отличные высокоскоростные АЦП, требовавшие некоторой обвязки. Предполагалось, что код такой обвязки будет исполнять маломощное процессорное ядро.
Если посмотреть вглубь, в общем-то, такое ядро ничем не отличается от микропроцессора, но есть одно но: в msp, как и в упомянутых процессорах от AD, в отличие от обычного микропроцессора (где его ядро — для вас главное), в случае микроконвертора процессорное ядро суть дополнение, осуществляющее накопление и коммутацию потоков данных.
Подчёркивается это его свойствами:
— ядро может тактироваться отдельно от периферии (в msp каждый блок вообще тактируется отдельно),
— обладает большим количеством режимов сна (т.е. сон — его основное времяпрепровождение),
— обладает малым количеством памяти программ, зато имеет на борту EEPROM (для хранения и перезаписи уставок и алгоритмов предобработки),
— набор инструкций и разрядность предназначены для максимально удобного написания коротких программ по обработке данных со встроенного 10- и 12-битного АЦП,
— инструкции длинные, выполняются медленно и тратят много тактов, на большинстве конфигураций даже аппаратный умножитель вынесен в отдельный блок
Если я говорю то же самое, что и вы, и вы согласны с тем, что я говорю всё правильно, но это не имеет отношения к делу, то это означает, что то, что вы говорите, тоже не имеет отношения к делу. Логика :)
А если серьёзно, я о том, что автор рассуждает, при этом использует термины, смысла которых не понимает. Как и классификации, среди которой он выбирает.
Понятно, что на Хабре люди умные, и поняли, -что- именно обсуждается, но для человека с профильным образованием по теме микроконтроллеров статья выглядит ужасно безграмотной — как раз по части терминов. Одно только назвать Raspberry Pi системой на кристалле чего стоит
Строго говоря, msp430 есть не микроконтроллер, а микроконвертор (так заявляет его производитель TI). Т.е. его вычислительные мощности не предназначены для решения общих задач, а являются придатком к АЦП, чтобы выполнять первичную обработку данных и организовывать т.н. «интеллектуальные датчики»
Так я то же самое и говорю. Деление на микроконтроллер и микропроцессор появилось достаточно давно, когда достижимая степень интеграции мало что позволяла. Тогда и было разделение на голый процессор, требующий большого объёма обвязки, зато использующий всю площадь кристалла под вычислительные мощности против контроллера, у которого в самом простом режиме даже внешний тактовый генератор не нужен, но мощности ограничены.
С ростом степени интеграции на кристалле стало можно расположить даже часть согласования с аналоговыми интерфейсами, при том, что там же стоит по-настоящему мощный процессор. Это и стало называться SoC.
Строго говоря, практически все выпускаемые микроконтроллеры, широко используемые и освещённые на Хабре, и есть SoC в изначальной трактовке того термина. Нюанс в том, что в настоящее время термин SoC немного изменился и стал означать, что на кристалле присутствует реконфигурируемая аналоговая часть (близко к плис)
Что-то в голове у автора всё перепуталось. Система-на-Кристалле отличается от микроконтроллера наличием достаточной для работы периферии, включая контроллер памяти, интерфейсы и прочее. С этой, несколько устаревшей точки зрения, современные микроконтроллеры практически все как один есть система-на-кристалле. Никакого отношения к жёсткому/мягкому реальному времени такое деление не имеет — возьмите одноплатник, поставьте на него FreeRTOS, и будет «реальное» время.
В общем, перевод хороший, а вот автор статьи что-то недопонимает или не теми словами пытается нам свои мысли донести
На мой взгляд, хреновый программист в виде прокладки между монитором и клавиатурой — вот он, настоящий рассадник потенциальных ошибок. А грамотно попользованное простое (ESQL) решение, напротив, читается и поддерживается гораздо легче, чем более-менее сложные игрища с ExprTree
А, вероятно, теперь это стало доступно.
В своё время, когда я писал под AVR, то ли по причине отсутствия функционала, то ли по причине переписанной кастомной stdlib и бутстрапперта, это всё не работало, и приходилось закатывать Солнце вручную
Супер. Ещё не хватает бутстрап-кода, который вызовет все конструкторы/деструкторы для статических переменных (они лежат в отдельной секции elf .init/.fini), но он нагугливается
Здорово и полезно для начинающих разработчиков, добавил в избранное — дам коллегам почитать, всё вместе по этой теме ещё не находил.
Однако есть серьёзное замечание. То, что вы привели в качестве примера CER (Constrained Execution Region), никуда не годится и не будет работать: под CER попадает код не в блоке try, а в блоке finally. Хотите что-то сделать под CER — пишите:
System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions(); try {} finally { /*Важный код, который нельзя прерывать*/ }
У вас там есть finally, да, но он для другого, что ещё более запутывает
Ещё одно дополнение: в новом GC, что в 4.5, теперь появилось более оптимальная работа с LOH (как вы помните, там не проходит компактификация кучи, в отличие от GenX) — эксперименты команды разработчиков показывают, что LOH теперь фрагментируется гораздо меньше, а значит, шансы выделить память и уложиться в её меньший объём стали выше
Что сказать, вы опытным путём открыли одно из основных правил пайки — припой должен плавиться не от паяльника, а от температуры спаиваемых деталей. Ваш технологический процесс форсирует наступление нужных условия. Вот и весь прорыв :)
Я бы сказал, что это под вопросом. Может, и оправдано, а может, и нет.
>> Выглядело весьма печально
Я так и сказал: «и в итоге это будет провально по деньгам». Денежный проект я бы по-любому не начал на этой железке, не проведя исследований. Но для исследований — нужна и полезна железка и задача, а заранее сформированное мнение «даже и пробовать исследовать не стоит» — вредно.
>> а не восхищаться что теперь без интерраптов можно писать.
Я никогда не писал без интерраптов, можно я хоть тут попробую?! :)
А если серьёзно, я рад, что мы друг друга поняли.
ARM — да, классные процессоры, мне очень нравятся. И MIPS, понимаете, ли тоже реализация идей классических инженерных задач. И Transmeta с Code morphing. И Tilera с 64 и 100 ядрами. Просто идеи другие. Тут идея, как и в ардуине — там тоже на плате не всё на свете есть. Только тут шилды не надо покупать, можно так изобразить попробовать.
Но видите ли, в чём дело. Мне лично не надо, чтобы вы решили, что этот процессор — лучше ARM. А вам почему-то надо, чтобы я и TolTol решили, что этот процессор — определённо хуже ARM. Непонятно. И я на это указал.
И — смотрите — я вас даже не знаю, а вы мне уже ультиматумы ставите. Остыньте.
Я, как вы говорите, как инженер, пытаюсь подойти бесстрастно. А вот вы уже зачем-то про гей-парады вспоминаете. Похоже, это правда: любая статья Википедии рано или поздно переходит к Гитлеру, любой спор в интернете сводится к упоминанию гей-парадов :)
Никто не требует доказать, доказать — невозможно. Требуют обосновать, т.е. привести аргументированные доводы. А обосновывать на сферических кейсах — я не знаю, как это. Но аргумент «а вот у того контроллера 3 USART, поэтому он лучше, чем тот, у которого 2» — для меня не аргумент. Выбирать надо под задачу.
Как не аргумент, что «мы можем всё реализовать софтверно, у нас много ядер». Конечно, можем. Всё же полное по Тьюрингу. Вопрос только в ресурсах, которых может потребоваться очень много, и в итоге это будет провально по деньгам.
Тут просто оппонент заранее занял точку зрения «софверная реализация» — однозначно плохо. И требует ему доказать, что это не так. А дискуссия-то не об этом, а о том, что если вам надо чуточку периферии, то и такой способ — работоспособен.
Что, впрочем, не отменяет того, что это чип — исследовательский, и даже не то чтобы мелкосерийный, а ещё меньше. И в этом случае вопрос бизнес-эффективности при реализации фич — он как бэ не основной. Очевидно же.
Он не лучше и не хуже, он интересный, не такой. Лет 20-30 назад было неимоверное количество архитектур (не, не так — НЕИМОВЕРНОЕ, одних стековых машин десятка два могу перечислить), сейчас только x86 и ARM на слуху.
А тут «пропеллер» появился. Не хуже и не лучше. Просто другой. Не такой. Никто и не говорит, что он вот прям ща выдавит с рынка всё остальное.
И тут появляетесь вы, и требуете доказать, что он лучше. Вон, посмотрите, весь топик засрали комментариями в стиле «Мадам, я бежал за вами 4 мили, чтобы сказать, как вы мне безразличны». Смешно и грустно.
Но вот касательно того факта, что DIP8 — это именно что поиграться, типа многочисленных EZ-board, arduino и launchpad. Потому что для промышленных серийных применений там, где я видел, чаще используется softcore ARM
Выпуск ARM в DIP8 — это, скорее, популяризаторская мера на радость юным радиогубителям и другим любителям канифольного дыма, чтобы иметь возможность кочергой, нагретой в камине, распаять на макетке и попробовать Cortex. Причём, достаточно неплохая мера
Всё, что Тьюринг-полное, вполне себе может быть general purpose, кто спорит. Особо смысла не, хотя и можно
>> Так вот, они этого не делают.
Общался с инженерами из TI, было это в году 2004-2005. Называют.
>> Это они про Intel x86 что ли с их кучей C-states?
То-то я смотрю, все разработчики софта только и делают, что пишут софт под эти режимы
>>По такту на доступ к памяти асимптотически
От одного до шести тактов на инструкцию, чаще ближе к последнему. Это медленно. Тактовая частота в 8 Мгц тоже маловато для процессора основного назначения
>> просто напомню про современные Cortex A,
Сравнивать современный процессор с разработкой 99го года очень ок
>> Типично для 8/16 битный микропроцессоров, не?
Не. Буду рад увидеть, для кого ещё типично
>>а то, к чему оно якобы довесок, нету.
В семье не без урода. Вы сами говорите «для некоторых»
>> Средний размер флеша в MSP430 где-то 50 кил
Только 4 конфигурации больше 50 (56, 60, 92 и 116/120), остальные 12 штук — от 1кб до 48. Погорячились вы со средним. Кроме того, если писать на C, а не на форте, например, место заканчивается катастрофически быстро.
>>звучат с подтекстом «поэтому я буду и дальше долбиться с AVR»
Не-не, что вы. msp вполне удобно использовать как основной, особенно в носимых автономных девайсах. Скажем, если бы мне нужно было делать GPS-трекер, 430 был бы в числе кандидатов. Или, скажем, датчик давления — там нужен усреднение с накоплением и пересчёт по калибровочной кривой. Калибровочную кривую удобно шить как таблицу констант вместе с программой на флеш, а у msp430 память программ мапится в общее адресное пространство, и есть косвенная адресация как раз для таких целей.
Это вы просто переобщались с ардуинщиками, видимо, что заранее предполагаете фанатизм и категоричность.
Если честно, у меня до последнего абзаца было такое ощущение, что вам не важна точка зрения, вам важно доебаться и доказать, что оппонент неправ. Рад, что я ошибся :)
Лично я имею в виду, что архитектура микроконтроллера имеет много общего с «микроконверторами».
Обозначение «микроконвертор» впервые применила Analog devices, изготавливавшая отличные высокоскоростные АЦП, требовавшие некоторой обвязки. Предполагалось, что код такой обвязки будет исполнять маломощное процессорное ядро.
Если посмотреть вглубь, в общем-то, такое ядро ничем не отличается от микропроцессора, но есть одно но: в msp, как и в упомянутых процессорах от AD, в отличие от обычного микропроцессора (где его ядро — для вас главное), в случае микроконвертора процессорное ядро суть дополнение, осуществляющее накопление и коммутацию потоков данных.
Подчёркивается это его свойствами:
— ядро может тактироваться отдельно от периферии (в msp каждый блок вообще тактируется отдельно),
— обладает большим количеством режимов сна (т.е. сон — его основное времяпрепровождение),
— обладает малым количеством памяти программ, зато имеет на борту EEPROM (для хранения и перезаписи уставок и алгоритмов предобработки),
— набор инструкций и разрядность предназначены для максимально удобного написания коротких программ по обработке данных со встроенного 10- и 12-битного АЦП,
— инструкции длинные, выполняются медленно и тратят много тактов, на большинстве конфигураций даже аппаратный умножитель вынесен в отдельный блок
А если серьёзно, я о том, что автор рассуждает, при этом использует термины, смысла которых не понимает. Как и классификации, среди которой он выбирает.
Понятно, что на Хабре люди умные, и поняли, -что- именно обсуждается, но для человека с профильным образованием по теме микроконтроллеров статья выглядит ужасно безграмотной — как раз по части терминов. Одно только назвать Raspberry Pi системой на кристалле чего стоит
С ростом степени интеграции на кристалле стало можно расположить даже часть согласования с аналоговыми интерфейсами, при том, что там же стоит по-настоящему мощный процессор. Это и стало называться SoC.
Строго говоря, практически все выпускаемые микроконтроллеры, широко используемые и освещённые на Хабре, и есть SoC в изначальной трактовке того термина. Нюанс в том, что в настоящее время термин SoC немного изменился и стал означать, что на кристалле присутствует реконфигурируемая аналоговая часть (близко к плис)
В общем, перевод хороший, а вот автор статьи что-то недопонимает или не теми словами пытается нам свои мысли донести
В своё время, когда я писал под AVR, то ли по причине отсутствия функционала, то ли по причине переписанной кастомной stdlib и бутстрапперта, это всё не работало, и приходилось закатывать Солнце вручную
Однако есть серьёзное замечание. То, что вы привели в качестве примера CER (Constrained Execution Region), никуда не годится и не будет работать: под CER попадает код не в блоке try, а в блоке finally. Хотите что-то сделать под CER — пишите:
System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions();try {} finally { /*Важный код, который нельзя прерывать*/ }У вас там есть finally, да, но он для другого, что ещё более запутывает
Ещё одно дополнение: в новом GC, что в 4.5, теперь появилось более оптимальная работа с LOH (как вы помните, там не проходит компактификация кучи, в отличие от GenX) — эксперименты команды разработчиков показывают, что LOH теперь фрагментируется гораздо меньше, а значит, шансы выделить память и уложиться в её меньший объём стали выше