= Improve the Raspberry Pi BSP = [[TOC(Developer/Projects/Open/ImproveRaspberryPiBSP, depth=2)]] '''Mentors:''' Alan Cudmore '''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. GPIO -- Done, but not integrated. 2. I2C Bus -- Done, but not integrated. 3. SPI Bus -- Done, but not integrated. 4. Secure Digital card read and write support (using the SPI bus) 5. Graphics / RTEMS Framebuffer Support 6. USB Device support 7. HDMI/Graphics console (Requires framebuffer support and USB or GPIO connected keyboard device) 8. 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. A related project is to add a BSP variant for the Raspberry Pi 2. == 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 === 1. Complete SPI, GPIO, I2C integration 2. Implement SD Card file system support ( using SPI ) 3. Implement Model identification detection and reporting - 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 5. Extra: Implement support for second SPI device on A+/B+/Pi 2 - 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 === 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 === 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.