I am currently familiar with design/programming custom embedded systems using PIC Micro-controllers with various peripherals like I2C, SPI Flash, UART,ADC,etc with some additional analog processing circuits usually controlled using ports (gpio).I am familiar with RTOS and linux in general.

I would like to move to embedded systems using ARM SOC running Linux which has good support for 7" touchscreen so that writing UI design is easy.Even applications can be designed fast.So Raspberry pi is close to such design whose reference may be good start for me.

  • What are the things to be considered to move to Embedded Linux from typical non-os micro-controller background.
  • What are good resources to learn about writing Board Support Package for low level support.Is it usually given by vendor for the peripherals?
  • How difficult it is to write driver for Touch screen?Do we have to write or it is provided free by manufacturers?

  • what are good resources to learn about bootloaders for such custom embedded systems.


In my opinion, moving to Embedded linux has some clear advantages:
- Things are done at very higher level. You have plenty of tools for interacting with other components. Your building bricks are now much more powerful and easy to develop, so your "buildings" will be much bigger and faster to build.
- You have all the services of a mature and flexible operating system to help you in your projects. It releases you from a lot of services that you had to manually do with microcontrollers (e.g. interaction with the rest of the world, at all levels: from programming the ethernet controller to interacting with cloud services).
- Regarding drivers, it depends on the device and what do you want the driver to do (and from which layer). For starters, if the device supports I2C (touch screen, or whatever other kind of device), manufacturers usually provide documentation about the I2C implementation on their devices, but not specific drivers for a given OS. So you can develop your own management libraries in your preferred software layer choice (assembly, C, python....), although probably someone else has already done something from where you can start. If the device supports a proprietary protocol, they will probably publish all the documentation in their data sheet.

There's plenty of resources about how to integrate components and devices with the raspberry. I can cite this one from Adafruit, quite detailed for beginners, but there are hundreds more, like for anything else...

  • Great info.So we can do all low level stuff(hardware level) using high level language like c++,python and build as driver? – Gopi Apr 6 '14 at 15:03
  • If you install a linux distribution as OS for the Pi, yes, you can write low level drivers using that OS's specifications, but you will need something able to generate a driver (c, c++ for sure, but python also in some cases. However, in my humble opinion, the accessibility of GP I/O from python or other high level tools may render unnecessary to go through the burden of developing a driver. As always, everything depends on what kind of device you want to interface with the Pi. – Roberto Apr 7 '14 at 7:04

Not the answer you're looking for? Browse other questions tagged or ask your own question.