Architectures/ARM/Secret Decoder Ring

From FedoraProject

< Architectures | ARM(Difference between revisions)
Jump to: navigation, search
(Getting Involved)
m
 
(43 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{autolang|base=yes}}
 
=Secret Decoder Ring=
 
=Secret Decoder Ring=
Moving to ARM - A secret decoder ring for Fedora users wishing to learn more about Fedora on ARM processors
+
Moving to ARM - A secret decoder ring for Fedora users wishing to learn more about Fedora on ARM processors.
Main Points:
+
* [http://piratepad.net/L1jH2TLCBO Original Document]
 
==Introduction==
 
==Introduction==
ARM chips are the most widely-produced processor family in the world; they have historically been used in cell phones and embedded applications, and are increasingly used in tablet devices and low-power-consumption servers.
+
ARM chips are the most widely-produced processor family in the world; they have historically been used in cell phones and embedded applications, but were originally designed as desktop processors, and are increasingly used in tablet devices and low-power-consumption servers.
 +
 
 
The Fedora-ARM project is an initiative to bring Fedora to this processor family.
 
The Fedora-ARM project is an initiative to bring Fedora to this processor family.
  
 
====Why ARM?====
 
====Why ARM?====
 
* Low Power Consumption / Better efficiencies
 
* Low Power Consumption / Better efficiencies
* High availability / lower cost
+
* High levels of device integration -- "system on a chip" designs, with reduced space and cooling requirements
 +
* Readily available from multiple vendors
 +
* Low cost
 +
 
 
====Why does Fedora care about ARM?====
 
====Why does Fedora care about ARM?====
* Emerging technology
+
* Emerging technology (as a general purpose computing platform)
 
* Growing user base
 
* Growing user base
  
 
==Understanding ARM==
 
==Understanding ARM==
* Brief (very brief!) history of ARM
+
* The history of the ARM architecture - [http://en.wikipedia.org/wiki/ARM_architecture#History here]
* Different ARM cores and instruction sets (v5/v6/v7/v8, A8, A9, A15, etc.)
+
* Different ARM cores - [http://en.wikipedia.org/wiki/List_of_ARM_microprocessor_cores here]
** software floating point vs. hardware floating point
+
===Software floating point vs. Hardware floating point===
** extended instruction sets (thumb, neon, etc.)
+
Fedora currently offers two flavours of ARM - 'arm(sfp)' and 'armhfp'. This is a reference to whether floating point values are passed to functions via CPU registers (sfp) or FPU registers (hfp); note that both API variants can use the FPU to perform arithmetic.
* Kernel support for ARM / device tree
+
 
* Things to know before you get started
+
Here is the background: In older ARM chips (prior to ARM v7 "Application Profile"), the floating point unit (FPU, typically a vector floating point unit or "VFP") was optional. Therefore, function arguments were passed in the CPU registers or on the stack. However, when an FPU is available, moving floating-point values from the CPU registers to the FPU registers and back again has a significant cost which negates some of the advantage of having the additional arithmetic hardware. When the FPU became mandatory with ARMv7, it made sense to pass floating-point arguments directly in FPU registers. This is an incompatible ABI change, so programs which pass value in the CPU registers are incompatible with libraries that pass values in the FPU registers (and vice versa).
====What is U-Boot====
+
 
 +
=== Currently-Supported ARM Architectures ===
 +
 
 +
'''armv7hl''' -  32-bit, little-endian, hfp for ARM v7 processors. Supported from F15 onwards.
 +
 
 +
'''armv5tel''' - 32-bit, little-endian, sfp for ARM v5 to v7 processors. Supported until F18 (including F18 updates).
 +
 
 +
(Community builds: Seneca is building for the armv6hl architecture specifically for the [[Architectures/ARM/F18/Remixes#Raspberry_Pi Raspberry Pi]])
 +
 
 +
=== Future ARM Architectures ===
 +
 
 +
'''aarch64''' - 64-bit (little-endian and hfp are assumed) for ARMv8+ processors. This is currently being [[Architectures/ARM/AArch64| bootstrapped]].
 +
 
 +
=== ARM Form Factors ===
 +
Being the most popular architecture in the world, ARM processors can be found in a variety of form factors that include:
 +
* Tablets/Notebooks (Google Chromebook)
 +
* Development Boards (Pandaboard, Beagleboard, Trimslice)
 +
* Hyperscale Server Systems (Calxeda Highbank)
 +
 
 +
===Additional ARM technologies===
 +
* [http://en.wikipedia.org/wiki/ARM_architecture#Thumb Thumb(2,EE)]
 +
* [http://www.arm.com/products/processors/technologies/jazelle.php Jazelle]
 +
* [http://www.arm.com/products/processors/technologies/neon.php NEON]
 +
* [http://www.arm.com/products/processors/technologies/dsp-simd.php DSP & SIMD]
 +
* [http://www.arm.com/products/processors/technologies/trustzone.php Trustzone]
 +
* [http://www.arm.com/products/processors/technologies/biglittleprocessing.php big.LITTLE Processing]
 +
 
 +
===What is U-Boot===
 
U-Boot -the Universal Boot Loader is the firmware used on embedded systems such as ARM, MIPS and Embedded Power architectures. It performs the task of other bootloader's by loading the Linux kernel and operating system into memory for execution, but is also responsible for hardware initialization comparable to the BIOS on X86 hardware.
 
U-Boot -the Universal Boot Loader is the firmware used on embedded systems such as ARM, MIPS and Embedded Power architectures. It performs the task of other bootloader's by loading the Linux kernel and operating system into memory for execution, but is also responsible for hardware initialization comparable to the BIOS on X86 hardware.
 +
* Additional information on [http://www.denx.de/wiki/U-Boot U-Boot]
 +
 
==== Why U-Boot?====
 
==== Why U-Boot?====
 
The Basic Input/Output System (BIOS) is exclusively available on x86 systems and performs a variety of tasks outside of just loading the kernel into memory. While BIOS on ARM is feasible, development costs exceed the potential benefits and ARM systems use the faster bootloader approach. The Unified Extensible Firmware Interface (UEFI) is replacing the BIOS on modern computers and is also compatible with the ARM architecture.  
 
The Basic Input/Output System (BIOS) is exclusively available on x86 systems and performs a variety of tasks outside of just loading the kernel into memory. While BIOS on ARM is feasible, development costs exceed the potential benefits and ARM systems use the faster bootloader approach. The Unified Extensible Firmware Interface (UEFI) is replacing the BIOS on modern computers and is also compatible with the ARM architecture.  
* Different versions of U-Boot
+
* There are many variations of U-Boot which includes - vboot, aboot, hboot.
** vboot
+
 
** aboot
+
** hboot
+
 
===Generating addresses for kernel/initrd/dtb===
 
===Generating addresses for kernel/initrd/dtb===
  
Line 35: Line 67:
  
 
====Platforms supported by Fedora====
 
====Platforms supported by Fedora====
* Trimslice
+
* [[Architectures/ARM/F18/Pandaboard|Pandaboard]]
* Panda
+
* [[Architectures/ARM/F18/Trimslice|Trimslice]]
* BeagleBoard
+
* [[Architectures/ARM/F18/BeagleBoard-xM|Beagleboard-xM]]
* BeagleBone
+
* [[Architectures/ARM/F18/GuruPlug|GuruPlug (Kirkwood Devices)]]
* Kirkwood (GuruPlug/PogoPlug/Dreamplug)
+
* [[Architectures/ARM/F18/HighBank|Calxeda EnergyCore (HighBank)]]
* Versatile Express emulation through QEMU
+
For virtualization through QEMU:
 +
* [[Architectures/ARM/F18/Versatile_Express|Versatile Express]]
  
 
====Platforms supported by Fedora Remixes====
 
====Platforms supported by Fedora Remixes====
 
* XO 1.75
 
* XO 1.75
 
* OpenBlocks AX3
 
* OpenBlocks AX3
* Allwinner A10-based devices
+
* [[Architectures/ARM/F18/Remixes#Allwinner_A10 |Allwinner A10-based devices]]
** Gooseberry
+
* [[Architectures/ARM/F18/Remixes#Samsung_Chromebook|Samsung Chromebook]]
* iMX devices
+
* [[Architectures/ARM/F18/Remixes#Raspberry_Pi |Raspberry Pi]]
* Samsung Chromebook
+
* Raspberry Pi
+
  
 
=== Once my device is running Fedora, how do I get developing/contributing to Fedora ARM?===
 
=== Once my device is running Fedora, how do I get developing/contributing to Fedora ARM?===
Line 56: Line 87:
 
* Hang out in the IRC channel
 
* Hang out in the IRC channel
 
** IRC: {{fpchat|#fedora-arm}} on http://freenode.net
 
** IRC: {{fpchat|#fedora-arm}} on http://freenode.net
* Help patch packages that are failing to build on ARM
+
* Join our weekly meeting:
 +
** IRC: {{fpchat|#fedora-meeting-1}} each Wednesday at 20:00 UTC (4PM EDT) on http://freenode.net ([https://fedoraproject.org/wiki/Architectures/ARM/Meetings/Archive/ archives])
 +
* Help fix packages that are failing to build on ARM
 
** [http://142.204.133.82/jon/koji/kc.f18.diff.html Fedora 18]
 
** [http://142.204.133.82/jon/koji/kc.f18.diff.html Fedora 18]
 
** [http://142.204.133.82/jon/koji/kc.f19.diff.html Fedora 19]
 
** [http://142.204.133.82/jon/koji/kc.f19.diff.html Fedora 19]
Line 68: Line 101:
 
* [[Koji|Koji Overview]]
 
* [[Koji|Koji Overview]]
 
** [[Using_the_Koji_build_system|Using the Koji build system]] (includes cli and web interface. Use of fedpkg)
 
** [[Using_the_Koji_build_system|Using the Koji build system]] (includes cli and web interface. Use of fedpkg)
 +
 +
====Koji-shadow====
 +
Koji-Shadow is a script that is used by secondary architectures to 'follow' package builds performed on the primary architecture (PA) [[http://koji.fedoraproject.org Koji instance]]. When a build is submitted on PA, the script will pick it up and submit the build for completion on the secondary architecture. This ensures secondary architectures build the same packages used in primary within a reasonable time frame, developers need to only submit their package once, and it is propagated to all secondary architectures running Koji-Shadow. Koji-Shadow is included in the 'koji-utils' package.
 +
 
=====More information on Koji=====
 
=====More information on Koji=====
 
* [[koji/ServerHowTo| Run Your Own Koji Build Server]]
 
* [[koji/ServerHowTo| Run Your Own Koji Build Server]]
Line 73: Line 110:
 
* [[koji/Policies| Defining hub policies]]
 
* [[koji/Policies| Defining hub policies]]
  
 +
====Bodhi====
 +
[https://fedorahosted.org/bodhi/ Bodhi] pronounced as bo-dee is a buddhist term for the wisdom by which one attains enlightenment. Bodhi is a modular web-based system that facilitates the process of publishing package updates for Fedora. It maintains a single stage of repositories by adding/updating/removing packages.
 +
* For more information on [[Bodhi|Bodhi]]
 +
 +
==The Future of Fedora and the ARM Architecture==
 +
====Promotion to a Primary Architecture====
 +
ARM is currently considered a Secondary Architecture in Fedora and would greatly benefit from being promoted to a primary architecture, a detailed draft proposal can be found [[Architectures/ARM/Planning/Primary|here]].
  
*** Koji-shadow
+
====Future Boot Options====
 +
* Grub2
  
*** bohdi and package updates
+
====Standards and Engineering Bodies====
*** qemu
+
* [http://www.linaro.org/ Linaro]

Latest revision as of 05:16, 27 July 2013

Contents

[edit] Secret Decoder Ring

Moving to ARM - A secret decoder ring for Fedora users wishing to learn more about Fedora on ARM processors.

[edit] Introduction

ARM chips are the most widely-produced processor family in the world; they have historically been used in cell phones and embedded applications, but were originally designed as desktop processors, and are increasingly used in tablet devices and low-power-consumption servers.

The Fedora-ARM project is an initiative to bring Fedora to this processor family.

[edit] Why ARM?

  • Low Power Consumption / Better efficiencies
  • High levels of device integration -- "system on a chip" designs, with reduced space and cooling requirements
  • Readily available from multiple vendors
  • Low cost

[edit] Why does Fedora care about ARM?

  • Emerging technology (as a general purpose computing platform)
  • Growing user base

[edit] Understanding ARM

  • The history of the ARM architecture - here
  • Different ARM cores - here

[edit] Software floating point vs. Hardware floating point

Fedora currently offers two flavours of ARM - 'arm(sfp)' and 'armhfp'. This is a reference to whether floating point values are passed to functions via CPU registers (sfp) or FPU registers (hfp); note that both API variants can use the FPU to perform arithmetic.

Here is the background: In older ARM chips (prior to ARM v7 "Application Profile"), the floating point unit (FPU, typically a vector floating point unit or "VFP") was optional. Therefore, function arguments were passed in the CPU registers or on the stack. However, when an FPU is available, moving floating-point values from the CPU registers to the FPU registers and back again has a significant cost which negates some of the advantage of having the additional arithmetic hardware. When the FPU became mandatory with ARMv7, it made sense to pass floating-point arguments directly in FPU registers. This is an incompatible ABI change, so programs which pass value in the CPU registers are incompatible with libraries that pass values in the FPU registers (and vice versa).

[edit] Currently-Supported ARM Architectures

armv7hl - 32-bit, little-endian, hfp for ARM v7 processors. Supported from F15 onwards.

armv5tel - 32-bit, little-endian, sfp for ARM v5 to v7 processors. Supported until F18 (including F18 updates).

(Community builds: Seneca is building for the armv6hl architecture specifically for the Architectures/ARM/F18/Remixes#Raspberry_Pi Raspberry Pi)

[edit] Future ARM Architectures

aarch64 - 64-bit (little-endian and hfp are assumed) for ARMv8+ processors. This is currently being bootstrapped.

[edit] ARM Form Factors

Being the most popular architecture in the world, ARM processors can be found in a variety of form factors that include:

  • Tablets/Notebooks (Google Chromebook)
  • Development Boards (Pandaboard, Beagleboard, Trimslice)
  • Hyperscale Server Systems (Calxeda Highbank)

[edit] Additional ARM technologies

[edit] What is U-Boot

U-Boot -the Universal Boot Loader is the firmware used on embedded systems such as ARM, MIPS and Embedded Power architectures. It performs the task of other bootloader's by loading the Linux kernel and operating system into memory for execution, but is also responsible for hardware initialization comparable to the BIOS on X86 hardware.

  • Additional information on U-Boot

[edit] Why U-Boot?

The Basic Input/Output System (BIOS) is exclusively available on x86 systems and performs a variety of tasks outside of just loading the kernel into memory. While BIOS on ARM is feasible, development costs exceed the potential benefits and ARM systems use the faster bootloader approach. The Unified Extensible Firmware Interface (UEFI) is replacing the BIOS on modern computers and is also compatible with the ARM architecture.

  • There are many variations of U-Boot which includes - vboot, aboot, hboot.

[edit] Generating addresses for kernel/initrd/dtb

[edit] Quick Start

[edit] What's the quickest way to get Fedora on my device?

Download the pre-built images corresponding to your device and following the instructions for writing the image to your media.

[edit] Platforms supported by Fedora

For virtualization through QEMU:

[edit] Platforms supported by Fedora Remixes

[edit] Once my device is running Fedora, how do I get developing/contributing to Fedora ARM?

[edit] Understanding the Fedora tools

[edit] Koji

Koji is the software that builds RPM packages for the Fedora project. It uses Mock to create chroot environments to perform builds. To download the source code, report bugs, join the mailing list etc., see the Koji project website .

[edit] Koji-shadow

Koji-Shadow is a script that is used by secondary architectures to 'follow' package builds performed on the primary architecture (PA) [Koji instance]. When a build is submitted on PA, the script will pick it up and submit the build for completion on the secondary architecture. This ensures secondary architectures build the same packages used in primary within a reasonable time frame, developers need to only submit their package once, and it is propagated to all secondary architectures running Koji-Shadow. Koji-Shadow is included in the 'koji-utils' package.

[edit] More information on Koji

[edit] Bodhi

Bodhi pronounced as bo-dee is a buddhist term for the wisdom by which one attains enlightenment. Bodhi is a modular web-based system that facilitates the process of publishing package updates for Fedora. It maintains a single stage of repositories by adding/updating/removing packages.

  • For more information on Bodhi

[edit] The Future of Fedora and the ARM Architecture

[edit] Promotion to a Primary Architecture

ARM is currently considered a Secondary Architecture in Fedora and would greatly benefit from being promoted to a primary architecture, a detailed draft proposal can be found here.

[edit] Future Boot Options

  • Grub2

[edit] Standards and Engineering Bodies