Changes between Version 1 and Version 2 of GSoC/2020/Beagle_FDT_initialization

May 10, 2020, 11:20:04 AM (6 months ago)



  • GSoC/2020/Beagle_FDT_initialization

    v1 v2  
    33[[TOC(GSoC/2020/Beagle_FDT_initialization , depth=2)]]
    5 '''Ticket:'''
     5= Project Description =
     7'''Project Name:''' Beagle BSP: Add a flattened device tree based initialization
     9'''Student:''' G S Niteesh Babu
    711'''Mentors:''' Christian Mauderer, Amaan Cheval, Vijay Kumar Banerjee
    9 '''Student:''' Niteesh Babu G S
     13[ Original proposal]
    11 '''Blog:'''
     15The Beagle BSP in RTEMS is nearly complete with almost all peripherals working and has official support for the following board variants.
    13 = Introduction =
    14 This project aims to improve the Beaglebone Board Support Package (BSP) in RTEMS by adding a Flattened Device Tree (FDT) based driver initialization. This project intends to refactor many of the drivers to FDT based initialization and also add a FDT based pin muxing subsystem. This will make the BSP more generic, and hence adding support for future board variants becomes easier.
     17* BeagleBoard
     18* BeagleBoard XM
     19* BeagleBone Black
     20* BeagleBone Original
    16 For more information, please refer to the proposal:
    17 = Tasks =
     22As of 2020, the BSP has support for the following peripherals.
    19 To be completed:
    20 * Implement openfirmware functions into RTEMS.
    21 * Import beagle pinmux driver from libBSD to RTEMS.
    22 * Implement a generic pinmux driver into RTEMS.
    23 * Refactor and test the device drivers in RTEMS.
    24 * Unify the BSP.
     24* PRU
     25* ADC
     26* GPIO
     27* I2C
     28* SPI
     29* PWM
     30* USB
     31* MMC
     32* Networking
     33* Framebuffer
    26 Finished:
    27 * TBA
     35RTEMS 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.
     37Most 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.
     39This 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.
     41The 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.