= 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 4. Extra: Implement DMA support for I2C and SPI 5. Extra: Implement support for second SPI device on A+/B+/Pi 2 ===Project Group 2 - USB Support=== 1. Implement USB device support using libBSD 2. Implement basic HID device support ( keyboard/mouse ) 3. Implement USB Ethernet Device support 4. Extra: Implement USB on multiple Pi models 5. Extra: Implement USB storage device support ===Project Group 3 - Raspberry Pi 2 Support=== 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 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 '''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.