Многие встроенные устройства имеют выход в Интернет. Если они передают конфиденциальные данные, соединение должно быть безопасным. Для этого используются стандартные методы шифрования. Например, сейчас команда КЕДР Solutions работает над медицинским устройством, передающим биометрические данные через Интернет. Такие данные должны быть защищены. Однако шифрование повышает требования к оборудованию, поэтому когда данные не содержат конфиденциальной информации, шифрование не применяется.
- Ограниченность памяти и производительности
Встраиваемые устройства становятся все меньше, а требования к их производительности растут. Хотя в настоящее время нехватка памяти не так критична, как раньше, она остается одной из основных проблем при
разработке встраиваемого ПО.
Ограниченное энергопотребление – еще одна типичная проблема для устройств с батарейным питанием. Для минимизации энергопотребления может потребоваться оптимизация кода, отключение неиспользуемых модулей/периферии в устройстве, а также перевод устройства в спящий режим, когда его работа не востребована.
Хотя программное обеспечение не может «сломаться», как это бывает с железом, оно все равно может выходить из строя. Большинство таких проблем вызвано
неправильной работой с памятью. Вот типичный пример. Процесс 1 вычисляет переменную и помещает значение в ячейку памяти. Это значение требуется для Процесса 2. Поскольку два процесса выполняются параллельно, Процесс 2 может забрать значение из ячейки памяти до того, как Процесс 1 его вычислит, что приводит к сбою.
При написании кода разработчики должны предусмотреть такие ситуации и дать процессам соответствующие инструкции – например, поручить Процессу 2 сперва опрашивать Процесс 1 и забирать значение, только если оно рассчитано.
Иногда непосредственно разработка осложняется тем, что заказчик решает расширить функции устройства или
изменить требования к проекту. Ресурсов аппаратной платформы, выбранной на этапе подготовки, может оказаться недостаточно для новых функций, и команде, возможно, даже придется начинать все сначала.
Оптимизация программного обеспечения играет огромную роль при проектировании встроенных систем, поскольку аппаратные ресурсы всегда ограничены. Одну и ту же программу можно сделать быстрой, но требовательной к памяти или наоборот – нетребовательной к памяти, но медленной. Современные компиляторы предлагают множество типов оптимизации, позволяющих найти баланс между этими крайностями.