2009-10-08 1 views
8

Мне нужно выбрать тему диссертации в ближайшее время, и я рассматривал возможность внедрения операционной системы для архитектуры, которая не является x86 (я склоняюсь к ARM или AVR). Причина, по которой я избегаю x86, состоит в том, что я хотел бы получить некоторый опыт работы со встроенными платформами, и я (возможно, неправильно) считаю, что задача может быть проще при выполнении в меньших масштабах. У кого-нибудь есть указатели на сайты или ресурсы, где есть некоторые примеры этого. Я прочитал большинство, если не все вопросы OSDev о переполнении стека, и я также знаю об AvrFreaks и OSDev. Кроме того, если кто-то имеет опыт в этой области и хотел бы предложить некоторые рекомендации относительно подхода или платформы, это было бы очень признательно.Разработка операционной системы, отличной от x86

Благодаря

+0

Или вы могли бы присоединиться ко мне в поисках клона Exec (AmigaOS) для оригинальной Amiga. ;-) –

ответ

7

Разработка ОС (RT) не является тривиальной задачей. Это очень образовательный, хотя. Мой совет - запустить аппаратное обеспечение самостоятельно. ПК является хорошей отправной точкой, поскольку он поставляется с множеством возможностей ввода/вывода и хорошей отладкой. Если вы создаете приложение типа виртуальной машины, вы можете создать что-то с помощью простых возможностей платформы (выход в консоль, некоторые кнопки/индикаторы - хорошее начало). Кроме того, вы можете использовать файлы, например, для вывода времени (расписания). Если вы начнете с «голого металла», вам придется начинать с нуля. Отладка на светодиоде (включение/выключение/мигание) очень сложна и требует много времени. Моим вторым советом является раннее определение вашей области: это планировщик, механизмы связи или файловые системы, которые вас интересуют ...? Все это может легко закончиться в проекте продолжительностью жизни.

Samek, Miro, Practical UML Statecharts in C/C++ содержит несколько интересных разделов на микроядре. Это одна из моих любимых книг. Advanced PIC Microcontroller Projects in C: From USB to RTOS with the PIC 18F Series , похоже, охватывает некоторые ваши интересы; Хотя я еще не прочитал. Operating Systems: Internals and Design Principles также может принести хорошую информацию. Он охватывает все аспекты от планировщика до сетевого стека. Удачи!

2

Contiki может быть хорошая вещь, чтобы исследовать. Он очень маленький, работает на микроконтроллерах и является открытым исходным кодом. Он имеет сильное предвзятое отношение к сети и коммуникациям, но, возможно, вы можете пропустить эти части и сосредоточиться на ядре.

1
+0

Спасибо за ссылку, сейчас она сидит на моей книжной полке, это был справочный текст для моей темы «Архитектура операционной системы» в прошлом году =] – mdec

2

Если вы выберете ARM, возьмите копию руководства разработчика системы ARM (Sloss, Symes, Wright). Link to Amazon

В главе 11 обсуждается внедрение простой встроенной операционной системы с большими пояснениями и примерным кодом.

4

Похоже, вы должны получить копию книги Жана Лаброса MicroC/OS.

Похоже, он только что обновил его.

http://micrium.com/page/press_room/news/id:40

http://micrium.com/page/home

Это хорошо документированы книга, описывающая внутренние работы ОСРВ, написанной в C и перенесенного на многих встраиваемых процессоров. Вы также можете запустить его на x86, а затем переложить на другой процессор.

2

ARM и AVR являются мелом и сыром - вы охватили это очень широкое!

Вы можете создать совершенно другую и более сложную ОС для ARM, чем AVR (если вы не говорите об AVR32, возможно, это совершенно другая архитектура?).

AVR будет гораздо более сдерживающим до такой степени, что задача может быть просто тривиальной для сферы вашего тезиса. Даже указание ARM не сужает его; low-end ARM-части имеют небольшие встроенные памяти, без MMU и простых периферийных устройств; более высокие конечные части имеют MMU, кэши данных/команд, часто графический процессор, иногда FPU, аппаратное исполнение байт-кода Java и многие другие сложные периферийные устройства. Термин «ARM» охватывает ARM7, ARM9, ARM11, Cortex M3, Cortex M8, а также ряд архитектур, предназначенных для использования в ASIC и FPGA, - поэтому вам нужно немного сузить его?

Если вы выберете ARM, взгляните на these resources. В частности, руководства Insider's от Hitex и «Building bare-metal ARM with GNU», они помогут вам получить доску «вверх» и сформировать отправную точку для вашей ОС.

1

Первое, что я рекомендую, - сузить тему диссертации. ОС - повсеместно, хорошо изучены и разработаны. Какую новую идею вы надеетесь преследовать?

Это AvrXочень небольшое микроядро, которое я профессионально использовал на микроконтроллерах AVR. Он написан на сборке. Один человек начал переносить его на C, но не закончил порт. Было бы полезно либо финализировать порт на C, либо сделать C-порт для архитектуры AVR32.

1

OS не должен быть плотно соединен с любым процессором, поэтому ARM или x86 не имеют значения. Это будет более серьезная тема, если мы начнем обсуждать, включен ли ARM, а x86 - нет. Во всяком случае, существует много мест, в которых процессоры x86 используются для разработки встроенного программного обеспечения.

Я полагаю, что большая часть кода ядра будет простой C lanugage. Существует множество ОС, которые уже доступны, например, встроенный Linux, бесплатная версия Itron, minix и т. Д. Это будет непростой задачей.

Но, с другой стороны, вы можете попробовать, встроенный в порт linux для платформ, на которых он еще не работает. Это будет действительно полезно для всего мира.

2

Как ни крути, меня недавно интересовала платформа Arduino, чтобы изучить некоторые хакерские трюки с помощью более опытных друзей. Был также this thread для парня, заинтересованного в написании ОС для него (хотя это и не его основное намерение).

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

1

RTOS почти никогда не относится к архитектуре. Обратитесь к любой архитектуре RTOS, доступной в сети, и вы заметите, что уровень абстракции CPU/Hardware абстрагирует процессор. Конкретные части платы (которые касаются периферийных устройств, таких как COM-порты, таймеры и т. Д.) Абстрагируются пакетом поддержки плат.

Для начала ознакомьтесь с тем, как многопоточность работает в RTOS, попробуйте реализовать простой код переключения контекста для выбранного вами CPU; это будет включать код для создания контекста потока, сохранения контекста и восстановления сохраненного контекста. Этот код станет основой вашего уровня абстракции оборудования. Первоначальная разработка может быть легко выполнена с использованием программного симулятора для выбранного ЦП.

Я согласен с плакатом, который предложил прочитать книгу, uCOS-II, Jean Labrosse. Образцы кода переключения контекста, особенно для x86, должны быть просто поиском google!