Операционные системы для встраиваемых применений

№ 4’2000
PDF версия
В настоящее время такая область электроники, как встраиваемые системы, развивается стремительными темпами. Связано это в первую очередь со значительным прогрессом в области технологий и быстрым удешевлением элементной базы.

В настоящее время такая область электроники, как встраиваемые системы, развивается стремительными темпами. Связано это в первую очередь со значительным прогрессом в области технологий и быстрым удешевлением элементной базы. Еще не так давно выражение «встраиваемая система» (embedded system) ассоциировалось у многих только с системами, построенными на базе 8-разрядных микроконтроллеров. Однако сейчас уже никого не удивит управляющая система, построенная на базе 32-разрядного RISC-процессора и имеющая 64 Mбайт памяти. Такой быстрый прогресс позволяет значительно расширить круг применения встраиваемых систем.

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

Быстрое развитие встраиваемых систем естественным образом повлекло за собой изменения в идеологии разработки программного обеспечения для них. Так, если лет десять назад практически все ПО для встраиваемых применений писалось на ассемблере, то сегодня сложно найти серьезный проект, в котором код на ассемблере занимает хотя бы 20 % от общего объема. Все чаще при разработке используются языки высокого уровня (в первую очередь C). Соответственно, значительно усложняются как сами программы, так и процесс их отладки. Языки высокого уровня обладают, помимо удобства использования, еще одним огромным преимуществом перед ассемблером: программы, написанные на них, гораздо легче переносятся между платформами. И если ассемблерную программу при переносе на другое семейство микроконтроллеров приходилось полностью переписывать, то в программе на языке высокого уровня достаточно просто изменить те участки, которые непосредственно отвечают за взаимодействие с аппаратным обеспечением.

Однако необходимость даже таких, казалось бы, незначительных, изменений может в больших проектах представлять собой определенную сложность. Логичным выходом в такой ситуации может служить применение какого-либо рода операционной системы, которая будет предоставлять прикладной программе стандартный интерфейс, независимый от платформы. Идея применения операционных систем не нова, они с успехом используются практически с момента создания первых компьютеров, однако встраиваемые операционные системы должны обладать некоторыми специфическими особенностями, главной из которых является относительно малый объем кода. Действительно, если для операционных систем персональных компьютеров компактность является приятным и полезным, но отнюдь не необходимым качеством, то с операционными системами для встраиваемых применений дело обстоит иначе. Объем доступной памяти, как правило, достаточно невелик, а его расширение (если оно вообще возможно) требует дополнительных материальных затрат, что далеко не лучшим образом сказывается на стоимости продукта в целом. Чаще всего ядро встраиваемой операционной системы занимает порядка нескольких килобайт, и еще несколько килобайт требуется для различных драйверов. В свете вышесказанного несколько странно звучит название «Embedded Windows NT» (а такая операционная система существует).

В целом встраиваемая операционная система по возлагаемым на нее функциям практически не отличается от операционных систем персональных компьютеров и должна предоставлять следующие возможности:

  • управление памятью (memory management);
  • управление процессами (tasks management);
  • интерфейс с периферийными устройствами (ввод/вывод, устройства хранения данных и т. п.);
  • поддержка различных коммуникационных протоколов.

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

К настоящему времени спектр имеющихся операционных систем чрезвычайно широк. Условно все операционные системы можно разделить на три категории по заложенным в них возможностям:

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

Представленная на следующей странице таблица является результатом продолжительных поисков в сети Интернет информации о различных операционных системах. В ней приведена сводная информация о более чем 45 операционных системах различного уровня сложности. Вся приведенная информация была взята с Web-сайтов фирм-разработчиков. Пробелы в таблице означают отсутствие или неясность информации по данному пункту.

Продукт Разработчик Поддерживаемые процессоры Требования к памяти Поддерживаемые компиляторы и отладчики
ROM, килобайт RAM, килобайт
Мин. Макс. Мин. Макс.
Nucleus PLUS Accelerated Technology Inc. 6800, 68HC11, 68HC16, 68K, ARM, C16x, ColdFire, H8, MIPS, MPC8xx, PowerPC, SH, SPARC, TI DSPs, V800, x86, M-Core, C16A/B, CR32,… 3 45 2 4 GNU, ARM, Metaware, Microsoft, Borland, Watcom, IAR, Hitachi, Tasking, TI,…
Windows CE Anasoft ARM, MIPS, PowerPC, SH, x86, StrongARM          
AppForge AppForge Software Inc. 68K, ARM, SH, Motorola, M-Core 256   128    
AvSYS RTOS Avocet Systems Inc. All processors for which an ANSI C compiler is available 0.8 640 0.8 640  
e/BSD Berkley Software Design SPARC, Intel 386, 486, Pentium 2048 2048000 2048 2048  
TargetOS Blunk Microsystems 68K, MPC8xx, PowerPC 40   12   CodeWarrior
CMX-RTX CMX Co. 68HC0/08/11/12/16, 68K, 78K, 80196, x51, ARM, C16x, ColdFire, H8, MELPS 7700, MPC8xx, PIC, PowerPC, SH, TI DSPs, x86, AVR, ST,… 1 5 0.2   CMX CMXBug, CMXTracker
DR-DOS Caldera Thin Clients Inc. x86 Protected Mode, x86 Real Mode 32   128   Any DOS-compatible compilers and debuggers
Smart Firmware CodeGen Inc. Alpha, ARM, i960, MPC8xx, 175 PowerPC0A, SH, SPARC, x86 256 512 256 1024  
DACS DDC-I MIPS, SPARC, x86, Protected Mode, x86 Real Mode, x86 Flat Mode 4 25   270  
TADS DDC-I 1750A, 68K, i960 16 16 0.116 6  
ROM-DOS Datalight x86 Real Mode 48 70 54 80 Any DOS-compatible compilers and debuggers
WinLight Datalight x86 Protected Mode 470 1024 512 1024  
RTPX EBS Inc. 68K, PowerPC, x86 Protected Mode, x86 Real Mode 10 10 10 10  
EMAC RTOS EMAC Inc. x86 4 22 8 32 GDB
Echelon RTOS Echelon Corp. MC3150/3120 Neuron Chip 10 64 1 64 Neuron C, Neuron C Debugger
RTXC Embedded System Products 68HC11/12/16, 68K, 80196, x51, ARM, C16x, ColdFire, H8, MPC8xx, PowerPc, TI DSPs, x86, DSP56K, StartCore, M-Core, M16C 4 12 4   MetaWorks, Microsoft, Microtec, Borland, MetaWare, TASKING, IAR, Cosmic, ARM,…
Enea RTOS Enea OSE Systems 68K, ARM, MPC8xx, PowerPC 2 15 1 1 SingleStep Debugging Solutions
ThreadX Express Logic Inc. 68HC11, 68HC12, 68HC16, 68K, ARM, ColdFare, H8, i960, MIPS, MPC8xx, PowerPC, SH, SPARC, TI DSPs, V800, x86, ARC         Green Hills, Software, MetaWare, Diab Data, Metrowerks, GNU, APEX, XRAY,…
Eyrx Eyring Logic Inc. x86 Protected Mode 32 128 64 2048 Microsoft Visual C
G-OS GAIO Technology Inc. 68K, ARM, H8, H, V800 12 15     GAIO Open Plus
Integrity Green Hills Software PowerPC     4   Green Hills Optimizing Compilers
ThreadX Green Hills Software 68K, ARM, ColdFire, i960, MIPS, MPC8xx, PowerPC, SH, V800     1 2 Green Hills Optimizing Compilers
SOOM Hiware 68HC11/16, 68K, H8 1 12 0.6 5  
PXROS HightTec EDV Systeme 68K, C16xx, PowerPC, x86 Protecter Mode 6   0.05   TGDB, Fastview
Inferno Inferno Network Software ARM, PowerPC, x86 Protected Mode, x85 Real Mode, StrongARM, 110, 1100 512 1024 512 1024  
POSEK Integrated Systems Inc. C16xx, PowerPC, N-Coer, M32/R 1 1 1 5 SDS, SearchLight, Tasking, Diab Data
PRISM+ Integrated Systems Inc. 68K, ARM, MIPS, MPC8xx, PowerPC, x86, Mitsubishi M32/R         Diab Data, CAD-UL, ARM Consortium, XDUS
PSOSystem Integrated Systems Inc. ARM, i960, PowerPC, Mitsubishi M3R/R, M-Core, V850E, V830         Diab Data, CAD-UL, ARM Consortium, XDUS
C Executive JMI Software Systems Inc. 29K, 68K, ARM, ColdFire, i860, i960, MIPS, MPC8xx, PowerPC, SH, SPARC, TI DSPs, V800, x86, PA-RISC, Transputer 5 22 1 2 Cygnus, Matcom, Green Hills, Borland, SDS, Diab Data, Intel
PCX JMI Software Systems Inc. 68K, ARM, ColdFier, i960, MIPS, PowerPC, V800, x86 Protected Mode 25 45 2 4 Diab Data, Cygnus, Green Hills, Matcom, Intel, SDS
AMX KADAK Products Ltd. 29K, 68K, ARM, ColFire, i960, MIPS, MPC8xx, PowerPC, x86, Z80/Z180         Microsoft, Borland, MetaWare, sds, arm,///
RTX Keil Software 80251, 8051, and derivatives, C166 8 16 11 16 dScope
LynxOS Lynx Real-Time Systems MIPS, MPC8xx, PowerPC, SH, x86 Protected Mode, uSPARC, MPC8260 37 263 11 32 TotalViev, TimeScan, Insure++, Total/db, gdb
VRTX Mentor Graphics 68K, ARM, MPC8xx, PowerPC, x86 Protected Mode, x86 Real Mode, M-Core         XRAY Debugger
SMX++ Micro Digital Inc. ColdFire, PowerPC, x86 Protected Mode, x86 Real Mode 8.7 30.5 12   Borland, Diab, High, Visual, Watcom
OS-9 Microware Systems Corp. 68K, StrongARM, PowerPC, SH, x86 Protected Mode 128 16000 128 16000 UCC+GCC
JSCP NSI Com. 68K, ARM, i960, MIPS, PowerPC, SH, SPARC, x86, Philips, TriMedia          
OnTime RTOS On Time Software x86 Protected Mode 8 128 8 128 Microsoft, Watcom, Borland
RTKernel On Time Software x86 Real Mode 10 16 4 6 Microsoft, Watcom, Borland
TNT Toolsuite Phar Lap Software Inc. x86 Protected Mode 48 600 17 540 Microsoft Visual C/C++ Compiler
Precise/MQX Precise Software Technologies Inc. 68K, ARM, ColFire, MIPS, MPC8xx, PowerPC, TI DSPs, x86, 683xx, ADSP2106x, CPU-32, DSP56xxx, M-Core 3 40 1.5   Algorithmics, Visual DSP, ARM, Borland, Diab Data, Green Hills, Mentor Graphics,…
QNX QNX Software Systems MIPS, PowerPC, x86 Protected Mode, x86 Real Mode 32 64 8 32 GNU GCC C/C++, Watcom C/C++
ChorusOS Sun Microsystems Inc. ARM, MPC8xx, PowerPC, SPARC, x86 Real Mode          
Precise Tasking Inc. 68K, MIPS, MPC8xx, PowerPC 4 40 5   Tasking
SuperTask! US Software 68HC11/16, 68K, 80196, x51, ARM, C16x, ColFire, i960, MIPS, MPC8xx, PowerPC, SH, SPARC, x86, Z80/Z180, CR16, M-Core 7 25 6 30 Microsoft, Watcom. MetaWare, Borland, Diab Data, Cross Code, Green Hills, MRI, GNU
TronTask! US Software ARM, ColdFire, MPC8xx, SH, x86, CR16, M-Core 8 20 6 30 Diab Data, Green Hills, Borland, Microsoft
Tornado Wind River Systems 68K, ARM, i960, MIPS, PowerPC, SH, SPARC, ColdFire, x86 Protected Mode, C16xx, M-Core, CPU32, RAD6K 15   5    

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *