[RTEMS Project] #2899: Improve the Raspberry Pi BSP

RTEMS trac trac at rtems.org
Wed Feb 22 15:30:48 UTC 2023


#2899: Improve the Raspberry Pi BSP
------------------------------------+-------------------------
 Reporter:  Tanu Hari Dixit         |       Owner:  (none)
     Type:  project                 |      Status:  new
 Priority:  normal                  |   Milestone:  Indefinite
Component:  bsps                    |     Version:
 Severity:  normal                  |  Resolution:
 Keywords:  SoC, BSP, large, small  |  Blocked By:
 Blocking:                          |
------------------------------------+-------------------------
Description changed by Kinsey Moore:

Old description:

> = Improve the Raspberry Pi BSP =
>

> '''Students:''' Past, Present, and Potential Students
>
> '''Status:''' Some work: [wiki:GSoC/2013/Raspberry_Pi_BSP_Peripherals
> GSoC2013].
>
> '''Introduction:''' More peripherals and other improvements for Raspberry
> Pi. Peripherals we need to support (in order of increasing difficulty):
> 1. Secure Digital card read and write support (some initial work using
> the BSD sdhci driver)
> 2. Graphics / RTEMS Framebuffer Support
> 3. USB Device support
> 4. HDMI/Graphics console (Requires framebuffer support and USB or GPIO
> connected keyboard device)
> 5. Ethernet network support (Requires USB support)
>
> Another issue is to come up with a more efficient way to load and debug
> code on the  Raspberry Pi. Options include using U-boot or connecting a
> JTAG debug device to load code.
>
> == RTEMS GSoC 2017 Raspberry Pi Ideas ==
> Potential Raspberry Pi work this summer includes:
> * Convert the existing SPI support to the new Linux SPI API and test with
> SPI devices
> * Continue to work on the LibBSD support: See
> https://lists.rtems.org/pipermail/devel/2016-September/016092.html Since
> then, the libbsd version has been updated in RTEMS, so it may need some
> work to get it to compile again.
> * Support the Pi Zero W ( and potentially the Pi 3 ) by creating a new
> uart driver. The current UART is used by the bluetooth in the Pi 3 and
> Zero W.
> * Support Pi 3 SMP ( along with the UART )
>
> Even more advanced work could include:
> * Support the Wifi and bluetooth in LibBSD for the Pi Zero W and/or Pi 3.
>
> == RTEMS GSOC 2015 Raspberry Pi Ideas ==
> Due to the plethora of interested students this year, we have created a
> few groups of project ideas. Students should focus on one project group,
> and more than one student may propose a project in the same group. There
> are plenty of *extra* tasks that we can create unique projects for all
> the students.
>
> === Project Group 1 - Low Level Peripherals and SD Card ===
> '''Status:''' [wiki:/GSoC/2015/RaspberryPi_peripherals_and_SD_card GSoC
> 2015]
> 1. Complete SPI, GPIO, I2C integration ('''Done''')
> 2. Implement SD Card file system support ('''Started''')
> 3. Implement Model identification detection and reporting ('''To be done.
> Mailbox support was provided but not merged yet by another project''')
>    - This requires support for the mailbox interface used for graphics.
> Also the memory size can be dynamically determined this way. In addition
> to spots where this can make the BSP code more flexible, a method should
> be provided to the user to get the Pi version.
> 4. Extra: Implement DMA support for I2C and SPI ('''To be done''')
> 5. Extra: Implement support for second SPI device on A+/B+/Pi 2 ('''To be
> done''')
>    - If the second SPI device is a second instance of the first device,
> then support for both should be done in step 1.
>
> === Project Group 2 - USB Support ===
> '''Status:''' [wiki:/GSoC/2015/RaspberryPiUSBSupport GSoC 2015]
> 1. Implement USB device support using libBSD
> 2. Implement basic HID support ( keyboard/mouse )
> 3. Implement USB Ethernet Device support
> 4. Extra: Implement USB on multiple Pi models
> 5. Extra: Implement USB storage device support
>
> NOTE: A general issue with this task is the order in which to tackle the
> various USB device types. Removable USB storage works for at least some
> type(s) of media. This may make it appropriate to do earlier. This order
> and test procedures will need to be worked out with RTEMS developers on
> the mailing list. It should be assumed that the work plan for bringing up
> USB on a target board is the same for all boards and this information
> added to the BSP development manual.
>
> === Project Group 3 - Raspberry Pi 2 Support ===
> '''Status:''' [https://devel.rtems.org/wiki/GSoC/2015/RaspberryPi2Support
> GSoC-2015]
> 1. Implement correct arm architecture support (v7)
> 2. Implement correct cache configuration
> 3. Enable and test SMP configuration
> 4. Extra: Integrate/Test Low Level Peripheral Code
> 5. Extra: Integrate/Test USB Code
>
> === Project Group 4 - Raspberry Pi Graphics support ===
> '''Status:''' [wiki:/GSoC/2015/rpi_graphic GSoC 2015]
> 1. Implement mailbox interface for graphics/framebuffer
>    - Also used for board version identification
> 2. Implement RTEMS framebuffer device support
> 3. Implement RTEMS framebuffer/graphics based console (output)
> 4. Integrate RTEMS graphics library with RTEMS Source Builder with RPi
> example
> 5. Extra: Determine how to manage Kernel/GPU memory split options
> 6. Extra: Coordinate with USB project group to integrate USB input with
> HDMI console/shell
>
> Migrating the components of the RTEMS Graphics Toolkit to the RSB is
> desirable as part of this project.
>

> '''Goal:''' Concise statement of the overall goal of the project. Refine
> this initial statement to include: project deliverables (code, docs,
> testing), required/suggested methodology, standards of quality, possible
> goal extensions beyond the main objective.
>
> '''Requirements:''' List the requirements and level of expertise you
> estimate are required by the developer tackling this project will have to
> have: Required level of programming language(s), specific areas of RTEMS
> or tools, level of familiarity with RTEMS, cross-development, GNU/Linux,
> etx., development/documentation/testing tools, mathematical/algorithmic
> background, other desirable skills.
>
> '''Resources:''' Current RTEMS developers, papers, etc that may help you
> in this project.
>
> '''Acknowledgements'''
>  *  who helped and did work
>
> = 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
>
> '''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.

New description:

 = Improve the Raspberry Pi BSP =


 '''Students:''' Past, Present, and Potential Students

 '''Status:''' Some work: [wiki:GSoC/2013/Raspberry_Pi_BSP_Peripherals
 GSoC2013].

 '''Introduction:''' More peripherals and other improvements for Raspberry
 Pi. Peripherals we need to support (in order of increasing difficulty):
 1. Secure Digital card read and write support (some initial work using the
 BSD sdhci driver)
 2. Graphics / RTEMS Framebuffer Support
 3. USB Device support
 4. HDMI/Graphics console (Requires framebuffer support and USB or GPIO
 connected keyboard device)
 5. Ethernet network support (Requires USB support)

 Another issue is to come up with a more efficient way to load and debug
 code on the  Raspberry Pi. Options include using U-boot or connecting a
 JTAG debug device to load code.

 == RTEMS GSOC 2023 Raspberry Pi Ideas ==
 1. SMP support for the Raspberry Pi 4B AArch64.
 * This can be achieved by one of the 2 methods.
       * By using PSCI via TF-A (Currently implemented in Zync MPSoC).
       * By adding support directly to the start.S file.

 2. Add Ethernet support for Raspberry Pi 4B AArch64
 * This can be done by importing the Genet driver used by freeBSD for the
 Raspberry Pi 4B. See https://man.freebsd.org/cgi/man.cgi?query=genet

 == RTEMS GSoC 2017 Raspberry Pi Ideas ==
 Potential Raspberry Pi work this summer includes:
 * Convert the existing SPI support to the new Linux SPI API and test with
 SPI devices
 * Continue to work on the LibBSD support: See
 https://lists.rtems.org/pipermail/devel/2016-September/016092.html Since
 then, the libbsd version has been updated in RTEMS, so it may need some
 work to get it to compile again.
 * Support the Pi Zero W ( and potentially the Pi 3 ) by creating a new
 uart driver. The current UART is used by the bluetooth in the Pi 3 and
 Zero W.
 * Support Pi 3 SMP ( along with the UART )

 Even more advanced work could include:
 * Support the Wifi and bluetooth in LibBSD for the Pi Zero W and/or Pi 3.

 == RTEMS GSOC 2015 Raspberry Pi Ideas ==
 Due to the plethora of interested students this year, we have created a
 few groups of project ideas. Students should focus on one project group,
 and more than one student may propose a project in the same group. There
 are plenty of *extra* tasks that we can create unique projects for all the
 students.

 === Project Group 1 - Low Level Peripherals and SD Card ===
 '''Status:''' [wiki:/GSoC/2015/RaspberryPi_peripherals_and_SD_card GSoC
 2015]
 1. Complete SPI, GPIO, I2C integration ('''Done''')
 2. Implement SD Card file system support ('''Started''')
 3. Implement Model identification detection and reporting ('''To be done.
 Mailbox support was provided but not merged yet by another project''')
    - This requires support for the mailbox interface used for graphics.
 Also the memory size can be dynamically determined this way. In addition
 to spots where this can make the BSP code more flexible, a method should
 be provided to the user to get the Pi version.
 4. Extra: Implement DMA support for I2C and SPI ('''To be done''')
 5. Extra: Implement support for second SPI device on A+/B+/Pi 2 ('''To be
 done''')
    - If the second SPI device is a second instance of the first device,
 then support for both should be done in step 1.

 === Project Group 2 - USB Support ===
 '''Status:''' [wiki:/GSoC/2015/RaspberryPiUSBSupport GSoC 2015]
 1. Implement USB device support using libBSD
 2. Implement basic HID support ( keyboard/mouse )
 3. Implement USB Ethernet Device support
 4. Extra: Implement USB on multiple Pi models
 5. Extra: Implement USB storage device support

 NOTE: A general issue with this task is the order in which to tackle the
 various USB device types. Removable USB storage works for at least some
 type(s) of media. This may make it appropriate to do earlier. This order
 and test procedures will need to be worked out with RTEMS developers on
 the mailing list. It should be assumed that the work plan for bringing up
 USB on a target board is the same for all boards and this information
 added to the BSP development manual.

 === Project Group 3 - Raspberry Pi 2 Support ===
 '''Status:''' [https://devel.rtems.org/wiki/GSoC/2015/RaspberryPi2Support
 GSoC-2015]
 1. Implement correct arm architecture support (v7)
 2. Implement correct cache configuration
 3. Enable and test SMP configuration
 4. Extra: Integrate/Test Low Level Peripheral Code
 5. Extra: Integrate/Test USB Code

 === Project Group 4 - Raspberry Pi Graphics support ===
 '''Status:''' [wiki:/GSoC/2015/rpi_graphic GSoC 2015]
 1. Implement mailbox interface for graphics/framebuffer
    - Also used for board version identification
 2. Implement RTEMS framebuffer device support
 3. Implement RTEMS framebuffer/graphics based console (output)
 4. Integrate RTEMS graphics library with RTEMS Source Builder with RPi
 example
 5. Extra: Determine how to manage Kernel/GPU memory split options
 6. Extra: Coordinate with USB project group to integrate USB input with
 HDMI console/shell

 Migrating the components of the RTEMS Graphics Toolkit to the RSB is
 desirable as part of this project.


 '''Goal:''' Concise statement of the overall goal of the project. Refine
 this initial statement to include: project deliverables (code, docs,
 testing), required/suggested methodology, standards of quality, possible
 goal extensions beyond the main objective.

 '''Requirements:''' List the requirements and level of expertise you
 estimate are required by the developer tackling this project will have to
 have: Required level of programming language(s), specific areas of RTEMS
 or tools, level of familiarity with RTEMS, cross-development, GNU/Linux,
 etx., development/documentation/testing tools, mathematical/algorithmic
 background, other desirable skills.

 '''Resources:''' Current RTEMS developers, papers, etc that may help you
 in this project.

 '''Acknowledgements'''
  *  who helped and did work

 = 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

 '''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.

--

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


More information about the bugs mailing list