newbie to embedded linux on arm

Hi Guys,

I am new to linux/embedded linux. I have a strong understanding of embedded hardware and C programming. I want to learn linux/ embedded linux. Recently got a board from boradcon EM2400II + 5.6 TFT LCd touch screen.

Can some one please suggest what is the best point to start with. how to set the tool chain, linux os, boot loader, compiler. How to develop a small application just a led blink will do to test the setup.

In windows there are various tools + compiler which help you develop an application and then program into the flash.

Can someone please point to some tutorial about how to start with from scratch?

Thanks in advance tama

--------------------------------------- This message was sent using the comp.arch.embedded web interface on

formatting link

Reply to
tama
Loading thread data ...

Book:

P. Raghavan, A. Lad, S. Neelakandan "Embedded Linux System Design and Development"

Vladimir Vassilevsky DSP and Mixed Signal Design Consultant

formatting link

Reply to
Vladimir Vassilevsky

The O'Reilly book is also good:

Yaghmour, Masters, Ben-Yossef, and Gerum "Building Embedded Linux Systems"

--
Grant Edwards                   grante             Yow! I just heard the
                                  at               SEVENTIES were over!!  And
                               visi.com            I was just getting in touch
                                                   with my LEISURE SUIT!!
Reply to
Grant Edwards

Actually, having read the first book, I was very dissapointed about Linux and ended up rolling my own OS.

VLV

Reply to
Vladimir Vassilevsky

snip

Tjaa, Linux is, afterall, only the kernel and the OS is called often GNU/Linux. So, what did you develop yourself ?

Risto

Reply to
Risto Sainio

I also looked into Mucos-II, didn't like it either. Toy OS, lots of low level work that you have to do by hand, strange limitations.

The RTOS kernel is static C++ library, with friendly abstractions for messaging, semaphores and other OS services. I also tried to do my best about sensible concept for hardware abstraction; avoiding monstrosity and primitivism. Nested interrupts use their own stack, separate from application stacks. There are basic debug aids. Most of the code is in C++, with very little of assembler. The OS was build for BlackFin, which, quite unfortunately, doesn't have MMU. The filesystem and TCP/IP stack are there; the USB host is in development.

Memory footprint: ~64k code ~16k data is minimal practical configuration with terminal I/O and IP stack.

Vladimir Vassilevsky DSP and Mixed Signal Design Consultant

formatting link

Reply to
Vladimir Vassilevsky

tama skrev 2009-12-16 15:18:

One of the easiest ways to get a complete Linux thing together is to download "Buildroot" from

formatting link

You need a Linux machine and git. (or download a tarball)

make at91sam9263ek_defconfig make

Wait a few hours and then you have

  • Cross Compiler
  • First level Bootloader (at91bootstrap)
  • Second level bootloader (U-Boot)
  • Linux Kernel
  • Root file system
  • Scripts for U-boot environment

The Samsung chips are not supported. By building for another ARM chip, you can use the root fs, but you have to build the bootloader and kernel manually.

Alternatively, you can switch to a chip which IS supported well by Buildroot (Read AT91s) Note that the vanilla Buildroot is lagging for AT91. I have an experimental version based on the Buildroot 2009.08 release which uses the latest 2.6.32 kernel. It is located in the private git area of the Buildroot project. Less tested than the vanilla stuff, but if you want to try the latest... This also allows building the newer SAM9G45 & G10, which the vanilla version does not.

There are limitations to Buildroot, and I have started to use OpenEmbedded

formatting link
When I tried building a full system with X and Gnome on the top, it took 42 hours on my 2 GHz Pentium M laptop.

I built myself a 2.66GHz Core i7 machine this spring, and on this machine (8 virtual cores) it takes about 2 hours to complete the same job. It builds a cross compiler in about 10 minutes :-)

--
Best Regards
Ulf Samuelsson
These are my own personal opinions, which may
or may not be shared by my employer Atmel Nordic AB
Reply to
Ulf Samuelsson

And

touch

Thanks for your reply. I have got this book plus understanding linux kernel and writting device drivers. I am going through these books.

At this stage i am trying to understand what all thing are involved in project like this. How to setup the thing.

--------------------------------------- This message was sent using the comp.arch.embedded web interface on

formatting link

Reply to
tamamontu

embedded

to

small

which

machine

Thanks for your explanation. Its very helpfull. At present at my workplace we have a board which uses Cirrus logic EP9307 + touch screen. This board uses buildroot. The documentation is not helpfull hence I am trying to understand/learn the setup and bits involved in it.

Eventually I want to develope an application which uses the touch panel and controls some device attached to the processor using CAN bus.

EP2400II uses S3C2440A processor in it and the development kit is cheap.

When you say I would have to build the bootloader and kernel manually. Can you please give some pointers to learn/understand this.

Thanks Tama

--------------------------------------- This message was sent using the comp.arch.embedded web interface on

formatting link

Reply to
tamamontu

which

machine

Thanks for your replies and info on the books.

Ulf Thanks for explaining the steps in volved in this kind of project.

At my work place we have a board which uses Cirrus Logic EP9307 chip + 5.6" touch screen. I have been asked to work on this project.

I want to develop a touch screen based application which will control some peripheral device over CAN bus.

formatting link
This link has a good explanation also.

If I am not wrong buildroot is a gui based con-fig file generation utility

When you say to manually compile the kernel and bootloader. Can you please give pointer to understand how it is done.

cheers tama

--------------------------------------- This message was sent using the comp.arch.embedded web interface on

formatting link

Reply to
tamamontu

Well, that is certainly lean (and mean). Less functionality, but who cares, if it fits the requirements.

Risto

Reply to
Risto Sainio

The OS you describe is a totally different beast than Linux - your OS and Linux solve very different problems and are suitable for very different applications. If what you needed was something like the OS you wrote (and presumably it was!), then of course Linux would be a disappointment.

Reply to
David Brown

I don't understand the idea of embedded linix. What is it useful for? What is so good about it?

VLV

Reply to
Vladimir Vassilevsky

It's useful when you need a Linux/Unix OS in an embedded project. For example: you want to run a reasonably full-featured web server, you need an ssh server, ssl support, IPv4 and IPv6 support with NAT and firewall features, DHCP server and client, NTP server and client, and stuff like that.

It's free. It works. There's a lot of software that runs on it. It's been ported to everyting under the sun.

--
Grant Edwards                   grante             Yow! I'm having a
                                  at               tax-deductible experience!
                               visi.com            I need an energy crunch!!
Reply to
Grant Edwards

Including the Sun actually :-)

S.

Reply to
Stefan Arentz

But who may need full featured embedded web server?

On embedded linix without memory management?

Don't know about ssl/ssh, IPv6 is large, the other abovementioned things are no big deal.

Please, not again. It is not free.

Kinda. After you spend ~months to make it work.

Yes, there are few useful utilities, some of these indeed work very well.

I still don't understand the fascination with it.

Vladimir Vassilevsky DSP and Mixed Signal Design Consultant

formatting link

Reply to
Vladimir Vassilevsky

It is useful if you need a large and flexible operating system that can run existing software and support a wide range of peripherals. It is also good if you want powerful networking support, or if you want to be able to run a variety of different programs.

It is of course important to realise what embedded Linux really is - it is a full power *nix-style operating system, typically with fewer drivers enabled by default and typically packaged up with smaller utilities than standard Linux. It is much bigger than the type of OS you have written, and though it can provide close to real time performance, it is not real-time as such (in some cases, "close to real time" is good enough - in other cases, it's a disaster waiting to happen).

For example, I use openwrt embedded linux on wireless routers. This gives me a great deal of flexibility on the network setup - I can use a full-featured firewall, wireless networking, vpn setups, virtual LANs, dhcp server, dns server, etc., etc. On devices (not ones I have used) which have enough flash and ram, you can use it as a print server or a file server (using a usb disk). Although some manufacturers use Linux in their firmware, many use something like VxWorks - such an RTOS has a fraction of the features of embedded Linux, and is no faster or more reliable (in this sort of application).

As another example, I was working for a while with an AVR32 processor running Linux on an STK1000 starter kit. I could do pretty much everything over the network - only the bootloader was actually in the flash on the board. It collected the Linux kernel from my virtual PC, and the root file system was mounted over nfs (again from the virtual PC). Some files were on the virtual PC, others on my "real" PC running windows - the Linux kernel on the board could access them just like any other networked Linux machine. I could edit software on the host PC, compile it on the virtual PC, and run it (via telnet) on the embedded PC. When I needed more RAM than the starter kit board had, I made a swap "drive" as a file on the virtual PC and mounted it as swap on the embedded system - obviously it was a bit slower than real RAM, but it was much easier than trying to solder new ram chips onto the board!

Embedded Linux is certainly not the answer to all embedded systems, but it certainly /can/ be useful on larger embedded systems.

Reply to
David Brown

You are mixing your terms here - the version of Linux for processors without an MMU is called "ucLinux". "Embedded Linux" simply means Linux on an embedded system - which may or may not be the ucLinux variant.

And yes, all these can work fine on ucLinux. There are some limitations with ucLinux applications (no "fork", for example), but most stuff works fine assuming you have enough resources - ucLinux systems are typically smaller with less memory.

Things like NAT, firewalling, and DHCP server and client are not large applications, but they take a lot of time and effort to write yourself. Typically, you would want to use existing implementations - you can either buy code, or you can download some from somewhere. With Linux you can easily get the code, and it is the same code that runs on every other Linux system - lots of features, and lots of testing.

When you are talking about secure code, such as ssl and ssh, you really want to use code you can trust - again, there are no implementations that have had as much testing or scrutiny as openssl and openssh, and with embedded Linux you can run these straight off (not that this means you can trust your builds of such software without testing!).

It is "free as in speech" - something that some people see as a good thing, others see as a bad thing, and yet others don't understand.

For cost, you obviously have to consider many things (development time, board costs, licenses, etc.) before deciding how much it actually costs compared to alternative solutions.

That's very much a "it depends" situation. Some people can get things working quickly, others take a long time. It depends on your experience and knowledge beforehand, your application, your choice of processor and board, your choice of tools and your choice of distribution. The same can be said of pretty much any complex system.

Embedded Linux is complex - there is a lot available for it, and your learning curve will depend very much on how deep you want to go, and how far you stray from well-trodden paths (such as well-supported evaluation cards).

It's true - there are one or two utilities for Linux.

It's not for everybody, and it's not for every application. I don't use embedded Linux much - most of my systems are too small for it. But it certainly has its useful features that you can't (practically) get any other way.

Reply to
David Brown

It's turtles all they way down.

Who said anything about "without memory management"?

Indeed.

Not everbody is wants to spend man-years of their spare time writing every bit of what they need from scratch (after designing a CPU, writing a compiler for it, no doubt).

Whatever.

Nonsense. I've and had Linux running on several different embedded platforms in a couple days.

Nobody is "fascinated" with it. It's a tool.

--
Grant Edwards                   grante             Yow! !  Now I understand
                                  at               advanced MICROBIOLOGY and
                               visi.com            th' new TAX REFORM laws!!
Reply to
Grant Edwards

Current client sells big, complicated appliances to run at the core of small, complicated enterprises. Has promised tons of customization, configurability, remote support. WWW is the easiest way to provide and control all this stuff. Trying to write it from scratch would take the rest of our lives.

Mel.

Reply to
Mel

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.