Need a good guide to Learn Embedded Linux

Guys, i have been an embedded Electronic engineer for 8 years. I mainly deal with small sized uP's like Atmel, PIC32 and ARM7. I have been needing more performance from my ARM7's and i am getting pushed into the ARM9 category. I have done some looking around on the net and there are so many embedded boards out there with ARM9 most running Linux. I would like to start out using the PortuxG20 module.

Now, i dont know really anything about Linux. The most i have ever done is load Ubuntu on my laptop open a shell (i think it was called) and typed "shutdown -h now" i think that was it. That is the extent of my knowledge for it.

I have asked a few questions about learning linux for embedded at other sites but its been my experience that the Linux group of people are not to helpful for the newbies. Its like once they get to a certain level of knowledge they piss on the new guy and forget what it was once like to be new.

I desire to learn Linux, but i can find anything worth wild to teach me this stuff. Specifically for the embedded side of town. How do people learn how to write to the I/O pins. How to they learn how to read and write from memory, write ISR's and so on. All these things are necessary for the Embedded world. Yet i can hardly find any examples of people teaching this or just examples in general.

I need to connect an 16-bit ASIC part to this PortuxG20 module. i can figure out the connections to it just fine, but how in Linux code am i going to write to it. I know there will be a memory map and i will have to map it in, but what are the C statements that i can use without interfering with the Linux kernel itself. I.E. the safe and proper way to communicate with devices on the bus.

The next think i need to do it create a WEB server, TCP server on port 23221 & 19332, a UDP server for port 1511, telenet, and FTP server. Where does one find out information on how to set all these up in linux for embedded. Where do i find out what protocols Linux supports. such as DHCP, TCP, UDP, SSL, SSH SNMP and so on.

Lastly, when i write my code am i able to create threads like i would in an RTOS ?
can i have multiple threads running ? If so how many and what are the params for them.

Its apparent that many, many people are making cool things with Linux, but where is all this information on how to get started with all this. How can there not be some site that simple shows you via examples how to talk to a SPI device and or twiddle pins, set up a FTP server and so on.

Please help me understand where this hidden world of knowledge it.
things like, if i recompile the kernel, whos built in compiler am i using ? how do i update that if it needs to be updated. is there GUI version of the compiler so i can be modern and not use the old school command like crap. I have done my time with DOS back in the day, and there it should stay, back in the day. this is of course my opinion. I just dont see why there is no GUI compiler for the embedded stuff in which i just dont have to go to the command line. write my app compile it, FTP it to the board. run it, test it and then i am done.

Re: Need a good guide to Learn Embedded Linux

Maybe it is not arrogance, it is more that questions like yours are not easily answered in some sentences or so. More in a book. But you can't write a book in a forum, not talking of the time to do so.
I would recommend to read a basic introduction book to Linux in general. There are some open books in the web, this one may be a starting point:
http://www.linuxtopia.org/online_books/introduction_to_linux/index.html
It will cope the need to acquire basic understanding on how Linux/ Unix works and their basic concepts. Nowadays you should have in mind, that embedded Linux doesn't differ much from standard Linux. The Kernels are the same, nothing stripped down or so. In the Embedded World you try to keep your rootfilesystem small and install only needed things and not everything you may need or need not. We use OpenEmbedded for configuring and compiling our rootfilesystem, information about it can be found here:
www.openembedded.org
Speaking of network and TCP/IP you can be sure, that Linux supports most thinkable protocols and you have the choice between different ready servers, you have just to install them on your system, no need to develop something here.
When accessing your microcontroller directly there is a systemcall called mmap, which allows you to access physical memory including the registers of your microcontroller, you should be familiar what to do then. There is an example on our software-cd. All Linux systemcalls are also documented in the manpages system, just do "man mmap" on your development system to learn more about this.
When accessing physical memory or connecting something like ASIC to the microcontroller's memory bus it is maybe cleaner to put that in kernel space and write a device driver. More than good a starting point is this book:
http://lwn.net/Kernel/LDD3/
There are GUI frontends for gcc / cross-gcc, eclipse for example. We have a how-to on our website here:
http://www.armbedded.eu/node/208
You should get friend with the command-line interface, especially, when working with embedded devices or the portux9G20, they don't have a gaphically interface and the shell is all you have. But it can be a powerfull tool.
Googling problems is very helpful in Linux with it's many forums and mailgroups, online how-tos and so on. When asking questions in mailing lists, people normally expect you to do so before asking, most active are tired of answering the same questions over and over again.
To put it shortly: When you are completely new to Linux, you should be aware, that the Linux world is big and you are going to need some time to get used to it. This is a task nobody can perform for you.

Syndicate content