

Это учебная серия для разработчиков Hobby OS, которые являются новичками в 64-битной архитектуре Armv8-A. Учебные пособия дадут управляемый, пошаговый тур о том, как написать монолитное kernel операционной системы для embedded system с нуля. Они охватывают реализацию задач общих операционных систем, например, написание серийной консоли, настройка виртуальной памяти и обработку исключений HW. Все при использовании уникальных функций Rust для обеспечения безопасности и скорости.
Веселиться!
С наилучшими пожеланиями,
Андре (@Андре-Рихтер)
PS: Для других языков, пожалуйста, обратите внимание на альтернативные файлы Readme. Например, README.CN.md или README.ES.md . Большое спасибо нашим переводчикам?
kernel .README будет короткий раздел tl;dr , который дает краткий обзор дополнений, и покажет diff исходного кода к предыдущему учебному пособию, чтобы вы могли удобно осмотреть изменения/дополнения.tl;dr . Долгосрочный план состоит в том, что все учебники получают полный текст, но сейчас это эксклюзивно для учебных пособий, где я думаю, что tl;dr и diff недостаточно, чтобы получить эту идею.QEMU .UART .make doc в каждом учебном пособии. Это позволяет вам удобно просматривать широко документированный код.make doc 
Учебные пособия в основном предназначены для распределений на основе Linux . Большинство вещей также будут работать на macOS , но это только экспериментально .
Установите Docker Engine.
( Только Linux ) Убедитесь, что ваша учетная запись пользователя находится в группе Docker.
Приготовьте набор инструментов Rust . Большая часть этого будет обрабатываться при первом использовании через файл Rust-ToolChain.toml. Что осталось для нас, так это:
Если у вас уже установлена версия Rust:
cargo install cargo-binutils rustfiltЕсли вам нужно установить ржавчину с нуля:
curl --proto ' =https ' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME /.cargo/env
cargo install cargo-binutils rustfilt Если вы используете Visual Studio Code , я настоятельно рекомендую установить расширение Analyzer Rust.
( Только macOS ) Установите несколько Ruby драгоценных камней.
В последний раз это было проверено автором с Ruby версией 3.0.2 на macOS Monterey . Если вы используете rbenv , соответствующий файл .ruby-version уже на месте. Если вы никогда не слышали о rbenv , попробуйте использовать это маленькое руководство.
Запустите это в корневой папке репозитория:
bundle config set --local path ' .vendor/bundle '
bundle config set --local without ' development '
bundle install Эта серия пытается уделить внимания пользовательскому дружелюбию. Таким образом, были предприняты усилия по устранению самой большой обезболиваемой в встроенной разработке, насколько это возможно: Toolchain hassle .
Сама ржавчина уже очень помогает в этом отношении, потому что она обладает встроенной поддержкой для кросс-компиляции. Все, что нам нужно для перекрестной компиляции от хоста x86 до архитектуры AArch64 от Raspberry Pi, будет автоматически установлена rustup . Однако, помимо компилятора ржавчины, мы будем использовать еще несколько инструментов. Среди других:
QEMU для подражания нашему ядру в хост -системе.Minipush для загрузки ядра на Raspberry Pi по требованию над UART .OpenOCD и GDB для отладки на цель.Есть много, что может пойти не так при установке и/или скомпилировании правильной версии каждого инструмента на вашем хост -машине. Например, ваше распространение может не предоставить последнюю версию, которая необходима. Или вам не хватает некоторых труднодоступных зависимостей для компиляции одного из этих инструментов.
Вот почему мы используем Docker, когда это возможно. Мы предоставляем сопроводительный контейнер, в котором предварительно установлены все необходимые инструменты или зависимости, и он автоматически тянется, как только это необходимо. Если вы хотите узнать больше о Docker и заглянуть в предоставленный контейнер, пожалуйста, обратитесь к папке Docker Repository.
Поскольку ядро, разработанное в учебных пособиях, работает на реальном оборудовании, настоятельно рекомендуется получить USB -последовательный кабель, чтобы получить полный опыт.
CP2102 .GND и GPIO 14/15 как показано ниже.chainloader , который будет последним файлом, который вам необходимо вручную скопировать на SD-карте на некоторое время. Это позволит вам загрузить учебные ядра во время загрузки по требованию по UART . 
Оригинальная версия учебных пособий началась как вилка удивительных учебников Золтана Балдашти по программированию голого металла на RPI3 в C . Спасибо, что дали мне старт!
Лицензирован под одним из
на вашем варианте.
Если вы явно не заявляете иное, какой-либо вклад, преднамеренно предназначенный для включения в работу вами, как определено в лицензии Apache-2.0, должен быть двойной лицензией, как указано выше, без каких-либо дополнительных условий или условий.