Embedded Engineer- knowledge on Linux

Thread Starter

Parth786

Joined Jun 19, 2017
642
I have seen in many job application for embedded engineer. They ask for skill or experience in Linux like below job description

Job Description
:Should have hands on experience in kernel programming, Linux driver, linux application development.

I know about micro-controller/processor, programming language like c programming. I have been developed some project where I was using micro-controller, c programming to develop embedded system. I was using window operating system to develop embedded project. As I know Linux is operating system and kernel is program that written in language like c programming. I know there are some embedded linux operating system . recently I am working on Raspbian Jessie. I am just beginner.

I have read about these skills but I do not understand the real use of these skills in embedded project development. I want to know when it use in embedded project. Can someone please tell me what the meaning of mention skills in job description ?

Note : I was thinking this should be post on general forum but I thought it should be on programming forum because all is related with programming language
 
Last edited:

Thread Starter

Parth786

Joined Jun 19, 2017
642
Start reading about it, then start doing it.
https://kernelnewbies.org/KernelHacking
I have just started to read about it. My question was related to job skills. Recently I have done LED blinking project on raspberry board with Linux platform but I don't understand actually where I am using these skills in project. I don't know were I am doing mistake to understand these job skills?

It would be good for me, if you tell me about embedded engineer that, when they use these skill's during the project
 
Last edited:

nsaspook

Joined Aug 27, 2009
16,321
Really, it would be a waste of your and my time to go into detail about things you won't understand before you take the time and effort needed have the basic systems programming job skills to build on. Between the engineering skills of the Youngling (where you are now) to Padawan to Knight to Jedi Master is a long trail that starts with small steps.
 

Thread Starter

Parth786

Joined Jun 19, 2017
642
Really, it would be a waste of your and my time to go into detail about things you won't understand before you take the time and effort needed have the basic systems programming job skills to build on. Between the engineering skills of the Youngling (where you are now) to Padawan to Knight to Jedi Master is a long trail that starts with small steps.
If you feel like you are wasting your time then it is okay. think that you are going with somebody and he is not telling the name of that place and he is saying keep walking. You will know yourself where you are going. Would not you have the curiosity in your mind to know where you are going.

I am feeling same like that, I know my path is too long but I have started journey. I know these skill's are required in embedded system but when and why we need in project. I was not asking detail explanation.

Note : Please do not feel bad. I wanted to tell the difference between the beginner and experienced person's thinking.
 
Last edited:

panic mode

Joined Oct 10, 2011
4,974
"embedded" is a broad spectrum of products.
flashing an LED or reading RFID is a nice start but... it is a long way from things like:
media player (TIVO box or similar)
WiFi router
motion controller
 

Thread Starter

Parth786

Joined Jun 19, 2017
642
I have yet to know that embedded system divide in two part's hardware and software programming. If I want to make a project, then I will make hardware in the first place. After that I will do programming part.

Let's suppose I am doing motor control project. I will interface DC motor with motor driver IC to any Micro-controller. This is the part of my hardware. It has been completed. then I will start program, I will write program on compiler that support microcontroller that I am using in project.

Now I have an option for operating systems I can do programming part on window based software either or I can do programming part on Linux based operating system. As per my knowledge I will follow this method to complete any project. This is my best to show you my problem

I explained this because I think I understand procedure of making embedded project. My question is again that what I don't to understand and Where I am thinking wrong.
 

simozz

Joined Jul 23, 2017
170
Can someone please tell me what the meaning of mention skills in job description ?
  1. Knowledges of Linux kernel: it means that they probably want to modify the kernel for a specific product.
  2. Linux drivers: they want to develop drivers for their product to be used with Linux.
  3. Linux application development: it refers to Linux system programming.
 

nsaspook

Joined Aug 27, 2009
16,321
If you feel like you are wasting your time then it is okay. think that you are going with somebody and he is not telling the name of that place and he is saying keep walking. You will know yourself where you are going. Would not you have the curiosity in your mind to know where you are going.

I am feeling same like that, I know my path is too long but I have started journey. I know these skill's are required in embedded system but when and why we need in project. I was not asking detail explanation.

Note : Please do not feel bad. I wanted to tell the difference between the beginner and experienced person's thinking.
I don't want you to feel bad, I just want you to spend more time being productive with the hardware at the level you currently understand instead of thinking about pie in the sky ideas of Linux embedded engineering you don't seem ready for yet. The LED blinking project on raspberry is a good point for you to explore exactly how the program interfaces with GPIO drivers and the kernel from the hardware pins to your program. That 'simple' interface is rather complex.
https://www.theseus.fi/bitstream/handle/10024/74679/Nguyen_Vu.pdf
 

Thread Starter

Parth786

Joined Jun 19, 2017
642
The LED blinking project on raspberry is a good point for you to explore exactly how the program interfaces with GPIO drivers and the kernel from the hardware pins to your program.
This is what I am saying. I have done successfully LED project on raspberry. I wrote python program for LED blinking. I have been run server on raspberry. every thing I done on Linux platform but I did not understand when I did Kernel Programming I didn't understand what is embedded linux programming ?
 

nsaspook

Joined Aug 27, 2009
16,321
This is what I am saying. I have done successfully LED project on raspberry. I wrote python program for LED blinking. I have been run server on raspberry. every thing I done on Linux platform but I did not understand when I did Kernel Programming I didn't understand what is embedded linux programming ?
You didn't do any Kernel programming so you shouldn't understand embedded Linux programming from flashing a LED. Now if you wrote a kernel module that flashed the LED that would actually mean something.

Some hacked kernel driver fragments for direct to hardware pin operations for the RPi.
C:
/*
gpioToGPSET:
(Word) offset to the GPIO Set registers for each GPIO pin
*/

static uint8_t gpioToGPSET [] = {
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
};

/*
gpioToGPCLR:
(Word) offset to the GPIO Clear registers for each GPIO pin
*/

static uint8_t gpioToGPCLR [] = {
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
};

// need to get the io_base address in this code fragment
dev->iobase = GPIO_BASE; /* bcm iobase */
/*
* dev->mmio is a void pointer with 8bit pointer indexing,
* we need 32bit indexing so mmio is casted to a (__iomem uint32_t*)
* pointer for GPIO R/W operations
*/
dev->mmio = ioremap(dev->iobase, SZ_16K);
if (!dev->mmio) {
dev_err(dev->class_dev, "invalid gpio io base address!\n");
return -EINVAL;
}



static void digitalWriteGpio(struct comedi_device *dev,
int32_t pin,
int32_t value)
{

pin &= 63;
if (value == LOW)
iowrite32(1 << (pin & 31), (__iomem uint32_t*) dev->mmio
+ gpioToGPCLR [pin]);
else
iowrite32(1 << (pin & 31), (__iomem uint32_t*) dev->mmio
+ gpioToGPSET [pin]);
}

[code]
 
Last edited:

Thread Starter

Parth786

Joined Jun 19, 2017
642
You didn't do any Kernel programming so you shouldn't understand embedded Linux programming from flashing a LED. Now if you wrote a kernel module that flashed the LED that would actually mean something.

Some hacked kernel driver fragments for direct to hardware pin operations for the RPi.
I understood I have to write program for kernel module that will flashed the LED using interrupt. I will re-search on it and then I will come back with specific question.
 

nsaspook

Joined Aug 27, 2009
16,321
Last edited:

Thread Starter

Parth786

Joined Jun 19, 2017
642
The fact a person can copy and compile code doesn't mean your a embedded engineer.
I am totally agree with your statement but I want to tell you that I am not that type of person. That's why I said, I will come back after some reading because I have to understand program and I have to test on the board.

I have learned in the last few days How difficult is the problem, it gets resolved. it takes a little time but we succeed
 
Top