Определите, что вы подразумеваете под вещами более высокого уровня. Написание драйверов и любого другого типа программного обеспечения, связывающегося с аппаратным обеспечением, - это, вероятно, то, о чем думает большинство людей, когда вы упоминаете встроенное программное обеспечение. Хотя это часть этого, это только малая часть. После того, как вы выполнили все эти настройки, остается написать целое приложение, которое, вероятно, никогда не будет напрямую взаимодействовать с оборудованием, и, скорее всего, в большинстве случаев это большая часть усилий по разработке. На каком-то уровне это может быть сравнимо с программированием на «более высоком» уровне. Однако во встроенном мире вы, вероятно, работаете с некоторыми ограничениями, особенно с точки зрения вычислительной мощности и памяти. Вот список вещей, о которых я думаю ежедневно, которые, вероятно, имеют меньшее значение в разработке более высокого уровня в большинстве случаев.
- Параллельный поток (как защита, так и синхронизация)
- Распределение и освобождение памяти и использование
- Управление кучей (избегая фрагментации)
- Соблюдение сроков в реальном времени
- Приоритизация потоков
- I / 0 производительность
- DMA переводы
- Размеры стека
- Производительность библиотеки
- Языковые функции (исключения раздувают ваш код)
Кроме того, встраиваемые платформы имеют тенденцию быть узкоспециализированными для достижения одной конкретной цели, в отличие от ПК, который предназначен для платформы для вычислений общей гетерогенности. Это означает, что у вас, вероятно, много пользовательского кода, который может быть или не быть переносимым.
Я подозреваю, что вы смотрите на работу, где «встроенный» означает «компьютер в коробке», обычно тот, который выполняет одну конкретную задачу. Вполне вероятно, что под управлением большей части дистрибутива Linux или ОС Microsoft, но он будет достаточно полным, и вы сможете использовать стандартные графические среды разработки и так далее. Встроенная часть действительно появляется, когда устройство поставляется в виде многоканального видеомагнитофона, устройства потоковой передачи мультимедиа или охранной сигнализации.
В наши дни вы можете выполнять большую часть обработки на устройстве мощностью 1 Вт, поэтому определение встраиваемого оборудования соответственно увеличилось. Но даже 20 лет назад у нас были встроенные устройства с батарейным питанием, работающие на довольно стандартной DOS, и мы создавали программы для них, используя IDE дня (например, сканеры штрих-кода Symbol имели библиотеки для C и Pascal, поэтому мы использовали Turbo Pascal на Win3.1 для построить исполняемые файлы). Но мы также поставляли «промышленные ПК», которые загружали DOS, а затем наше программное обеспечение, и ввод был ограничен несколькими большими водонепроницаемыми кнопками, установленными на коробке из нержавеющей стали. 15-дюймовый ЖК-дисплей за стеклом в этой коробке означал, что у нас было много вариантов вывода, но подключение клавиатуры означало открытие коробки (внутри пищевой фабрики). Это может считаться встроенным с некоторых точек зрения. В основном, у пользователя было мало вариантов восстановления после ошибок. - Силовой цикл это или нет.
источник