#2891 new project

Beagleboard BSP projects

Reported by: Tanu Hari Dixit Owned by: Ben Gras
Priority: normal Milestone: Indefinite
Component: bsps Version:
Severity: normal Keywords: SoC, BSP
Cc: Blocked By:
Blocking:

Description (last modified by Gedare)

Introduction

RTEMS has a BSP that supports beagleboard, beagleboard xm, beaglebone (original, white) and beaglebone black targets. The BSP is in RTEMS mainline.

Getting started as a GSOC student

If you are interested in working on this BSP as a GSOC project, there are a few basics you should do immediately, if possible before even asking about the project, to show that you are up to speed with the basics of running RTEMS and this BSP in particular.

You'll need the hardware

To test your changes, you will need the relevant hardware. You will also need a way to see the RTEMS serial console i/o. So, you will need one of the following, in descending order of advisability if you have the freedom to choose a model:

  • Beaglebone ("white") - this board has everything self-contained (power, jtag and serial over a single usb cable) so is the ideal board to buy if you have to choose
  • Beaglebone black - this will need a TTL-serial to USB converter cable, e.g. ​USB-TTL FTDI Cable 3.3V, and jtag is harder to access so quite limiting compared to the white. RTEMS does not implement a USB device, so you can't use a generic usb cable for console i/o.
  • Beagleboard XM + serial cable (serial to usb is most convenient - the ones with the FTDI chip work well)
  • Beagleboard + serial cable

Also build the emulator

There is a Beagleboard XM emulator. Run the BSP in that for

  • fast iteration, convenient debugging
  • testing whether your changes might break the xm and/or the emulator

Build & run the BSP

Build & run the BSP (e.g. using the test set) on whatever you hardware you have and on the bbxm emulator.

See ​this blog post for full instructions in building & running the bsp on hardware and in the emulator.

Make a change in RTEMS

To show that you're up to speed with rebuilding RTEMS, make a change. Showing the result must be part of your proposal.

Hello World project

The official requirement is a Hello World project.

Raising the bar

Run the test set and debug any of the failing tests, either on the emulator or on real hardware. One thing to keep in mind is that a failing test on the emulator could be an imperfection of the emulator.

Ideas to Improve the BSP

The hardware support is rudimentary. This section lists ideas for improvement of that BSP.

They are listed in no particular order. The biggest factor is motivation - are you excited to take on the task?

Booting without uboot

The BSP needs some sort of bootloader to get the app loaded. Currently the system to do all the work for the user uses uboot. GPL3 is a problem and so a BSD-licensed alternative to do the same thing would be better.

Upstreaming RSB & rtems-tools changes

The BSP itself is neatly upstreamed to mainline. There are some changes in rtems-tools and the RSB that are not neatly in mainline and that is needed. Coordination with Chris Johns is needed here.

Peripheral support

There are quite a few missing peripherals. In no particular order

PRU - programmable realtime units, interesting realtime applications
I2C
ADC
Framebuffer
USB
Ethernet
GPIO
CAN
MMC (internal flash & sdcard)

Fix failing tests & automatically run tests on future commits

On Qemu, most tests pass but not all. On the hardware (running using JTAG), most tests pass but not all. The reason for them to fail should be figured out (might be a qemu limitation in the 1st case). Once the tests are nailed down, coordination with Amar would be good to run these tests automatically in the qemu linaro so future commits won't break the BSP (or at least, it will be flagged immediately).

Even better would be to run these tests on hardware automatically of course, using JTAG. Coordination with Amar/OAR might enable this.

Change History (9)

comment:1 Changed on Jan 31, 2017 at 6:46:58 PM by Gedare

Component: Generalbsps
Keywords: BSP removed

comment:2 Changed on Jan 31, 2017 at 6:49:16 PM by Gedare

Keywords: SoC added; GSoC removed

comment:3 Changed on Feb 1, 2017 at 6:13:15 AM by Sebastian Huber

The Beaglebone is well supported by FreeBSD. There is no need to write extra drivers for RTEMS. Just use the libbsd.

comment:4 Changed on Feb 2, 2017 at 9:35:58 PM by Gedare

Description: modified (diff)

comment:5 Changed on Feb 6, 2017 at 4:02:32 AM by Chris Johns

Type: enhancementproject

comment:6 Changed on Mar 2, 2017 at 8:21:09 PM by Gedare

Keywords: BSP added

comment:7 Changed on Jun 14, 2017 at 3:12:47 PM by Sichen Zhao <1473996754@…>

In 8f550d2/rtems:

Add the i2c driver for Beaglebone Black

Update ticket #2891 and my GSOC project
add c/src/lib/libbsp/arm/beagle/i2c/bbb-i2c.c
modify c/src/lib/libbsp/arm/beagle/include/i2c.h
modify c/src/lib/libbsp/arm/beagle/include/bbb-gpio.h
modify c/src/lib/libcpu/arm/shared/include/am335x.h
modify c/src/lib/libbsp/arm/beagle/Makefile.am
Now can read the EEPROM by i2c, the test application link is: https://github.com/hahchenchen/GSOC-test-application

comment:8 Changed on Aug 14, 2017 at 12:15:09 AM by Chris Johns

Version: 4.11

comment:9 Changed on Jan 3, 2018 at 8:15:05 PM by Christian Mauderer

Status From End of GSoC 2017

During GSoC 2016 and 2017, a lot of work for the peripheral support on this BSP has been done by the students (Punit Vara and Sichen Zhao). I2C is in the BSP and USB and SD-Card is now working via libbsd. But there are still a number of peripherals which need drivers (original list extended with some up-to-date infos):

  • PRU - programmable realtime units, interesting realtime applications
  • ADC
  • Framebuffer
  • Ethernet
  • GPIO
  • CAN
  • USB OTG (like CDC ethernet or CDC mass storage - not sure about the original beagle board but would be great on the beagle bone black)

New Beagles

There are also a number of new Beagle Boards (like PocketBeagle?, Beagle Bone Blue, Beagle Bone Green, ...) that are currently not officially supported. Updating the BSP with such boards and writing drivers for them (if necessary) could be a nice project too.

Note: See TracTickets for help on using tickets.