The topic of my thesis is to examine the I2C communication opportunities under Linux.
In recent times it has become commonplace to use a - mostly Linux based - operating system in embedded systems. These open source solutions can be found worldwide form Android phones and tablets, through weather stations, to smart home devices. The embedded systems get the necessary information about the physical environment by sensors. To collect these data they apply low-speed buses, one of the most popular of which is the I2C serial bus. Linux supports this protocol both in kernel and user mode, but there are significant differences in resource requirement and in the complexity of coding depending on which mode is used as well as on the programming language itself.
The first part of my task is to examine how the operating system support the I2C protocol in kernel and in user space and how it is implemented on Intel® Edison single board. The second part is to create several programs to communicate via I2C and to compare them based on various aspects.
This topic is a great opportunity to get experience with internals of Linux operating system and to compare the different realizations of the same function.