Booting Raspberry Pi 3: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
(Created page with " This is a tutorial on bare-metal OS development on the AArch64 architecture. This article oriented to the Raspberry Pi 3, but is aimed to be as device agnostic as possible. ...")
 
No edit summary
Line 1: Line 1:


This is a tutorial on bare-metal OS development on the AArch64 architecture. This article oriented to the Raspberry Pi 3, but is aimed to be as device agnostic as possible.
This is a tutorial on bare-metal OS development on the AArch64 architecture. This article oriented to the Raspberry Pi 3 (RPi 3), but is aimed to be as device agnostic as possible. Therefore, some sections will be specific to the RPi 3 and will be marked.


This is the author's very first ARM system and wiki page. I learn as I write and will continue to develop this page once I feel comfortable enough at the subjet to share.
This is the author's very first ARM system and wiki page. I learn as I write and will continue to develop this page once I feel comfortable enough at the subjet to share.


== Preamble ==
== Preamble ==
This article assumes that you have all of the necessary materials needed to begin developing on your respective hardware. Other assumptions are that you are comfortable with low-level programming using C/C++ and the GNU Make buildsystem. Such details are not in the scope of this article and must be done before proceeding to the next steps.
This article assumes that you have all of the necessary materials needed to begin developing on your respective hardware. Other assumptions are that you are comfortable with low-level programming using C/C++, GNU Make buildsystem, and that you are comfortable enough about OS development and hardware to not be confused.. Such details are not in the scope of this article and must be done before proceeding to the next steps.


This article is also intended for beginner users who want to get set up developing on the architecture, not for those who want to develop a full OS. Although some insight can be derived for the advanced audience. This article also assumes that you are comfortable enough about OS development and hardware to not be confused.
This article is also intended for beginner users who want a minimal solution for creating/starting an operating system, although some insight can be derived for the advanced audience.


== Preperations ==
== Preperations ==
'''Cross Compiler'''
====Cross Compiler====


A bare-metal AArch64 toolchain is available on the AUR for installation. The links are provided here as well as a link to the publisher of the toolchain.
A bare-metal AArch64 toolchain is available on the AUR for installation. The links are provided here as well as a download link from the publisher for Windows users.


https://www.linaro.org/downloads/
https://www.linaro.org/downloads/
Line 19: Line 19:


https://aur.archlinux.org/packages/aarch64-elf-newlib-linaro-bin/
https://aur.archlinux.org/packages/aarch64-elf-newlib-linaro-bin/

====RPi 3: Firmware====



== Overview ==

By now you should have your cross compiler set up. The compiler binaries have the same name as they usually would with "aarch64-elf-" prefixing them (e.x. aarch64-elf-gcc). For this example, three files are used:

*start.S -
*kernel.c -
*linker.ld -

Revision as of 17:59, 14 April 2018

This is a tutorial on bare-metal OS development on the AArch64 architecture. This article oriented to the Raspberry Pi 3 (RPi 3), but is aimed to be as device agnostic as possible. Therefore, some sections will be specific to the RPi 3 and will be marked.

This is the author's very first ARM system and wiki page. I learn as I write and will continue to develop this page once I feel comfortable enough at the subjet to share.

Preamble

This article assumes that you have all of the necessary materials needed to begin developing on your respective hardware. Other assumptions are that you are comfortable with low-level programming using C/C++, GNU Make buildsystem, and that you are comfortable enough about OS development and hardware to not be confused.. Such details are not in the scope of this article and must be done before proceeding to the next steps.

This article is also intended for beginner users who want a minimal solution for creating/starting an operating system, although some insight can be derived for the advanced audience.

Preperations

Cross Compiler

A bare-metal AArch64 toolchain is available on the AUR for installation. The links are provided here as well as a download link from the publisher for Windows users.

https://www.linaro.org/downloads/

https://aur.archlinux.org/packages/aarch64-elf-gcc-linaro-bin/

https://aur.archlinux.org/packages/aarch64-elf-newlib-linaro-bin/

RPi 3: Firmware

Overview

By now you should have your cross compiler set up. The compiler binaries have the same name as they usually would with "aarch64-elf-" prefixing them (e.x. aarch64-elf-gcc). For this example, three files are used:

  • start.S -
  • kernel.c -
  • linker.ld -