wiki:GSoC/2020/Beagle_FDT_initialization

Version 2 (modified by niteesh, on May 10, 2020 at 11:20:04 AM) (diff)

--

Beagle BSP: Add FDT based initialization

Project Description

Project Name: Beagle BSP: Add a flattened device tree based initialization

Student: G S Niteesh Babu

Mentors: Christian Mauderer, Amaan Cheval, Vijay Kumar Banerjee

Original proposal

The Beagle BSP in RTEMS is nearly complete with almost all peripherals working and has official support for the following board variants.

As of 2020, the BSP has support for the following peripherals.

  • PRU
  • ADC
  • GPIO
  • I2C
  • SPI
  • PWM
  • USB
  • MMC
  • Networking
  • Framebuffer

RTEMS uses libBSD to provide support to various subsystems like TCP/IP, USB, SD, and some more. And indeed the USB, Networking, MMC subsystems in the Beagle BSP are supported using libBSD.

Most modern SoCs? use a pin controller to share a pin among multiple peripherals. For example, a single pin can act as an I2C data line or as a USB data line. This is done to support more sets of peripherals with a small number of pins. The drivers have to configure the pins before initializing the device. In RTEMS the drivers do this manually whereas in libBSD this configuration is done with the help of a pin muxing driver present in libBSD.

This causes double initialization of a few pins. Once during initialization of RTEMS drivers and a second time during initialization of libBSD. One of the goals of this project is to move the pin muxing driver into RTEMS and have the driver in libBSD to use it.

The other goal is to refactor the drivers present in RTEMS for the Beagle BSP to parse values from the device tree and remove the hardcoded values. This would make the BSP more generic and hence adding support for other boards will become easy.