[RTEMS Project] #2898: x86_64 BSP

RTEMS trac trac at rtems.org
Thu Mar 2 21:36:14 UTC 2017


#2898: x86_64 BSP
-----------------------------+--------------------------
 Reporter:  Tanu Hari Dixit  |       Owner:  Chris Johns
     Type:  project          |      Status:  assigned
 Priority:  normal           |   Milestone:  Indefinite
Component:  bsps             |     Version:  4.11
 Severity:  normal           |  Resolution:
 Keywords:  SoC, BSP         |
-----------------------------+--------------------------
Changes (by Gedare):

 * owner:  (none) => Chris Johns
 * status:  new => assigned


Old description:

> = x86_64 BSP =
>
> [[PageOutline(1-5, Contents, inline)]]
>
> == Mentors ==
> Chris Johns
>
> == Students ==
>
> TBD.
>
> == Status ==
>
> Looking for funding.
>
> = Introduction =
>
> This project involves the creation of an x86_64 BSP for RTEMS to replace
> the aging i386 PC BSP. The BSP is to boot on current Off The Self (OTS)
> PC hardware, x86 dev boards and emulators in popular emulation software.
>
> This BSP is to support 64bit only, there is no need to support 32bit.
>
> The i386 BSP contains legacy support and this is becoming harder and
> harder to maintain and some parts are not supported on newer hardware.
> There is no need to support any legacy hardware.
>
> = Project =
>
> == Goal ==
>
> To remove the i386 BSP and replace with a fully functional RTEMS with
> SMP, TLS, dynamic loading, and libbsd support.
>
> == Prerequisite ==
>
> * Knowledge of x86_64 ASM, C Programming language.
> * Knowledge of hardware and low level drivers.
> * Knowledge of low level debugging.
> * Knowledge of x86_64 Intel processors.
> * Knowledge of FreeBSD kernel source would help.
> * Requires x86_64-rtems tool configuration.
> * Requires QEMU,
> * Requires modern PC hardware, e.g. a recent motherboard or a Minnow Max
> board.
>
> == Resources ==
>
> * Current RTEMS developers.
> * Use existing code instead, e.g. FreeBSD, Intel.
>
> = Tasks =
>
> The following are the tasks:
>
> == Tools ==
>
> 1. Build and verify x86_64 tools.
> 1. Check suitable floating point multilib variants are being built and
> are functioning.
> 1. Confirm newlib support is valid. Check `setjmp`/`longjmp` support is
> functioning.
> 1. Check Thread Local Storage (TLS) is supported.
>
> == CPU Kit ==
>
> Add support for the x86_64 architecture.
>
> It is still no clear if this is a new architecture or something added to
> the i386 architecture that exists in the `cputkit/score/i386`. Consider
> the effect support for any hyper-visors needs may have.
>
> The tools for this architecture are different to the i386-rtems tools so
> it could be a new architecture. This means the i386 support could be
> removed including the tools however this may effect any existing hyper-
> visor or partitioned system support.
>
> == BSP ==
>
> Add support for:
>
> 1. Add support for UEFI booting. Evaluate using an ASM generated table
> header or adding a tool to create the PC COFF+ format file. Use the
> FreeBSD support in the FreeBSD kernel source.
> 1. Support UEFI and Multiboot formats.
> 1. Support boot loader command line arguments.
> 1. Add support for ACPI using Intel's ACPICA. Best to base this on the
> FreeBSD code in it's kernel source.
> 1. Add support for APIC.
> 1. Add support for SMP.
> 1. Support low level remote debugging.
> 1. Thread Local Storage (TLS) support.
>
> === Console ===
>
> The i386 PC has legacy console support plus support for newer PCI UARTS.
> The i386 BSP code can be used as reference however I do not encourage
> reuse because the code's structure is not of a standard I would accept.
> Further to this, boot modes such as UEFI have the video hardware in
> graphics mode or the hardware can be headless and console IO can be
> redirected by the UEFI bios settings. This means a more flexibly and
> simplified console structure is required that can support redirection.
>
> The redirection to a boot loader such as UEFI adds another complication.
> At some point RTEMS needs to take over the hardware and so `printk` need
> to be able to take over the related hardware, eg a serial port. This may
> mean some form of video switching from a graphics mode to text mode.
> Using a graphics mode with text is fine for testing however in production
> the slow down is not acceptable.
>
> === Timer ===
>
> TDB
>
> = Acknowledgements =
>
> None.
>
> = Miscellaneous Sections =
>
> As the project progresses, you will need to add build instructions, etc
> and this page will evolve from a project description into a HOWTO.
>
> = References =
>
> * TBD

New description:

 = x86_64 BSP =

 [[PageOutline(1-5, Contents, inline)]]

 == Mentors ==
 Chris Johns, Pavel Pisa, Joel Sherrill, Gedare Bloom

 == Students ==

 TBD.

 == Status ==

 Looking for funding.

 = Introduction =

 This project involves the creation of an x86_64 BSP for RTEMS to replace
 the aging i386 PC BSP. The BSP is to boot on current Off The Self (OTS) PC
 hardware, x86 dev boards and emulators in popular emulation software.

 This BSP is to support 64bit only, there is no need to support 32bit.

 The i386 BSP contains legacy support and this is becoming harder and
 harder to maintain and some parts are not supported on newer hardware.
 There is no need to support any legacy hardware.

 = Project =

 == Goal ==

 To remove the i386 BSP and replace with a fully functional RTEMS with SMP,
 TLS, dynamic loading, and libbsd support.

 == Prerequisite ==

 * Knowledge of x86_64 ASM, C Programming language.
 * Knowledge of hardware and low level drivers.
 * Knowledge of low level debugging.
 * Knowledge of x86_64 Intel processors.
 * Knowledge of FreeBSD kernel source would help.
 * Requires x86_64-rtems tool configuration.
 * Requires QEMU,
 * Requires modern PC hardware, e.g. a recent motherboard or a Minnow Max
 board.

 == Resources ==

 * Current RTEMS developers.
 * Use existing code instead, e.g. FreeBSD, Intel.

 = Tasks =

 The following are the tasks:

 == Tools ==

 1. Build and verify x86_64 tools.
 1. Check suitable floating point multilib variants are being built and are
 functioning.
 1. Confirm newlib support is valid. Check `setjmp`/`longjmp` support is
 functioning.
 1. Check Thread Local Storage (TLS) is supported.

 == CPU Kit ==

 Add support for the x86_64 architecture.

 It is still no clear if this is a new architecture or something added to
 the i386 architecture that exists in the `cputkit/score/i386`. Consider
 the effect support for any hyper-visors needs may have.

 The tools for this architecture are different to the i386-rtems tools so
 it could be a new architecture. This means the i386 support could be
 removed including the tools however this may effect any existing hyper-
 visor or partitioned system support.

 == BSP ==

 Add support for:

 1. Add support for UEFI booting. Evaluate using an ASM generated table
 header or adding a tool to create the PC COFF+ format file. Use the
 FreeBSD support in the FreeBSD kernel source.
 1. Support UEFI and Multiboot formats.
 1. Support boot loader command line arguments.
 1. Add support for ACPI using Intel's ACPICA. Best to base this on the
 FreeBSD code in it's kernel source.
 1. Add support for APIC.
 1. Add support for SMP.
 1. Support low level remote debugging.
 1. Thread Local Storage (TLS) support.

 === Console ===

 The i386 PC has legacy console support plus support for newer PCI UARTS.
 The i386 BSP code can be used as reference however I do not encourage
 reuse because the code's structure is not of a standard I would accept.
 Further to this, boot modes such as UEFI have the video hardware in
 graphics mode or the hardware can be headless and console IO can be
 redirected by the UEFI bios settings. This means a more flexibly and
 simplified console structure is required that can support redirection.

 The redirection to a boot loader such as UEFI adds another complication.
 At some point RTEMS needs to take over the hardware and so `printk` need
 to be able to take over the related hardware, eg a serial port. This may
 mean some form of video switching from a graphics mode to text mode. Using
 a graphics mode with text is fine for testing however in production the
 slow down is not acceptable.

 === Timer ===

 TDB

 = Acknowledgements =

 None.

 = Miscellaneous Sections =

 As the project progresses, you will need to add build instructions, etc
 and this page will evolve from a project description into a HOWTO.

 = References =

 * TBD

--

--
Ticket URL: <http://devel.rtems.org/ticket/2898#comment:6>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list