Òåõíîëîãèè Êîìïîíåíòû è òåõíîëîãèè, ¹ 4’2000 ОПЕРАЦИОННЫЕ СИСТЕМЫ для встраиваемых применений  íàñòîÿùåå âðåìÿ òàêàÿ îáëàñòü ýëåêòðîíèêè, êàê âñòðàèâàåìûå ñèñòåìû, ðàçâèâàåòñÿ ñòðåìèòåëüíûìè òåìïàìè. Ñâÿçàíî ýòî â ïåðâóþ î÷åðåäü ñî çíà÷èòåëüíûì ïðîãðåññîì â îáëàñòè òåõíîëîãèé è áûñòðûì óäåøåâëåíèåì ýëåìåíòíîé áàçû. Åùå íå òàê äàâíî âûðàæåíèå «âñòðàèâàåìàÿ ñèñòåìà» (embedded system) àññîöèèðîâàëîñü ó ìíîãèõ òîëüêî ñ ñèñòåìàìè, ïîñòðîåííûìè íà áàçå 8-ðàçðÿäíûõ ìèêðîêîíòðîëëåðîâ. Îäíàêî ñåé÷àñ óæå íèêîãî íå óäèâèò óïðàâëÿþùàÿ ñèñòåìà, ïîñòðîåííàÿ íà áàçå 32-ðàçðÿäíîãî RISC-ïðîöåññîðà è èìåþùàÿ 64 Máàéò ïàìÿòè. Òàêîé áûñòðûé ïðîãðåññ ïîçâîëÿåò çíà÷èòåëüíî ðàñøèðèòü êðóã ïðèìåíåíèÿ âñòðàèâàåìûõ ñèñòåì. Àëåêñåé Ñèãàåâ [email protected] ействительно, если раньше в какойлибо из областей применение встраиваемых си стем было экономически неоправданным (или даже просто невозможным в силу их небольшой вычислительной мощности), то в настоящее время встраиваемые решения при обретают все большую привлекательность. Сегодня практически любое скольконибудь сложное элек тронное устройство не обходится без применения микроконтроллерных систем, управляющих его функционированием. Быстрое развитие встраиваемых систем естест венным образом повлекло за собой изменения в идеологии разработки программного обеспечения для них. Так, если лет десять назад практически все ПО для встраиваемых применений писалось на ас семблере, то сегодня сложно найти серьезный про ект, в котором код на ассемблере занимает хотя бы 20 % от общего объема. Все чаще при разработке используются языки высокого уровня (в первую очередь C). Соответственно, значительно усложня ются как сами программы, так и процесс их отладки. Языки высокого уровня обладают, помимо удобства использования, еще одним огромным преимущест вом перед ассемблером: программы, написанные на них, гораздо легче переносятся между платформа ми. И если ассемблерную программу при переносе на другое семейство микроконтроллеров приходи лось полностью переписывать, то в программе на языке высокого уровня достаточно просто изменить те участки, которые непосредственно отвечают за взаимодействие с аппаратным обеспечением. Д www.finestreet.ru Однако необходимость даже таких, казалось бы, незначительных, изменений может в больших про ектах представлять собой определенную сложность. Логичным выходом в такой ситуации может служить применение какоголибо рода операционной систе мы, которая будет предоставлять прикладной про грамме стандартный интерфейс, независимый от платформы. Идея применения операционных сис тем не нова, они с успехом используются практичес ки с момента создания первых компьютеров, однако встраиваемые операционные системы должны обладать некоторыми специфическими особеннос тями, главной из которых является относительно ма лый объем кода. Действительно, если для операци онных систем персональных компьютеров компакт ность является приятным и полезным, но отнюдь не необходимым качеством, то с операционными сис темами для встраиваемых применений дело обстоит иначе. Объем доступной памяти, как правило, доста точно невелик, а его расширение (если оно вообще возможно) требует дополнительных материальных затрат, что далеко не лучшим образом сказывается на стоимости продукта в целом. Чаще всего ядро встраиваемой операционной системы занимает по рядка нескольких килобайт, и еще несколько кило байт требуется для различных драйверов. В свете вышесказанного несколько странно звучит назва ние «Embedded Windows NT» (а такая операционная система существует). В целом встраиваемая операционная система по возлагаемым на нее функциям практически не отли чается от операционных систем персональных ком Êîìïîíåíòû è òåõíîëîãèè, ¹ 4’2000 Òåõíîëîãèè пьютеров и должна предоставлять следую щие возможности: · управление памятью (memory manage ment); · управление процессами (tasks manage ment); · интерфейс с периферийными устройствами (ввод/вывод, устройства хранения данных и т. п.); · поддержка различных коммуникационных протоколов. При этом если первые две функции выпол няются ядром операционной системы, то ин терфейс с устройствами и поддержку различ ных протоколов часто выносят в отдельные модули (своего рода аналоги драйверов), что повышает гибкость использования операци онной системы. К настоящему времени спектр имеющихся операционных систем чрезвычайно широк. Условно все операционные системы можно разделить на три категории по заложенным в них возможностям: · системы, обеспечивающие только управле ние памятью и задачами; подобные опера ционные системы присутствуют в том или ином виде практически в каждом устройст ве и имеют очень малый объем (порядка двухтрех сотен строк кода); часто такая операционная система пишется индивиду ально для каждого проекта (при этом она может и не выделяться из программного обеспечения в операционную систему как таковую); как правило, подобные операци онные системы используются при созда нии относительно простых устройств; · системы, имеющие жестко заложенные в них средства взаимодействия с внешним миром; подобные системы, как и предыду щие, разрабатываются для обеспечения надобностей конкретного проекта; такой подход позволяет минимизировать объем кода и добиться максимальной производи тельности в ущерб универсальности ис пользования; · системы, имеющие четко выраженную мо дульность; подобные операционные систе мы чаще всего имеют ядро, которое обес печивает управление памятью и процесса ми, а также взаимодействие процессов между собой; кроме того, имеется набор драйверов для поддержки различных пе риферийных устройств, коммуникацион ных протоколов и т. п.; этот тип операци онных систем является наиболее универ сальным, причем, как правило, имеется несколько реализаций для различных ап паратных платформ. Представленная на следующей странице таблица является результатом продолжитель ных поисков в сети Интернет информации о различных операционных системах. В ней приведена сводная информация о более чем 45 операционных системах различного уров ня сложности. Вся приведенная информация была взята с Webсайтов фирмразработчи ков. Пробелы в таблице означают отсутствие или неясность информации по данному пункту. www.finestreet.ru 63 Òåõíîëîãèè Êîìïîíåíòû è òåõíîëîãèè, ¹ 4’2000 Продукт Разработчик Адрес Поддерживаемые процессоры Nucleus PLUS Accelerated Technology Inc. www.atinucleus.com 6800, 68HC11, 68HC16, 68K, ARM, C16x, ColdFire, H8, MIPS, MPC8xx, PowerPC, SH, SPARC, TI DSPs, V800, x86, MCore, CR16A/B, CR32, … Windows CE Anasoft AppForge AppForge Software Inc. AvSYS RTOS Avocet Systems Inc. e/BSD Berkley Software Design www.bsdi.com/esp SPARC, Intel 386, 486, Pentium TargetOS Blunk Microsystems 68K, MPC8xx, PowerPC CMXRTX CMX Co. www.cmx.com 68HC0/08/11/12/16, 68K, 78K, 80196, x51, ARM, C16x, ColdFire, H8, MELPS 7700, MPC8xx, PIC, PowerPC, SH, TI DSPs, x86, AVR, ST, … DRDOS Caldera Thin Clients Inc. SmartFirmware CodeGen Inc. www.codegen.com Alpha, ARM, i960, MPC8xx, 175PowerPC0A, SH, SPARC, x86 DACS DDCI TADS DDCI ROMDOS Datalight WinLight Datalight RTPX EBS Inc EMAC RTOS EMAC Inc. Echelon RTOS Echelon Corp. RTXC Embedded System Products Enea RTOS ThreadX ARM, MIPS, PowerPC, SH, x86, StrongARM www.appforge.com 68K, ARM, SH, Motorola MCore All processors for which an ANSI С compiler is available. x86 Protected Mode, x86 Real Mode MIPS, SPARC, x86 Protected Mode, x86 Real Mode, x86 Flat Mode www.ddci.com 1750A, 68K, i960 www.datalight.com x86 Protected Mode x86 Real Mode 68K, PowerPC, x86 Protected Mode, x86 Real Mode www.emacinc.com x86 MC3150/3120 Neuron Chip www.rtxc.com 68HC11/12/16, 68K, 80196, x51, ARM, C16x, ColdFire, H8, MPC8xx, PowerPC, TI DSPs, x86, DSP56K, StarCore, MCore, M16C Enea OSE Systems 68K, ARM, MPC8xx, PowerPC Express Logic Inc www.expresslogic.com 68HC11, 68HC12, 68HC16, 68K, ARM, ColdFire, H8, i960, MIPS, MPC8xx, PowerPC, SH, SPARC, TI DSPs, V800, x86, ARC www.gaio.com 68K, ARM, H8, SH, V800 www.ghx.com 68K, ARM, ColdFire, i960, MIPS, MPC8xx, PowerPC, SH, V800 www.hightecrt.com 68K, C16x, PowerPC, x86 Protected Mode Eyrx Eyring Corp. GOS GAIO Technology Inc. Integrity Green Hills Software ThreadX Green Hills Software SOOM Hiware PXROS HighTec EDV Systeme Inferno Inferno Network Software POSEK Integrated Systems Inc. PRISM+ Integrated Systems Inc. PSOSystem Integrated Systems Inc. C Executive JMI Software Systems Inc. PSX JMI Software Systems Inc. AMX KADAK Products Ltd. RTX Keil Software LynxOS Lynx RealTime Systems VRTX Mentor Graphics SMX++ Micro Digital Inc. x86 Protected Mode PowerPC 68HC11, 68HC16, 68K, H8 ARM, PowerPC, x86 Protected Mode, x86 Real Mode, StrongARM 110, 1100 www.isi.com C16x, PowerPC, MCore, M32/R www.isi.com ARM, i960, PowerPC, Mitsubishi M3R/R, MCore, V850E, V830 68K, ARM, MIPS, MPC8xx, PowerPC, x86, Mitsubishi M32/R 29K, 68K, ARM, ColdFire, i860, i960, MIPS, MPC8xx, PowerPC, SH, SPARC, TI DSPs, V800, x86, PARISC, Transputer www.jmi.com 68K, ARM, ColdFire, i960, MIPS, PowerPC, V800, x86 Protected Mode 29K, 68K, ARM, ColdFire, i960, MIPS, MPC8xx, PowerPC, x86, Z80/Z180 www.keil.com 80251, 8051 and derivatives, C166 MIPS, MPC8xx, PowerPC, SH, x86 Protected Mode, uSPARC, MPC8260 www.mentor.com 68K, ARM, MPC8xx, PowerPC, x86 Protected Mode, x86 Real Mode, MCore ColdFire, PowerPC, x86 Protected Mode, x86 Real Mode OS9 Microware Systems Corp. www.microware.com 68K, StrongARM, PowerPC, SH, x86 Protected Mode JSCP NSI Com www.nsicom.com 68K, ARM, i960, MIPS, PowerPC, SH, SPARC, x86, Philips, TriMedia OnTime RTOS On Time Software www.ontime.com x86 Protected Mode www.pharlap.com x86 Protected Mode RTKernel On Time Software TNT Toolsuite Phar Lap Software Inc. Precise/MQX Precise Software Technologies Inc. QNX QNX Software Systems ChorusOS Sun Microsystems Inc. Precise Tasking Inc. SuperTask! US Software TronTask! US Software Tornado Wind River Systems www.finestreet.ru x86 Real Mode 68K, ARM, ColdFire, MIPS, MPC8xx, PowerPC, TI DSPs, x86, 683xx, ADSP2106x, CPU32, DSP56xxx, MCore Www.qnx.com MIPS, PowerPC, x86 Protected Mode, x86 Real Mode ARM, MPC8xx, PowerPC, SPARC, x86 Real Mode Www.tasking.com 68K, MIPS, MPC8xx, PowerPC 68HC11, 68HC16, 68K, 80196, x51, ARM, C16x, ColdFire, i960, MIPS, MPC8xx, PowerPC, SH, SPARC, x86, Z80/Z180, CR16, MCore Www.ussw.com ARM, ColdFire, MPC8xx, SH, x86, CR16, MCore 68K, ARM, i960, MIPS, PowerPC, SH, SPARC, ColdFire, x86 Protected Mode, C16x, MCore, CPU32, RAD6K Òåõíîëîãèè Êîìïîíåíòû è òåõíîëîãèè, ¹ 4’2000 Требования к памяти ROM, килобайт RAM, килобайт Min Max Min Max 3 45 2 4 256 640 0.8 640 2048 2048000 2048 2048 40 5 32 256 168+Stack 128 0.8 1 Минимальн. объем RAM Поддержка Поддержка Исходный на задачу, TCP/IP Java код байт 4 25 16 16 Да Да Нет Нет Нет Нет Да Нет Да Да Нет Нет Да Нет Да Да Да Нет Да Да CodeWarrior $5.000 0.2 280 Да Нет Да Да CMX CMXBug, CMXTracker $1.500 Any DOS;compatible compilers and debuggers 256 0.116 64 1024 Да Нет Да Да Да Нет Да Нет 270 Нет Нет Нет Нет 6 Нет Нет Нет Да 70 54 80 512 1024 10 10 10 10 4 22 8 32 10 64 1 64 4 12 4 2 15 1 1 1024 200+Stack Да Нет Нет Нет Да Нет Нет Да Да Нет Да Да 64 2048 4 1 12 6 1 2 0.6 5 0.05 $39 $10.000 Any DOS;compatible compilers and debuggers $7.50/1000 $7.50/1000 Да Да Да Да GDB Varies Да Нет Нет Да Neuron C, Neuron C Debugger 80 Да Нет Да Да MetaWorks, Microsoft, Microtec, Borland, MetaWare, TASKING, IAR, Cosmic, ARM,... 120 Да Да Да Да SingleStep Debugging Solutions Да Green Hills Software, MetaWare, Diab Data, Metrowerks, GNU, APEX, XRAY, … $6.000– $12.000 $495 Да 15 $7.495– $12.995 Да Да 1024 128 GNU, ARM, Metaware, Microsoft, Borland, Watcom, IAR, Hitachi, Tasking, TI, … Да Да 48 12 Стоимость 250 470 32 Поддерживаемые компиляторы и отладчики 12 128 512 Наличие примеров Да Да 2048 Нет Нет Да Да Microsoft Visual C 1024 Да Нет Да Да GAIO Open Plus $6.000 512 Да Нет Нет Да Green Hills Optimizing Compilers 512 Да Нет Да Да Green Hills Optimizing Compilers $7.500+ 160 Нет Нет Нет Да 200 Да Нет Нет Да TGDB, Fastview DM5.900 512 1024 512 1024 Да Нте Нет Да 1 1 1 5 Нет Нет Нет Да SDS, SearchLight, Tasking, Diab Data Нет Нет Нет Да DiabData, CAD;UL, ARM Consortium, XDUS Да Да Нет Да DiabData, CAD;UL, ARM Consortium, XDUS $14.000 5 22 1 2 300 Да Нет Нет Да Cygnus, Matcom, Green Hills, Borland. SDS, Diab Data, Intel $2.500 25 45 2 4 300 Да Нет Нет Да Diab Data, Cygnus, Green Hills, Matcom,Intel, SDS $3.750 Да Нет Да Да Microsoft, Borland, MetaWare, SDS, ARM, … 8 16 11 16 11 Нет Нет Нет Да dScope 37 263 11 32 8 Да Да Нет Да TotalView, TimeScan, Insure++, Total/db, gdb 8.7 30.5 12 128 16000 128 8 128 8 16000 Да Да Нет Да XRAY Debugger $1.000 1000 Да Да Нет Да Borland, Diab, High, Visual, Watcom $3.500–$6.000 2000 Да Да Да Да UCC + GCC Да Да Нет Да Да Да Нет Да 128 512 Microsoft, Watcom, Borland $1.700 10 16 4 6 512 Да Нет Нет Да Microsoft, Watcom, Borland $550 48 600 17 540 10 Да Нет Да Да Microsoft Visual C/C++ Compiler $4.995 3 40 1.5 128 Да Да Да Да Algorithmics, Visual DSP, ARM, Borland, Diab Data, Green Hills, Mentor Graphics, … $12.500 32 64 8 200 Да Да Нет Да GNU GCC C/C++, Watcom C/C++ Да Да Нет Да Да Нет Да Да Tasking 4 40 32 5 150 7 25 6 30 1024 Да Нет Да Да Microsoft, Watcom, MetaWare, Borland, Diab Data, Cross Code C, Green Hills, MRI, GNU 8 20 6 30 1024 Да Нет Да Да Diab Data, Green Hills, Borland, Microsoft Да Нет Да Нет 15 5 $12.500 $16.500 www.finestreet.ru