Changes between Version 1 and Version 3 of Ticket #2898


Ignore:
Timestamp:
02/06/17 23:55:45 (7 years ago)
Author:
Chris Johns
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #2898

    • Property Type changed from enhancement to project
    • Property Summary changed from Create an x86_64 BSP to x86_64 BSP
  • Ticket #2898 – Description

    v1 v3  
    1 = Create an x86_64 BSP =
     1= x86_64 BSP =
    22
     3[[PageOutline(1-5, Contents, inline)]]
    34
    4 [[TOC(Developer/Projects/Open/x86_64_BSP, depth=2)]]
     5== Mentors ==
     6Chris Johns
    57
     8== Students ==
    69
    7 '''Mentors:''' TBD.
     10TBD.
    811
    9 '''Students:''' TBD.
     12== Status ==
    1013
     14Looking for funding.
    1115
    12 '''Status:'''
     16= Introduction =
    1317
    14 Uninitiated.
     18This 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.
    1519
    16 '''Introduction:'''
     20This BSP is to support 64bit only, there is no need to support 32bit.
    1721
    18 This project involves the creation of an x86_64 BSP for RTEMS that would allow for installing on an OTS PC, x86 dev boards and emulated in popular emulation software.
     22The 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.
    1923
    20 newlib needs to be evaluated. It may be missing setjmp/longjmp support for x86_64.
     24= Project =
    2125
    22 The existing pc386 BSP is a reference for some things but a goal of this effort is that the BSP not have any legacy device support. Using the pc386 as a reference, it is missing support for a number of modern things including:
     26== Goal ==
    2327
    24 * booting from EFI
    25 * EFI support for devices
    26 * APIC support (interrupt controller)
    27 * proper synchronization for SMP during context switch (XXX ticket #)
    28 * Thread Local Storage (TLS) support
     28To remove the i386 BSP and replace with a fully functional RTEMS with SMP, TLS, dynamic loading, and libbsd support.
    2929
    30 In addition, there has been discussion of the pc386 console device driver being updated to a newer infrastructure model and I am not sure if the clock driver uses the bintime support.
    31 
    32 The pc386 BSP is complex and straddles supporting legacy and modern hardware. A new legacy free BSP for i386 as well as a port for x86_64 with a legacy free BSP are needed. This project is focused on the x86_64.
    33 
    34 '''Goal:'''
    35 
    36 To have a functioning x86_64 BSP that will boot on OTS hardware and emulate fully in any x86 emulator.  Extended goals would include running RTEMS as a process in the build platform and peripheral support.
    37 
    38 
    39 '''Requirements:'''
     30== Prerequisite ==
    4031
    4132* Knowledge of x86_64 ASM, C Programming language.
    42 * Run on non-legacy hardware configurations.
    43 * Share code as possible with pc386 BSP.
    44 * Create x86_64 architectural port.
     33* Knowledge of hardware and low level drivers.
     34* Knowledge of low level debugging.
     35* Knowledge of x86_64 Intel processors.
     36* Knowledge of FreeBSD kernel source would help.
    4537* Requires x86_64-rtems tool configuration.
     38* Requires QEMU,
     39* Requires modern PC hardware, e.g. a recent motherboard or a Minnow Max board.
    4640
    47 
    48 '''Resources:'''
     41== Resources ==
    4942
    5043* Current RTEMS developers.
    51 * Do not reinvent the wheel and use existing code instead, e.g. from FreeBSD.
     44* Use existing code instead, e.g. FreeBSD, Intel.
    5245
    53 '''Acknowledgements'''
    54  *  TBD
     46= Tasks =
     47
     48The following are the tasks:
     49
     50== Tools ==
     51
     521. Build and verify x86_64 tools.
     531. Check suitable floating point multilib variants are being built and are functioning.
     541. Confirm newlib support is valid. Check `setjmp`/`longjmp` support is functioning.
     551. Check TSL is supported.
     56
     57== CPU Kit ==
     58
     59Add support for the x86_64 architecture.
     60
     61It 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.
     62
     63The 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.
     64
     65== BSP ==
     66
     67Add support for:
     68
     691. 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.
     701. Support UEFI and Multiboot formats.
     711. Support boot loader command line arguments.
     721. Add support for ACPI using Intel's ACPICA. Best to base this on the FreeBSD code in it's kernel source.
     731. Add support for APIC.
     741. Add support for SMP.
     751. Support low level remote debugging.
     761. Thread Local Storage (TLS) support.
     77
     78=== Console ===
     79
     80The 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.
     81
     82The 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.
     83
     84=== Timer ===
     85
     86TDB
     87
     88= Acknowledgements =
     89
     90None.
    5591
    5692= Miscellaneous Sections =
     
    5995
    6096= References =
    61  *  TBD
    6297
    63 '''Other sections:''' If you have more to say about the project that doesn't fit in the proposed sections of this template, feel free to add other sections at will.
     98* TBD