Getting familiar with embedded Linux device driver takes long time for me. I account this to lack of programming experience with structured language. I have been working with object oriented programming languages such as Java, Python and now C++. This results in thinking every thing in object oriented way. And making thing in "C" makes little more time. I does lot of exercise to get familiar with this. Now I had good understanding and had experience in writing few device drivers.
And BeRTOS have helped a lot to understand structured programming in C. Currently I have been doing a hobby project with BeRTOS, and Cortex-m based board from ST electronics. In this, I have been using only c program for the complete project.