ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
9 мая
64965
Evgeny_CD (10.08.2006 21:04, просмотров: 14097)
Фундаментальня размышлизма о RTEMS. ********************** Где что берется ********************** http://www.rtems.org/ - центральное место RTEMS Users List Archive - с хорошим поиском! http://www.rtems.org/ml/rtems-users/ Wiki - много всего интересного http://www.rtems.o …ki/index.php/Main_Page Исходники, доки. Брать последний релиз 4.6.99.3. Тут же тулчейн лежит. ftp://ftp.rtems.com/pub/rtems/ В последнее время часто возникают траблы с ftp (писал в лист - ISP что-то там с фаерволами намудрил). Альетрнативный вариант доступа http://www.rtems.com/ftp http://www.rtems.o …6/august/msg00036.html ********************** Обзор ********************** Исторически RTEMS была первой "взрослой" ОСью, на которую я обратил внимание. Но "дух *nix", которым от RTEMS веет основательно, несколько испугал меня. Потом мое внимание переключилось на eCos - больше чисто "микроконтроллерных" фишек, и мне она в тот момент показалась более понятно и доступной. Теперь вот снова "вернулся". Обзор и выводы ниже. ********************** История ********************** http://www.rtems.o …ex.php/RTEMSReferences Самая ранняя публикация - 1991 год. 15 лет - это уже история! ********************** Докумнетация ********************** Входит в дистрибутив. Та, что на главной странице сайта - устарела. Доки достаточно много, и она вполне качественная. Код - саму ОСь не смотрел; смотрел много портов - код простой и качественный, неплохо откоментированный. Чем-то стиль исходников BSD напоминает. ********************** Реальность RT ********************** ### http://www.slac.st …nf/C011127/WEBI001.pdf Видно, что при использовании native API реальное время остается вполне реальным даже при сильной загрузке системы. MVME2306 - информация о том, что это за плата http://www.innovat …1-to-MVME2308-spec.pdf MPC604 - процессор на этой плате. 300 Мгц - не более 500 MIPS. http://www.freesca …/data_sheet/MPC604.pdf #### http://www.rtems.o …wiki/index.php/CPR-041 In the SCADA industry that this processor was designed for, time stamping of event information is critical. We require millisecond accuracy for events in the system. We run RTEMS with a 1ms clock tick, but we also have a mirosecond counter (between ticks) for precise calculations !!! We have to time synchronise all processors in the network to within 500us on the Arcnet interface so a fast low-latency RTOS was required. The CPR-041 is based on the Coldfire 5307 Процессор - 70 MIPS at 90 MHz http://www.freesca …mmary.jsp?code=MCF5307 Далеко не самый быстрый процессор. И то, что они достигли таких временных характеристик - говорит о многом. ### Zetron Simulcast Paging System - родное для меня :) http://www.rtems.o …imulcast_Paging_System The Zetron High Speed Simulcast Paging System (http://www.zetron. …ish/products/m600.html) consists of one M600 unit and multiple M620 units. Both the M600 and the M620 use the RTEMS operating system running on a Motorola MPC860. Zetron's High Speed Simulcast Paging System employs a single Source Unit (Model 600 Wireless Data Manager) and multiple (up to 1000) Destination Units (Model 620 Wireless Data Encoders). The units are all equipped with GPS receivers, and their time base is synchronized to within 1 microsecond. This is a complicated system with multiple units transmitting the same data from multiple sites, and the bit edges from each transmitter are aligned to within +/- 500ns (using a GPS receiver at each site for time reference). The bit alignment is done using RTEMS-managed interrupts and the 860's onboard timers. Процессор MPC860 - тоже далеко не самый быстрый камень. http://www.freesca …ummary.jsp?code=MPC860 Embedded MPC8xx Core with 88 MIPS at 66 MHz (using Dhrystone 2.1); MPC860P - 106 MIPS at 80 MHz for the MPC860P ### в комплект RTEMS входит test suite, который позволяет протестировать все временные характеристики на целевой платформе при наличии одного свободного таймера. ### В общем, можно смело говорить о реальности реального времени RTEMS в пределах десятков мкс для 100+ DMIPS процессоров. Это дает возможность "похулиганить" - вместо написания полноценного драйвера пишется обработчик ISR, который взаимодействует через IPC (Inter Process Communication) со "спящим" процессом. Вся работа с периферией идет из обычного процесса - MMU нам не мешает. RTEMS поддерживает MMU, но не использует его. ********************** POSIX'овость, стандарты ********************** В моем понимании, RTEMS гораздо более POSIX, чем eCos. http://www.rtems.o …s_Are_Support_By_RTEMS With the addition of file system infrastructure, RTEMS supports approximately 80% of the POSIX 1003.1b-1996 standard. This standard defines the programming interfaces of standard UNIX. This means that much source code that works on UNIX, also works on RTEMS. RTEMS includes a port of the FreeBSD TCP/IP stack and thus supports BSD sockets. It also includes support for numerous networking clients (DHCP, TFTP, NFS, etc.) and servers (FTPD, HTTPD, etc.). Есть порт стандарного PPPd. Есть вообще много разного софта, портированного под RTEMS. В честности, NFS client. Это очень удобно для отладки. RTOS State of the Art Analysis - очень интересный обзор http://www.ocera.o …1-month6/WP1/D1.1.html http://www.ocera.o …/WP1/D1.1.html#AEN2041 RTEMS executive does not implement multiprocess environment with separated application address spaces. As a result, next functions supporting independent process creation and deletion are not implemented: fork(), execl(), execv(), execle(), execve(), execlp(), execvp(), pthread_atfork() and wait(). RTEMS executive is focused on multithread applications and its Task Manager supports full set of functions in classic and POSIX API. Cancellation functions are implemented by Cancellation Manager. RTEMS implements all standard POSIX 1003.1b IPC mechanisms for concurrent threads synchronization and communication. Interrupts are not converted to signals or other asynchronous events. They are handled by any C routine which was connected to the given interrupt vector. An interrupt handler can be established by any normal thread, kernel driver is not needed. ### Программеры из http://www.nsg.ru/ говорили мне о том, что им удавалось портировать под RTEMS серьезные Unix софты с минимальным "перехаком". А они на RTEMS собаку съели - она долгое время использовалась у них в маршрутизаторах (сейчас, правда, они перешли на Linux). NSG долгое время висела на сайте RTEMS в списке главных контрибуторов. ********************** Файловая система ********************** In-Memory FileSystem (IMFS). The IMFS is a full featured POSIX filesystem that keeps all information in memory. Есть хорошая дока. Описано, как писать порты любых FS для RTEMS. Есть некий FAT16/32 (без lfn). Вроде как есть дрова для IDE и CF. То, что только RAM - не здорово, но при нынешних ценах (32М - 3...5$, 64M - 6...10$) пережить можно. А вот то, что это POSIX по полной программе (mount/unmount и т.д.) - это здорово! На первое время можно похулиганить: взять efsl, запустить ее как отдельный процесс, и синхронизировать содержимое носителя с RAM FS. http://sourceforge.net/projects/efsl/ http://www.efsl.be/ ### YAFFS (YAFFS2) http://www.aleph1.co.uk/node/344 http://www.aleph1.co.uk/node/129 - портирование http://www.aleph1.co.uk/node/127 - портирование http://www.aleph1.co.uk/node/130 - многопоточность Простая и эффективня файловая система. Полагаю, будет совсем не сложно прикрутить ее к RTEMS. ********************** Базы данных ********************** ### Berkeley DB http://dev.sleepycat.com/ Вся работа с ОСью вынесена в отдельные директории. При сборке для *NIX используются automake, autoconf. Конфигурируется очень гибко. Скорее всего, удастся собрать с разумными усилиями. ********************** Графика ********************** http://www.microwindows.org/ Есть качественный порт для RTEMS 4.6. ********************** Toolchain ********************** Все построено на automake, autoconf. На первый взгляд, кошмаристо. Но если упереться рогом, и "прорюхать" эти automake, autoconf - то все остальное будет уже просто. Тулчейн используется свой, GNU, слегка пропатченный. Лежит на FTP. !!! Очень интересно !!! Народ умудрился собрать тулчейн под Win32 без Cygwin DLL (используя MinGW), http://www.rtems.o …inGW_Tools_for_Windows и вроде как все это работает! http://www.rtems.c …6/august/msg00000.html "I have built a m68k multilib RTEMS on Windows with the tools in a cmd box." В скором времени обещаны скрипты, чтобы можно было весь процесс из-под VS запустить! Одно но - automake, autoconf нужно использовать либо Cygwin, либо MSYS (часть проекта MinGW) версии этих тулзов http://www.mingw.org/download.shtml Таким образом, вырисовывается следующая среда для разработки: * написание софта в красивой виндузятной IDE (на тот случай, если с VIM не удастся "сростись") * "тестовая" (поиск тупых ошибок) компиляция в Win32 версии компилера из-под IDE * окончательная сборка проекта под Cygwin или даже VmWare-Linux * дебаггинг - под Cygwin или VmWare-Linux ### Building RTEMS for the ColdFire with Cygwin/WinNT http://sca.uwaterl …ire/starting-rtems.htm ********************** Симуляторы ********************** http://www.rtems.o …iki/index.php/Emulator - подробно все расписано ### http://www.skyeye.org/ Порт RTEMS для edb7312 (отладочная борда для Cirrus EP7312) успешно работает в симуляторе: http://www.rtems.c …december/msg00156.html http://www.rtems.c …/january/msg00041.html ### SID http://sourceware.org/sid/ Есть такой документ: eCos and SID on ARM PID target HOWTO http://www.asisi.co.uk/ecos_sid.html Порта RTEMS для PID7T нет (древняя отладочная плата от ARM; атиквариат - даже доки на плату не найти), но, полагаю, на основе этого документа можно запустить RTEMS на SID (это будет не просто). ### http://www.slicer.ca/coldfire/ - Motorola ColdFire emulator По сообщению Victor V. Vengerov работает! I have got mcf5206elite BSP running on this simulator today. http://www.rtems.c …/january/msg00060.html ### Синтетические порты Для Unix - есть. В доке где-то упоминается, что чуть ли не под Cygwin синтетический порт можно запустить. ********************** Удаленная отладка ********************** GDB через COM или Ethernet. По Ethernet отладке - наиболее хорошо она проработана для 68K/ColdFire и PPC http://www.slac.st …n/rtems/gdb/index.html ********************** Консоль ********************** Среди всякого софта для RTEMS на сервере есть некое подобие консоли и Telnet сервер. Набор команд там не шибко большой, но эту прогу можно использовать в качестве образца при написании своих приложений, которые тестовый printf/scanf через IP делают. ********************** Порты ********************** Из наиболее интересных портов: * AT91RM9200 * AMD Au1100, 1500 * Cirrus EP7312 * MCF5206e, 5272, 5282, 5235 * MPC5200 (правда старый вариант, не B), PPC403, PPC405. * пЫсюк, понятно, тоже не забыт Т.е. все стратегически интересные камни на месте. Нет портов на новые и очень интересные ColdFire (5208, 5270) - но они не сильно от 5282 отличаются - полагаю, можно перехачить с разумными усилиями. ********************** Автоматическое тестировние софта ********************** Рассмотрим вариант с AT91RM9200. Есть замечатальня "народная" плата Электроникс http://electronix. …ndex.php?showforum=139 Есть не менее замечательная плата от dch EVM9200 http://www.ucrouter.ru/hardware.html На плату Электроникс COMA поставил Linux http://electronix. …ex.php?showtopic=17534 В процессе этого геройского поступка на плату "поставился" U-Boot. А он умеет сам по TFTP грузить с хост машины образ и запускать его. В результате получаем полностью автоматическую систему тестирования на реальном железе без "крутых" JTAG за много килобаксов * собрали проект * обресетили плату * U-Boot загрузил и запустить образ * Через сокеты взаимодействуем с нашим test suite. * "repeat untill передохнут" Подробнее: TDD (Test-driven Development) применительно к embedded системам: похоже, я догнал, как это должно быть устроено. http://www.caxapa. …echo/arm.html?id=63285 http://electronix. …ex.php?showtopic=18859 Развитие идей по упрощенной отладке. http://www.caxapa. …echo/arm.html?id=63474 http://electronix. …=findpost&p=136520 ********************** Скриптовые языки ********************** На сервере лежат следующие порты: * TCL 8 * Python 2.4 LUA нет, но учитывая POSIX'ность RTEMS - полагаю, больших проблем не будет. ********************** Вывод ********************** Есть uCOS - все просто и понятно. Есть Linux - популярно, но не шибко понятно (мне) и сильно не просто (для меня) - если дрова писать и отлаживать. Есть eCos. Много о ней писали. Если бы был открытый и доступный порт на AT91RM9200 и ColdFire - больше бы ничего не искал. Есть RTEMS. Самый большой кайф - это, вне всякого сомнения - отлаженное ядро и базовые сервисы типа RAM FS и IP стек. И самое сложное при освоении этой оси будет сделать первый "hello, world!" на консоль. В некотором смысле выборе между uCOS и RTEMS - это как выбор между асм и С. Самый большой кайф именно от RTEMS я увидел в том, что нет необходимости писать дрова по какой-то специальной технологии. Это обычный процесс под управлением ОСи, и дебажится он точно так же. В этом смысле RTEMS похожа на uCOS. Продолжая аналогию, можно сказать, что это как С с асмовыми вставками. А фундаментльное отличие от uCOS состоит в готовых сервисах операционки - Pthreads всякие там и пр. Т.е. можно комбинировать толстые и тяжелые софты, рассчитанные на POSIX, с достаточно простыми самописными "модульками", обслуживающими периферию в реальном времени. RTEMS также можно рассматривать как ступеньку в подготовке на пути к Embedded Linux. Освоив RTEMS, разобравшись с этими automake, autoconf, потом почти наверняка будет куда проще "по-взрослому" с линухом разобраться. С автоматическим тестированием все тоже хорошо получается. Поскольку все серьезные современные камни имеют встроенный Ethernet, то, как я писал выше, можно сделать полностью автоматический test suite без особых материальынх усилий (только как следует разобраться с уже существующими софтами). Судя по всему, RTEMS очень хорошо подходит для "трехслойной идеологии" * ASM, дрова * C, RTOS * "обобщенные сущности" как процессы под RTOS, скриптовый движек. Об этом будет пост чуть позже. ********************** Вопросы ********************** Есть кто живой, кто с RTEMS работал? Может я чего плохого не нашел в этой ОСьке? ********************** Приложения ********************** ### Omni-NFS Enterprise * NFS сервер * NFS клиент * FTP сервер http://www.xlink.c …_page/enter2k_demo.htm Omni-NFS Enterprise for Windows 2000/2003/NT/98/95/ME/XP Ссылки для скачивания: Version: 5.2 Platform: Win 2000/2003/NT/9x/ME/XP File Name: nfse2k.exe File Size: 6,056 KB ftp://ftp.xlink.com/pub/xlink_demo/nfse2k.exe ftp://ftp.xlink2.com/pub/xlink_demo/nfse2k.exe Клизьмы водятся в изобилии http://astalavista.box.sk/ ### GNU Autoconf, Automake, and Libtool By Vaughan, V. Gary, Ben Elliston, Tom Tromey, Ian Lance Taylor Publisher : New Riders Publishing Pub Date : October 06, 2000 ISBN : 1-57870-190-2 Pages : 432 Slots : 1.0 Качать: http://rapidshare. …/28613880/GNU.rar.html http://upload.caxapa.ru/GNU.rar Пароль: hgfdyufdtffytc