Подтвердить что ты не робот

Разность разума между рабочей станцией и встроенными программистами

Как вы думаете, какая разница в мышлении между программистом, выполняющим работу для среды рабочего стола (windows, linux, whatever...), а кто-то работает над встроенной системой?

Простым примером, о котором я могу думать, является то, что во встроенной среде я всегда проверяет, что malloc не является NULL. Большинство кодов я видел, что целевые настольные компьютеры, конечно, не прилежно проверять возвращаемое значение malloc.

Любые другие примеры различий мышления?

4b9b3361

Ответ 1

Забавно, что вы упоминаете malloc() специально в своем примере.

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

malloc() уязвим для фрагментации, не является детерминированным и не прерывается между типами памяти. С пулами памяти вы можете иметь пулы, которые расположены/вытягиваются из супер быстрой SRAM, быстрой DRAM, оперативной памяти с батареей (я видел ее) и т.д.

Есть еще сотни проблем (в ответ на ваш исходный вопрос), но выделение памяти является большим.

также:

  • Уважение/знание аппаратной платформы
  • Не автоматически воспринимать аппаратное обеспечение совершенным или даже функциональным.
  • Осведомленность о некоторых языковых аспектах и ​​особенностях (например, исключениях на С++), которые могут привести к быстрому движению в сторону.
  • Осведомленность о загрузке ЦП и использовании памяти
  • Осведомленность о прерываниях, преимущественном использовании и последствиях для общих данных (где абсолютно необходимо - менее общие данные, тем лучше).
  • Большинство встроенных систем управляются данными/событиями, в отличие от опрошенных; конечно, есть исключения
  • Большинство встроенных разработчиков довольно комфортно относятся к концепции государственных машин и поведению/моделированию состояния.

Ответ 2

Настольные программисты рассматривают ресурсы как практически неограниченные. Память, вычислительная мощность, пространство на диске. Те никогда не кончатся. Встроенные программисты сосредоточены на всех этих.

О, и встроенным программистам также часто приходится беспокоиться о проблемах выравнивания памяти. Настольных кодеров нет. Уход за руками. x86 нет.

Ответ 3

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

Ответ 4

имеет значение

Ответ 5

2 вещи, как уже упоминал Суроот, после того, как вы выпустили настольное приложение, оно не обязательно должно быть "навсегда", особенно в наши дни.

Но во встроенном, как только вы "отправите его", он отправится на Марс, чтобы вы не смогли его вернуть.

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