Очевидно, что .NET Framework был бы за пределами
Не обязательно верно.При наличии достаточных ресурсов ПЗУ и ОЗУ (256 КБ / 64 КБ соответственно) на вашем устройстве будет работать .NET Micro Framework .Однако это не обязательно является хорошей причиной для его использования;уже есть два других широко используемых переносимых языка, доступных как для вашей встроенной цели, так и для Windows: C и C ++.Целевой ресурс, необходимый как для C, так и для C ++, минимален - код запуска C / C ++ во время выполнения может иметь размер не более 1 КБ кода, почти все доступные ресурсы могут использоваться вашим кодом приложения, а не средой выполнения.
Хитрость в использовании общего кода на обеих платформах - абстракция .Это будет включать как минимум аппаратную абстракцию и, возможно, абстракцию ОС , если ваша цель использует ядро или планировщик любого типа, например RTOS или библиотеку потоков.
I 'Мы рекомендуем разработать встроенную цель с архитектурой слоя , имеющей по крайней мере слой устройства и прикладной уровень и, как уже упоминалось, возможно, систему уровень , который имеет дело с IPC, синхронизацией и планированием, если используется.У вас могут быть другие интерфейсы более высокого уровня, такие как сеть или файловая система, которые в равной степени выиграли бы от абстракции.Обратите внимание, что стандартные API, такие как BSD-сокеты или stdio, уже считаются абстракцией, поэтому, если ваша цель использует их, у вас будет меньше работы в Windows (небольшие различия между BSD-сокетами и Winsock могут все еще потребовать некоторой работы)
Уровень приложений не будет иметь никаких ОС или аппаратных зависимостей, кроме тех, которые доступны через уровни устройства и системы.Затем вы должны реализовать устройство и системные слои в Windows как симуляцию или переназначение для служб или устройств, доступных в Windows.Некоторые RTOS уже включают симуляторы Windows для тестирования и разработки, но определение собственного уровня API OS, который вы можете портировать между несколькими собственными RTOS и GPOS, позволит переносить код вашего приложения на разные цели как для моделирования, так и для выполнения в реальном времени.быстро.
Если различия в платформах незначительны и локализованы и могут не оправдать уровень абстракции, тогда может быть уместна целевая специфическая условная компиляция.Компиляторы поддерживают предопределенные макросы для архитектуры, ОС или кода, специфичного для компилятора, который можно использовать как для этого локализованного кода, так и для того, чтобы сделать сам код уровня абстракции распространенным там, где существует значительное сходство.