Linux - Embedded & Single-board computerThis forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Distribution: RPM Distros,Mostly Mandrake Forks;Drake Tools/Utilities all the way!GO MAGEIA!!!
Posts: 986
Original Poster
Rep:
Thanks for the reply!
I did find a few guides ;one being by (Philips Semiconductors , The I2 C bus and how to use it), that is worth noting.
MicroChips product is the one of choice right now and which I have studied on. The power of having a MicroController communicate with other hardware is essential to my goals. I want to be able to use a P.I.C with a SD card ,and every type of external memory there is ,even RAM. I want to build a few data-loggers that use more than one type of memory and also a few different types of Romulators or Eprom emulators. I'm reading the Philips guide and it appears that most of the communication effort goes into actual programming for whatever hardware is used. I shouldn't be , but I am surprised of actually having to write the code for the communication between devices.
The term 'devices' as used here is much too broad for there to be a single general purpose solution. Devices, in the sense of peripheral chips, have many different characteristics, and those tend to dictate how a CPU communicates with them. Some things, such as communications controllers, require a means to offload data asynchronously, and operate somewhat autonomously. They are like Linux character devices, and operate on streams of data. Other devices behave like addressable memory. Still others have elements of both characteristics. Some are intended to minimize the connection channel, such as SPI or I2C, or even One-Wire, whereas others have couplings to the CPU using buses that more closely resemble the native address, data & control buses.
Another use of the term 'device' could be described as something more akin to a 'host'. I'm referring to a device on a larger scale, such as another CPU host, a test & measurement instrument, or a modem or other communications subsystem. Often, such kinds of communication ends up being layered. A host may communicate with another host, via an intermediate layer such as ethernet, RS-232, or any of the other networking protocols use in embedded systems. In that case, the CPU communicates with the network device/chip on one level, and with the peer host on another level.
Some buses are intended to be exposed only between the CPU and chips on the same board, or perhaps across some kind of backplane within the same chassis. Other buses expand that capability for use between boards within relatively close proximity, such as SPI & I2C. Still other buses, such as CANbus or GPIB are much more akin to networks, or are full-on networks in their own right.
Embedded systems and single board computers tend to be more focused and specific in nature, as opposed to generalized. If you need to support a wide array of third party hardware, I suggest using a modular approach, where target-specific expansion of some type is used to extend a more generalized central CPU. Don't try to solve all problems with one design. Focus on removing un-needed components and minimizing the design, rather than trying to accommodate perceived solutions that may never materialize.
--- rod.
Exactly. Keep in mind that these mcus are not that powerful.... every byte and clock cycle counts. it's pays to write mcu and application specific versions of code to squeeze every ounce of performance out of it. Also mcu layout and design varies so much between chips, even between members in the same family, that it makes more sense to build everything from the ground up.
If you really don't want to bother with low level programming then look into the arduino boot loader for atmel mcus.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.