Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Embedded Linux Hardware Resources?

Cliff posted more than 7 years ago | from the in-search-of-specialized-information dept.

Hardware Hacking 37

jessecurry asks: "I've recently come up with a conceptual Linux based piece of hardware and have been able to find a huge amount of information regarding getting Linux on to a device, but almost nothing about creating the device itself. I'd like to know if there are any books, online guides, or software that would help in designing a device that would accept some flavor of Linux. I really don't want to go 'off the shelf', but I need something that can at least display graphics, respond to positional input, and play sound. Also, is there a good place to have all of these components put together once I have a finalized design?"

Sorry! There are no comments related to the filter you selected.

Depends (3, Informative)

Realistic_Dragon (655151) | more than 7 years ago | (#17393616)

On how many you want! The answer is very different even for 1 or 20, let alone two million.

The RTAI mailing lists are a good place for this kind of question however, and handhelds.org has a lot of links to embedded Linux projects.

O'Reilly Book (3, Informative)

compact_support (968176) | more than 7 years ago | (#17393672)

Some folks swear by 'em, some folks hate 'em. Check out http://www.oreilly.com/catalog/dbhardware2/ [oreilly.com] Covers a range of embedded devices from PICs to DSPs and talks about the various buses you'll see.

Tail wagging the dog? (4, Insightful)

ClosedSource (238333) | more than 7 years ago | (#17393732)

If you want to make something useful you should be concerned about what the device is supposed to do, how compact it is, how much it should cost etc. Whatever OS is selected (if any) it should logically follow from the goals of the project. Unless this is an academic or work experience building effort, the OS selected is just a detail. Otherwise, it's a bit like asking "how can I build an embedded systems that uses 2k resistors".

Re:Tail wagging the dog? (1)

huckda (398277) | more than 7 years ago | (#17393760)

parent makes sense...especially in embedded devices...
why reinvent instead of modify and save egads on development

Re:Tail wagging the dog? (1)

mustafap (452510) | more than 7 years ago | (#17393852)

I couldn't agree more.

Unless there is some overiding requirement - like your tutor saying ' build a device that runs linux ', then you are starting at the wrong point. Please, explain your problem in more detail

p.s. If your tutor really did suggest that, then they are an idiot. Find yourself another tutor. Engineers in the real world design systems to solve problems, not to a particular OS )

Re:Tail wagging the dog? (1)

B'Trey (111263) | more than 7 years ago | (#17397448)

An OS is a general componenet. What one OS can do, pretty much any OS can do. (Proprietary file formats and such may be an occasional exception but that's more of a legal restriction than a technical one.) There are a few other limitations, such as real time responses, that not all OS's can support but there are multiple choices within any specific genre of OS, and all of them generally equal for most tasks.

It's reasonable to assume that, whatever the device in question actually is, it involves general purpose computing/manipulation of data, and there's no compelling technical reason to pick one OS over another. There may be, however, financial reasons to pick one OS. Using Linux is much cheaper than using a proprietary OS that one must pay for. And the choice of OS may very well impact the selection of hardware. Engineers may design systems to solve problems but business men create buisnesses to make money, and Linux can be an important part of that.

Re:Tail wagging the dog? (1)

ClosedSource (238333) | more than 7 years ago | (#17399068)

"It's reasonable to assume that, whatever the device in question actually is, it involves general purpose computing/manipulation of data.."

Well, it would be more reasonable to assume that if the discussion wasn't about embedded systems which aren't considered general purpose devices.

"Engineers may design systems to solve problems but business men create buisnesses to make money, and Linux can be an important part of that."

There really isn't much serious engineering product design going on outside the context of a business, so when engineers talk of "solving problems in the real world", business considerations are naturally part of the problem. Not all embedded systems require an OS and those that do may find that an OS that wasn't designed from the ground up to be embedded (Linux, Windows CE, etc) may be inadequate or too bloated to be appropriate. Linux is certainly worth considering, but as I said before, the requirements of the project should drive the selection (and one of those requirements could be cost which would favor Linux over many other OS's).

Re:Tail wagging the dog? (1)

B'Trey (111263) | more than 7 years ago | (#17399836)

Well, it would be more reasonable to assume that if the discussion wasn't about embedded systems which aren't considered general purpose devices.

An embedded system usually IS a general purpose computing device. That is, most of them are built from a few standard components and are driven by a generic CPU with custom software and/or firmware. (That may be a complete program that performs all functions, including those normally relegated to an OS, or it may be just a custom program running on top of a standard OS.) There are some exceptions. Some embedded devices are designed from the ground up, including a custom microprocessor or logic unit. It's doubtful that any such device would be running anything other than completely custom software, however. If we're talking about using a commercially available OS on an embedded device, then the vast majority of the time we're talking about a general purpose CPU (although not necessarily a desktop computer CPU) being used for a specific application. In most such cases, there's no real technical reason requiring one to pick one OS over another.

There really isn't much serious engineering product design going on outside the context of a business, so when engineers talk of "solving problems in the real world", business considerations are naturally part of the problem.

A large research lab or skunkworks is, perhaps, technically a business but the engineers are seldom concerned with practical business matters. That's someone else's departments. And, of course, there are universities, etc. ...Not all embedded systems require an OS and those that do may find that an OS that wasn't designed from the ground up to be embedded (Linux, Windows CE, etc) may be inadequate or too bloated to be appropriate.

This is true, but it's doubtful that someone who was planning such an application would be posting to Ask Slashdot on how to find the appropriate hardware. And there are several versions of Linux (MuLinux, uVex, RT-Linux, Blue Cat, etc.) that have been extensively engineered for embedded applications. They're used in mission critical applications, including weapons systems, medical systems, etc. I think they're probably adequate for the poster's question. If not, then he's almost certainly WAY in over his head.

Re:Tail wagging the dog? (1)

ClosedSource (238333) | more than 7 years ago | (#17401260)

"An embedded system usually IS a general purpose computing device. That is, most of them are built from a few standard components and are driven by a generic CPU with custom software and/or firmware."

That's not what I would call "general purpose". That definition would cover everything with a microprocessor from a toaster to a high-end server. Embedded systems generally have a purpose that is more limited in scope.

"A large research lab or skunkworks is, perhaps, technically a business but the engineers are seldom concerned with practical business matters. That's someone else's departments. And, of course, there are universities, etc"

Research labs and universities don't typically perform product development, so when we say engineers solve real-world problems, we aren't really talking about those folks.

"This is true, but it's doubtful that someone who was planning such an application would be posting to Ask Slashdot on how to find the appropriate hardware."

I think asking for help from Slashdot isn't a great idea in general, but I don't think you can really infer anything about his project simply on the basis that he asked the question here.

Re:Tail wagging the dog? (1)

B'Trey (111263) | more than 7 years ago | (#17402288)

That's not what I would call "general purpose". That definition would cover everything with a microprocessor from a toaster to a high-end server. Embedded systems generally have a purpose that is more limited in scope.

My last comments on the subject. Feel free to have the last word if you like.

You're confusing the purpose of the device with the functioning of the device. Pretty much everything from a toaster to a high end server DOES use general purpose microprocessors. That's precisely the point I was making. You'll need a more powerful chip for a server than you will for a toaster, but the fundamental principles of operation are the same. They're all Turing machines. They're all general purpose computing devices. Your toaster and your MP3 player and your home thermostat and your belt-clip pedometer all do very different and very specific things, but they may very well all use the same microprocessor. The CPU is a general purpose device that is capable of doing all those different things given the proper software. For a typical embedded device, there's no need to spec out the microprocessor in detail before determining the OS. When you break it down, almost all embedded devices read bits out of a register, perform some mathematical manipulation of those bits, then store them back in a register. The details vary, but the general function doesn't.

Embedded systems != CPU (1)

ClosedSource (238333) | more than 7 years ago | (#17404136)

First of all, most embedded systems don't use the same processors as non-embedded systems. They often use microcontrollers that provide additional peripherals in a compact package. Secondly, choosing the appropriate processor is a key element of most embedded designs. Thirdly, even though embedded systems use CPUs that can be used for a variety of purposes, that doesn't make those systems general purpose.

Sure, at a very low level all computer applications do the same sort of things, but embedded product design isn't done at that level. There are real, significant differences between the goals of specific embedded systems and those of general purpose computer systems. Ignoring those differences will make it much harder to successfuly design, build, and sell your product.

Got r00t? (-1, Flamebait)

Anonymous Coward | more than 7 years ago | (#17394924)

If you want someone to be able to r00t your device in 10 seconds or less, stick with Lunix. Security through obscurity is it's forte.

Foolish (2, Insightful)

Andrew Sterian (182) | more than 7 years ago | (#17393750)

You'll never be able to make something on your own as cheaply as an off-the-shelf system that's mass produced due to economies of scale. Focus on the end-product and don't get caught up on trying to do everything yourself. I'd buy an off-the-shelf hardware system.

Re:Foolish (2, Insightful)

AuMatar (183847) | more than 7 years ago | (#17394940)

But building it yourself is more fun.

Not foolish. (0)

Anonymous Coward | more than 7 years ago | (#17395770)

Uh, most likely is that his vision is that his device *will* in a second generation be mass produced to take advantage of economies of scale.

I expect this is so he can have a working prototype/first-gen device when he goes to see VCs for funding version 2.0.

And this makes it an excellent plan; since VCs often screw you if you go to them when you only have a concept.

Gumstix (3, Interesting)

dduardo (592868) | more than 7 years ago | (#17393870)

Look at the gumstix: http://www.gumstix.org [gumstix.org]

Their boards will do everything you've mentioned, they have good documentation, the schematics are under creative commons, and it runs Linux.

Why? (1, Informative)

Anonymous Coward | more than 7 years ago | (#17393900)

Why do you want to build it yourself?

While Linux runs on ARMs, be assured that building such a thing is not much different from designing a mainboard with bridges... yourself.
That's why I'm asking why.
- either you want to make it for fun, for learning. that's fine, go ahead
- or you have your idea about some software running on embedded Linux which you want to make into money. Then don't waste your time creating new hardware. Two links for you: <a href="http://www.pcengines.ch/wrap.htm">PCEngines WRAP</a>, <a href="http://www.soekris.com/">Soekris</a>.

Obvious - only existing chips... (2, Informative)

kosmosik (654958) | more than 7 years ago | (#17393920)

Linux is an Operating System - it has drivers for *existing* hardware. It is really hard to write drivers (or modules in Linux-speak) for dealing with non-existing hardware - I see real problems with testing it. :)

So obviously if you plan to build hardware that will run Linux you need to use existing chips that have support in Linux. On the other way you may be willing (but there is no economical point for you really) to design some brand new hardware - just make sure it is atractive so few linux-heads-devs will use it and also make sure you release full specification of it.

This is just the info I need... (0)

Anonymous Coward | more than 7 years ago | (#17393924)

...to my finish my robot. My GIRL robot. *wink*

PS: Anybody know a good inexpensive source for lubricated latex sleeves?

Re:This is just the info I need... (2, Funny)

Lord Kano (13027) | more than 7 years ago | (#17393948)

PS: Anybody know a good inexpensive source for lubricated latex sleeves?

Sounds like you need a fleshlight. [fleshlight.com]

LK

Buy don't build (1)

georgewilliamherbert (211790) | more than 7 years ago | (#17394154)

Unless you've built hardware before, just buy off the shelf hardware. Really. Building is a mistake for a novice.

See http://www.linuxdevices.com/ [linuxdevices.com] for probably the single best central resource for what you can buy off the shelf already.

it's all been done before (2, Informative)

joe_bruin (266648) | more than 7 years ago | (#17394286)

Get a reference board from one of the chip vendors. You'll find that they've generally already built a board that does anything you want to do and more. Then you can strip the features you don't want, and the design work is essentially done.

In my experience, Cirrus Logic is very Linux friendly, with good driver support for their ARM processors and dev boards.

An easy path (0)

Anonymous Coward | more than 7 years ago | (#17394306)

www.mini-itx.com has a bunch of stuff to build small computers. Starting with something like a standard mobo means you are more likely to get a working system sooner. A mini itx board plus flash memory (instead of a hard drive) plus a tiny dc power supply plus www.damnsmalllinux.com gives you a working system with minimal expenditure of time, effort and money.

When you have something working, you can think about a smaller board, less power consumption, etc.

Just what you're looking for... (1)

viewtouch (1479) | more than 7 years ago | (#17394530)

What you're describing sounds an awful lot like the new Hot-E from http://www.thinlinx.com/ [thinlinx.com] This product has been in development for a while and it's now in production. I'm using it to do Linux/X touchscreen point of sale for restaurants, bars and retail.

Don't reinvent the wheel. (0)

Anonymous Coward | more than 7 years ago | (#17394650)

Sound like you want a Chumby [chumby.com] .
(Saying from the get-go that you want your device to be linux-based is probably a bad
idea, however.)

Depends what you want (2, Insightful)

porkThreeWays (895269) | more than 7 years ago | (#17395508)

There's like 4 levels of "embedded" systems. Depending on who you talk to, some of these don't qualify. But "embedded" has been unclear for the past few years.

Lowest level - True microcontroller. AVR or PIC. They can easily display LCD graphics, MP3 chips exist for sound. If you can get away with a true microcontroller, DO IT! It isn't Linux, but the AVR line is heavily supported by the open source community. Some of the best developer tools for it are GCC based. It can also easily do DAC and ADC. Super cheap per unit costs (some systems under a dollar in high enough bulk)..

Next level - Gumstix style system. Has a heavier OS, but much more hardware support. Also, you have the advantage of many premade libs for you to use. They usually use 200-400 mhz processors. Also have the advantage of much more storage. Can usually access CF and SD cards.

Mini itx / Nano itx / PC 104- The manufacturing industry uses these a lot. Still solid state, but basically a small PC. REALLY small PC. Many times 1/4 the size of a laptop motherboard.

PC - Some people consider limited resource PC's embedded. I generally don't, but that's me. The manufacturing industry uses these. Think shuttle pc or microatx.

As I said before, depending your programming experience, it's almost always best to start lowest and go up. Your unit costs are cheaper. Devices use less power and not as hot. Much smaller. Etc, etc. Basically, all these things mean more profit to you.

Re:Depends what you want (0)

Anonymous Coward | more than 7 years ago | (#17396682)

You forgot the middle ground between "bare" microcontroller and next level (Gumstix and alike) and that are uClinux (no MMU) compatible systems, using high end, 32 bit microcontrollers, Renesas (Hitachi) SuperH or Freescalse (Motorola) 68K (CPU32) based devices.

8 bit micros seem to never die out, they are just too ... "cute", but if we had dirt cheap 32-bitters with (wild guess assessment) 10MB Flash and 2MB RAM on the chip, packaged in small pin count IC's like today's 8-bitters are, so that we could fill them up with uClinux without too much PCB design and have a LED blinker with a console port built in an afternoon... that would mean bye bye assembly language handcrafting!

However, I don't see any major microcontroller manufacturer doing it, not because they physically can't (it is way, waay old tech) but because 8-bitters are too good business, with highest customer loyalty (due to steep learning curve involved with migration to competing architectures) and they are not going to kill it themselves by enabling easy migration for customers (compare earnings of multiple manufacturers of 8051-compatible architecture microcontrollers to earnings of Microchip, single-source producer of PIC architecture). Even a slight improvement of memory scarcity in an 8-bit single chip microcontroller is dangerous - as soon as you can start programming it in C (using free, multi-device compiler, such as SDCC), you are almost free to migrate away! With 32 bit micros, you could even use GCC!

OTOH, all of them are certainly having ready chip designs in their safes should one of them trigger the market destruction by being first to offer such devices. Or maybe... not all of them do, so there might be an opportunity for first comers after all?

Re:Depends what you want (1)

ClosedSource (238333) | more than 7 years ago | (#17397446)

Stripped-down C compilers have been available for the 8051 since the mid-eighties, so I doubt that that is keeping anyone for migrating an application away. I think the dirty-cheap cost, the simplicity of its basic design, the many variations available, and the body of knowledge for using it is what keeps the 8051 in the game.

Some things have changed, however. In the old days the 8051 was usually the main processor even in a fairly complex embedded system. Now it is more likely to be used to implement a sub-function with a more powerful microcontroller/microprocessor acting as the primary intelligence.

Re:Depends what you want (1)

porkThreeWays (895269) | more than 7 years ago | (#17397502)

I think you've pretty much described Atmel's product line. They design all their equipment to be programmed in C (and with heavy gcc support). They do have a good assembly language, but many people choose C. They have just come out with a 32-bit chip (though I want to say it does have an MMU). In fact, the Linux kernel already has support for the 32 bit chip. I think asking for on IC storage is a bit much and I doubt it will ever happen due to lack of demand.

The PIC line is notorious for being

1) Super cheap to produce once the code is written

2) Super high barrier of entry

3) Really expensive non-portable C tools

That I am against. The basic stamp II isn't much better and you lose low unit costs of hardware. I think the entire Atmel line is a great balance of everything.

one answer (2, Informative)

ecloud (3022) | more than 7 years ago | (#17395772)

I'd take a wild guess that greater than 90% of Linux embedded systems use some kind of ARM processor. Since that design has been licensed far and wide, you can probably find a customized one with just the peripherals you are looking for, from some company or other (e.g. Phillips, Atmel, Freescale, etc. etc. - just search digikey or mouser for some ideas). It uses a 32-bit instruction set (good for Linux, and good for porting code in general), typically has an LCD driver on the chip, and you might even be able to find one with a DAC. For high-quality audio output, you can use a Wolfson DAC (again there are many choices depending on whether you need a headphone amp, ADC, line-in, mic pre-amp, mixer, how many channels etc.) The ipods tend to use these chips (the 2-channel kind with a headphone amp) so some of them are really cheap because of the economies of scale. For even better quality, the best is probably Burr-Brown (as used in the SlimDevices Squeezebox).

As another poster suggested, you can do prototyping with a Gumstix. Just the display may be a pain with those because they use that teeny-weeny surface-mount Hosiden connector for most of the I/O lines, and you will probably need to build your own display adapter board. But they do have an audio daughterboard already. For something more expensive but a little more ready-to-go (as a prototype), check out the offerings from Arcom; I've used those as well. Or look for some other SBC (linuxdevices.com is a good place to search). You can develop software that way, make sure you know how to use all the hardware you're going to need, and in parallel be working on your final board design (suitably miniaturized if necessary, all on one board, and leaving off the features that you don't need).

Re:one answer (1)

ecloud (3022) | more than 7 years ago | (#17395950)

Err, that's a Hirose connector I think, not Hosiden.

Re:one answer (2, Informative)

yope (656090) | more than 7 years ago | (#17397296)

I'd take a wild guess that you're wrong. There are also a _LOT_ of embedded PowerPC and MIPS devices out there. Probably ARM is still in first place, but not by much. Many people nowadays tend to confuse "embedded-systmes" with handheld devices or PDA's. While PDA's still are considered embedded systems, in fact an ambedded system is almost about any piece of electronic that forms part of a device or machine, which contains some sort of microprocessor. That could be inside your microwave oven, a car, an industrial control system, your TV, your DVD player, etc... nowadays almost anywhere.
The ARM cores excell in power-efficiency, that's why there is hardly any better alternative for battery-powered hand-held devices, but the vast mayority of embedded systems are NOT battery powered, thus other processor cores might be better suited. If you need a 32-bit processor with memory-management functions that is able to interface vast amounts of RAM/Flash (i.e. something that can run linux), there are other choices besides ARM: PowerPC, MIPS, Super-H, Infineon Tri-Core, etc... Have a look at the MPC5200, MPC8xxx or MPC8xx ranges of processors from Freescale (ex Motorola) for instance, they have an impressive set of on-chip peripherals that is not equalled by any ARM based processor AFAIK.

Use p2p (1)

linuxIsLife (1044762) | more than 7 years ago | (#17397828)

All info that you need can be found in eDonkey or other p2p networks.

Not Linux (1)

mnmn (145599) | more than 7 years ago | (#17398538)

You've asked about how to create a device that can run Linux. That is an embedded question, nothing specific to Linux itself.

Look for embedded forums, start with the sparkfun, philips semiconductors, lpc2000 and similar forums.

Any hardware you work on or will build will highly depend on the type of CPU and system (including memory size and design constraints like power). I suggest you start with just making root and kernel images for something mundane like cisco 2500 routers and Linksys WRT54GS routers, then getting on with your own designs.

Go buy a cirrus logic board from Olimex.

Re:Not Linux ...YES it is! (1)

EmbeddedJanitor (597831) | more than 7 years ago | (#17405976)

Quite a few devices (Wifi etc) often have WinCE drivers available and not Linux drivers. Running Linux is something you want to identify up front.

Soekris devices (1)

sBox (512691) | more than 7 years ago | (#17399346)

I've used the Soekris Engineering [soekris.com] boards for m0n0wall based firewalls before. They come in different models for different purposes: wireless, vpn (encryption acceleration), general network/communication, etc.

EP93xx + assembly (1)

j35ter (895427) | more than 7 years ago | (#17401962)

A friend of me is working on an -El Cheapo - design using cirrus logic EP9302 SoC. You basically need some RAM and flash...and thats it. This device has all you need, including USB,LAN,SPI,...
Other variants (series 931x) even have VGA-out!
Our main problem is the flash memory needed, since its out of production. You can use some substitute, fiddling around with the address lines, but we decided to have a second look at the bootloader, and try to boot this baby directly from USB or SPI.
As for the assembly...well, we found a guy in Serbia who has the necessary gear to manufacture 2 and 4 layer boards. His price for a 2 layer board (90x90mm) with ~30 components soldered was 60 Euros for the prototype, 60 for the solder mask, and around 5 Euros for the board and assembly. (Components are on your tab, of course!)
Should you need info about him, send me a message.
Check for New Comments
Slashdot Login

Need an Account?

Forgot your password?