GSOC 2016 : Improvement of Board Support Package for Beagle Bone Black

Well this post summerizes my awesome Google Summer of Code experience under the RTEMS project. Aim of my project was to improve peripheral support for Pulse Width Modulation(PWM)  and I2C devices under RTEMS RTOS for popular Beagle Bone Black TI board. During first first half of GSOC I have worked on PWM device driver. You can find my work from following links :

Commits :

Commit History :

Testing demo of driver can be found on youtube :

All above PWM code is merged upstream RTEMS repo.

After first half I tried to develop I2C driver. To develop that I understood generic i2c RTEMS framework which took lots of time. It was great learning experience to develop i2c driver with non-interrupt driver programming (polling ) as well as  interrupt driver programming. To write the non-interrupt driver code I have reffered Minix i2c driver source code which added experience of learning architecture of minix os.

Inspite of working hard on developing I2C driver unfortunetly, I am not able to run it successfully and so not able to merge it with RTEMS repo. But post GSOC I will definetely try to merge it with mainline master repo.

Well still you can find my unmerged work at

Developed PWM APIs will be useful to RTEMS users. Many embedded applications such as automotive,space,robotics can use these APIs. Certainly it is my first great contribution after Linux kernel.

Acknowledgement :

Whatever work I have done will never possible without help of great mentors. I am sincerely grateful to my mentors Ben Gras, Martin Galvan, Marcos Díaz, Ketul Shah.

Thank you guys !! I have learned a lot from your experience.

It is first time I have worked with experienced developers globally. I know time is precious and even though these guys are quite busy they help me a lot with every issues I have come across. I appreciate all the efforts to teach me from small to big technical things.