Booting Raspberry Pi 3: Difference between revisions
[unchecked revision] | [unchecked revision] |
(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++ |
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 |
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==== |
|||
A bare-metal AArch64 toolchain is available on the AUR for installation. The links are provided here as well as a link |
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 -