_


Предисловие

Моей первой книге, "микроСи/ОС, Ядро Реального Времени", исполнилось 6 лет. За это время по всему миру было продано более 15 тысяч экземпляров. Когда меня попросили сделать вторую редакцию, я подумал, что это будет довольно простой задачей: внести несколько исправлений, прояснить концепции, добавить пару функций в ядро и т.д. Однако если у Вас есть первое издание, Вы заметите, что в новой редакции "микроСи/ОС-II" подверглась существенной доработке. По некоторым причинам я не был удовлетворен небольшими поправками. Также, когда издатель сказал, что теперь книга выйдет в твердом переплете, я решил, что книга должна оправдывать Ваши затраты на нее, добавил более 200 страниц нового материала и переписал большинство старых. Я добавил руководство по портированию, чтобы облегчить перенос микроСи/ОС-II на различные процессоры. Я также добавил главу, посвященную переходу с микроСи/ОС на микроСи/ОС-II.

Сам код микроСи/ОС-II, в основном, остался тем же, что и в микроСи/ОС, за исключением некоторых дополнительных возможностей, однако он лучше прокомментирован, а также должен легче переноситься на процессоры разной архитектуры. МикроСи/ОС-II обеспечивает все возможности микроСи/ОС, а также следующие новые возможности:

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

создании задачи,
удалении задачи,
переключении контекста,
срабатывании таймера.

• новая функция создания стека, обеспечивающая дополнительные возможности,
• проверка стека,
• функция, возвращающая версию микроСи/ОС-II
• и так далее.

Цели микроСи/ОС-II

Вероятно, главная цель микроСи/ОС-II - сохранить обратную совместимость с микроСи/ОС (по крайней мере, с точки зрения приложения). Код под микроСи/ОС может потребовать лишь небольших доработок для работы под микроСи/ОС-II, если вообще они будут нужны. Поскольку микроСи/ОС-II построена на том же ядре, что и микроСи/ОС, она так же надежна. Я задействовал условную компиляцию, позволяющую Вам при необходимости уменьшать количество оперативной памяти, необходимой микроСи/ОС-II. Это особенно полезно в проектах с ограниченными ресурсами. Я также добавил возможности, описанные в предыдущем разделе, и оптимизировал код.

Когда книга только задумывалась, я хотел прояснить основные концепции, описанные в первом издании и внести дополнительные пояснения о том, как работает микроСи/ОС-II. Также меня часто просили сделать главу о том, как переносить микроСи/ОС-II, и поэтому такая глава входит в эту книгу.

Предполагаемая аудитория

Эта книга предназначена для программистов встроенных систем, специалистов и студентов, заинтересованных операционными системами реального времени. МикроСи/ОС-II содержит высокопроизводительное ядро жесткого реального времени и может использоваться в коммерческих разработках (см. приложение F, лицензирование). Вместо написания собственного ядра Вы можете подумать о микроСи/ОС-II. Как и я, Вы найдете, что написание ядра не так просто как это выглядит вначале.

Я предполагаю, что Вы знакомы с Си и имеете хотя бы небольшое представление о языке ассемблера. Вы также должны хорошо понимать устройство микропроцессора.

Что нужно для использования микроСи/ОС-II

Код, прилагающийся к книге, предполагает использование IBM-PC/AT или совместимого компьютера (минимум 80386) под DOS 4.x или более поздней версией. Код компилировался при помощи Borland International's C++ V3.1. Понадобится около 5 Мбайт свободного места на жестком диске. Я также компилировал и выполнял код в DOS-окне Windows95.

Чтобы использовать микроСи/ОС-II на другом, нежели PC, процессоре, необходимо или самостоятельно портировать микроСи/ОС-II, или воспользоваться одним из имеющихся на официальном web-сайте по адресу http://www.uCOS-II.com. Также Вам понадобятся подходящие средства разработки, такие как ANSI-совместимый компилятор Си, ассемблер, линкер и отладчик.

История микроСи/ОС-II

Много лет назад я, работая в Dynalco Controls, проектировал прибор, базирующийся на процессоре Intel 80C188, и мне требовалось ядро реального времени. У моего предыдущего работодателя я использовал одно хорошо известное ядро, назовем его ядро А, однако в данном случае мы нашли его слишком дорогим для данного применения. Тогда мы нашли более дешевое (1000$) ядро, назовём его ядро Б, и начали проектирование на его основе. Мы потратили два месяца, пытаясь запустить пару простых задач. Мы звонили производителю ежедневно, чтобы получить помощь в данной работе. Производитель заявлял, что ядро написано на Си. Мы инициализировали каждый объект, используя ассемблер. Хотя производитель был довольно терпелив, мы решили, что с нас хватит. У нас оставалось мало времени, и мы не хотели потратить ещё кучу времени, отлаживая это недорогое ядро. Как оказалось, мы были одни из первых покупателей, а ядро ещё не было полностью тестировано и отлажено.

Чтобы войти в колею, мы решили вернуться к использованию ядра А, которое стоило около 5000$ за один комплект разработчика, а также нужно было платить производителю около 200$ с каждого проданного нами блока. Это потребовало много денег, но дало нам возможность работать. Мы запустили наши задачи с этим ядром за два дня! Однако за три месяца проектирования один из наших инженеров нашел нечто похожее на ошибку в ядре. Мы отправили код производителю и действительно, нам подтвердили, что ошибка в ядре имеется. Производитель обеспечивал 90-дневную гарантию, но к тому моменту этот срок прошел, поэтому нам пришлось платить ещё 500$ в год за "поддержку". Мы доказывали торговому представителю несколько месяцев, что они должны исправить ошибку бесплатно, так как мы помогли им, найдя её. Они не соглашались. В конце концов, мы сдались и заключили контракт на обслуживание. Производитель исправил эту ошибку через шесть месяцев! Да, через шесть месяцев. Мы были весьма недовольны, и, что важнее, сорвали график поставок нашего изделия. В целом, потребовалось около года, чтобы заставить наше устройство работать с ядром А надежно. Однако я должен сказать также, что больше у нас проблем с этим ядром не было.

И вот в то время я наивно подумал: "А что трудного в написании ядра. Всё, что оно должно делать - это просто сохранять и восстанавливать регистры процессора". Так я решил попробовать и написал своё ядро (в основном по ночам и выходным). У меня ушло около года, чтобы сделать моё ядро таким же хорошим (а в чем-то и лучше) как ядро А. Я не хотел заниматься продажей своего кода, потому что на рынке и так было уже где-то 50 ядер, так зачем же ещё одно?

Тогда я подумал о написании статьи для журнала. Так как ядро было написано на Си, сначала я пошел в "C User's Journal" ("журнал пользователей Си", CUJ), где, как я слышал, предлагали 100$ за опубликованную страницу, в отличие от других журналов, где давали 75$ за страницу. В моей статье было около 70 страниц, так что это была бы неплохая компенсация за то время, которое я работал над написанием ядра. К сожалению, статья была отклонена. Тому были две причины. Во-первых, статья была слишком длинной, а журнал не хотел печатать серии. Во-вторых, им не нужна была "ещё одна статья о ядре".

Тогда я решил обратиться в журнал программирования встроенных систем (ESP, Embedded Systems Programming), так как моё ядро предназначалось для встроенных систем. Я связался с редактором ESP, господином Тайлером Сперри, Mr. Tyler Sperry, и сказал ему, что у меня есть ядро, статью о котором я хотел бы опубликовать в его журнале. Ответ был тот же, что и в первом журнале - "ещё одна статья о ядре?" Я сказал, что это современное вытесняющее ядро, сравнимое со многими коммерческими образцами, и что он может поместить исходный код на BBS журнала. Я звонил Тайлеру по два или три раза в неделю, пока он не сдался (вероятно, он уже устал от моих звонков) и не решил опубликовать статью. Статья была ужата с 70 страниц до 30, и была напечатана в смежных номерах журнала (май и июнь 1992 года). Вероятно, это была самая популярная статья 1992 года. В первый же месяц с BBS ESP было скачано более 500 копий исходного кода. Тайлер мог опасаться за свою жизнь, поскольку производители ядер реального времени были недовольны публикацией в его журнале. Я думаю, эти производители поняли качество и возможности микроСи/ОС. Статья была первой такого рода, она открывала внутренности ядра реального времени, поэтому у производителей оставалось меньше секретов.

В то же время как статья вышла в журнале ESP, мне позвонил доктор Бернард Вильямс, Dr.Bernard Williams, из издательства R&D Publications (издатель журнала пользователей Си), то есть спустя 6 месяцев после первого контакта с журналом CUJ. Он оставил сообщение моей жене о том, что заинтересован в статье. Я перезвонил ему и сказал что-то вроде "А Вы не думаете, что немного опоздали? Статья уже печатается в журнале ESP". Берни сказал: "Нет, нет, Вы не понимаете, так как статья такая длинная, я хочу сделать из неё книгу". Первоначально Берни просто хотел издать статью такой как она есть, так что книга имела бы около 80 страниц. Я сказал ему: "Если я собираюсь писать книгу, то хочу сделать это хорошо". Тогда я потратил ещё около 6 месяцев, добавляя содержание тому, что сейчас известно как первое издание. Всего в книге стало около 250 страниц. Я сменил название μCOS на μC/OS, чтобы внести ясность с произношением. Таким образом, "микроСи/ОС, Ядро Реального времени" вышла в свет. Однако объёмы продаж были небольшими. Берни и я предполагали продать 4-5 тысяч экземпляров, но с той скоростью, что была, мы могли надеяться продать максимум 2000 экземпляров. Берни говорил, что книга сначала должна стать известной и продолжал рекламировать её в CUJ ещё около года.

За месяц до того как книга вышла, я поехал на мою первую конференцию по встраиваемым системам, Embedded Systems Conference, в Санта-Клара, Santa Clara, CA. Там я встретил Тайлера Сперри и показал ему черновое издание моей книги. Он очень быстро взглянул на неё и сказал что-то вроде: “Не хотите сделать доклад на следующей конференции по встраиваемым системам, в Атланте?” Не найдя ничего лучше я сказал: “Конечно, а о чем я должен говорить?” Он сказал, а как насчет “Использование малых ядер реального времени”? “Отлично”, - сказал я. По дороге домой из Калифорнии я думал ”Во что я втягиваюсь? Я никогда не говорил перед таким большим число людей! А если я сваляю дурака? А если то, о чем я буду говорить, всем известно? Люди платят приличные деньги за участие в конференции”. Следующие шесть месяцев я готовил свой доклад. На конференции у меня было 70 с небольшим слушателей. В первые двадцать минут я, должно быть, потерял фунт пота. Однако после лекции меня окружили человек пятнадцать, которые сказали, что им мой доклад понравился, и книга тоже. Я был приглашен на следующую конференцию того года, но не смог в ней участвовать. Я принял участие в следующей конференции, в Бостоне, в 1994 году, и с тех пор я стал регулярно участвовать в конференциях ESC. Теперь я читаю, по крайней мере, 3 лекции на каждой конференции в среднем для 200-300 слушателей. На сегодняшний день мы продали во всем мире больше 15000 экземпляров “МикроСи/ОС, Ядро Реального Времени”. Я ответил более чем на 1000 e-mail сообщений из различных стран. В 1995 книга была переведена на японский язык и опубликована в журнале “Интерфейс” в Японии. МикроСи/ОС была портирована на следующие процессоры:

Analog Devices AD21xx,
Advanced Risc Machines ARM6, ARM7,
Hitachi 64180, H8/3xx, SH series,
Intel 80x86 (Real and PM), Pentium, Pentium-II, 8051, 8052, MCS-251, 80196, 8096,
Mitsubishi M16 and M32,
Motorola PowerPC, 68K, CPU32, CPU32+, 68HC11, 68HC16,
Philips XA,
Siemens 80C166 и TriCore,
Texas instruments TMS320,
Zilog Z-80 и Z-180,
и другие.

В 1994 году я решил написать мою вторую книгу, “Элементы встроенных систем, модули на Си”, Embedded Systems Building Blocks, Complete and Ready-to-Use Modules in C. Она содержит более 600 страниц. По некоторым причинам она не стала такой же популярной, как микроСи/ОС, хотя она содержит много ценной информации, которой не найдешь больше нигде. Я всегда думал, что это идеальная книга для людей, только начинающих работать с встроенными системами.

В 1998 году я открыл официальный интернет сайт микроСи/ОС www.uCOS-II.com. Я предполагаю размещать на нём различную информацию по микроСи/ОС, микроСи/ОС-II, ответы на частозадаваемые вопросы (FAQs), обновления, полезные ссылки и тому подобное.

В 1992 году я не мог и представить, что написание статьи может так изменить мою жизнь. Я встретил много очень интересных людей, некоторые из них стали моими друзьями. Я отвечаю на каждое e-mail сообщение, которое получаю. Я считаю, что если Вы потратили время на написание письма, то я должен Вам ответить. Я надеюсь, Вам понравится эта книга.

Благодарности

Во-первых, я хотел бы поблагодарить мою жену за поддержку, понимание и особенно терпение. Мэнон, должно быть, слышала слова “Ещё только одну неделю!” несколько десятков раз, пока я писал эту книгу. Также я хотел бы поблагодарить моих детей, Джеймса и Сабрину за долгие часы, проведенные мной за компьютером,с которыми они должны были примириться. Я надеюсь, когда-нибудь они меня поймут.

Также я хочу поблагодарить м-ра Найала Мёрфи, mr. Niall Murphy, за внимательное ознакомление с рукописью и ценные замечания. Отдельное спасибо м-ру Элэйну Шебро, mr. Alain Chebrou, и м-ру Бобу Паддоку, mr. Bob Paddock, за тщательную проверку кода микроСи/ОС-II.

Я хочу поблагодарить всех замечательных людей в издательстве R&D Technical Books за их помощь в том, что сделало книгу реальностью, а также за терпение моих настойчивых требований сделать всё по-моему.

И, наконец, я хотел бы поблагодарить всех людей, приобретавших книги “МикроСи/ОС, Ядро Реального Времени” и “Элементы Встраиваемых Систем”.

Сайт создан в системе uCoz