Tuesday, August 23, 2016

Adding customer code/module in Kernel source tree


For an embedded system, there's actually little or almost no reason to use loadable Kernel modules. On the other hand, it may turn insecure, if the system is a protected one, using encrypted data & key while live. Then a custom loadable module can dump the memory to grab the secret data/key from runtime environment.

Other than all these, probably, you wish to see something while booting your own custom Kernel. For example, you want - that well known hello_world program should print something on console while kernel is booting.

A simple google search for "hello_world kernel space program" will point you a lot of examples to preparation, write, linking, compiling, loading, checking and unloading that hello_world program as a module for Kernel.

Monday, June 27, 2016

An interesting scanf() skipping behavior



It is very interesting and quite important to notice scanf() behavior in C programming,

While you are writing a code for example,

 int x; char y;  
 scanf ("%d", &x);  
 scanf ("%c", &y);  

    -- the second scanf() will not hit while you run the program. But if you reverse,

 scanf ("%c", &y);  
 scanf ("%d", &x);  

                -- it will work. But WHY ???
               
Because scanf() function reads new line character from Return key, so while something Integer has been read into a variable and then pressed Return, a New Line created due to Return key is staying in buffer and the next scanf(), which is ready to take a character variable took that New Line as character value and as it filled with a character, it automatically skip.

But on other case, as the second scanf is as integer, it does not effect with above cause.

Because, scanf() function removes whitespace automatically before trying to parse, except - again EXCEPT,

 %c, %n, %[] these three cases.  

Tuesday, April 26, 2016

A MQTT application with QR code and OpenCV


Once a cake sent to us, bought back to package-center and next 2 days, as we were not able to pick it.
However at the same day we were rounding near by package-center for few times.

While get back home, it was late and 2 days later we'd a cake with feet-smell.

It often happen with us, delivery package from DHL/Post or others arrive, while nobody is at home. So at the evening, while back home, found the note from postman - either collect it from neighbour or report to postoffice / collection center.

However, it would be nice to know, as well saves time and effort, that a package was at my door. So, I can pick it while coming back home, if time allows.

For such scenario let me to grab the idea of building an automated system, so absent of recipient, postman will scan a QR code, with the camera attached with doorbell and bring the packet back to package collection center.

So how does it will work ?

Tuesday, March 22, 2016

Mentoring Eudyptula Challenge - 2

Eudyptula Challenge is started in end of 2014 and getting very popular among linux enthusiast. A lot of people registered, or by mean of join-in with Little Penguin, but about half of them didn't submit the first task.

Some important notes and comments you can find about eduptula in this link https://events.linuxfoundation.org/sites/events/files/slides/ec.pdf.

This time, I'm going to discuss about Task-02. This one is a very little task about building customer kernel.

Your task will start from downloading the kernel source, you can download it as .zip, but best and most recommended option is using git. Figure out how you can get link for latest version of kernel. One of the example could be -

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Mentoring Eudyptula Challenge - 1


This post and coming is intended to help of getting things easier on Kernel challenges, The Eudyptula Challenge.

But it will not give you the total solution, [however, you can find those by googling] but will try to help you how you can understand the problems and get the things easier.

Well now - the Eudyptula challenge is a list of tasks to learn linux kernel, its structure and development processes. Mainly its a bot, supplying and evaluating your tasks.

The first requirement to participate the challenge is to learn emailing as plain-text. Those who are well known of using sendmail from command line do know it by heart. But for modern young guys - you better use thunderbird, and set its settings as unchecked Compose message as HTML format.

On other hand, if you are using gmail on web by selecting Plain Text Mode while composing your email would give you same benefit.

Friday, February 19, 2016

Infrared Transmitter Sensor Driver for Raspbery pi


37 sensor kit box is shipped with a Infrared Transmitter sensor. Alike Line Tracking Sensor, this one also a single pin sensor, turned on infrared while got ON / High on Signal port.

Hardware Description :
The IRT sensor circuit is very simple, just consist of a Infrared LED. The sensor got 3 physical PIN, and only Signal marked as S. Well, the middle on is for Volt [5v], and last one is for GND.
S is connected to GPIO – 2.


Thursday, February 18, 2016

Line Tracking Sensor Driver for Raspberry Pi


KY-033 is a line tracking sensor. This project is to develop a dynamically loadable device driver for sensor KY-033 to enabled in RaspberryPi -1.
KY-033 is a single pin line tracking sensor. 

Raspberry Pi -1, a very popular SBC running with Debian linux (code name Wheezy for raspberry pi) with default kernel version 3.18. 


As it required to develop a kernel module, same version of running kernel header should be installed and configured for the system.


Description of Hardware:

The traget sensor KY-033 is a Line Tracking Sensor consist of one Infrared light and one LED. It also consist of a Si photosensor. The basic principle of Line Tracking Sensor is to detect if any white light component reflect from opposite surface.