My Embedded Linux Adventure – Intro

The concept of embedded systems is one that I have found very interesting for a long time. The term is actually a pretty accurate description of the topic itself, the idea being that some task specific software is paired with a specific hardware and set within a larger system. The results of which have significant practical importance in our daily lives. Almost any electronic device you encounter today, from smart phones to TVs, to new cars with their increasing number of computerized features, operates with some marriage of tailored software and hardware. Among these, it’s not uncommon to encounter some presence of the Linux kernel.

Image courtesy of Wikipedia

Until recently though, I have not gotten the chance to explore this boarder between hardware and software. Since an opportunity has presented itself (free hardware!) and I thought it could be useful to people (and it’s my job) I have decided to blog about my adventures into the Linux side of the embedded systems world. To start this trip, let’s look at the hardware.

The board that I’ve decided to use is called the Zybo. I selected this board over another comparable board available (see Zedboard) mainly because of it’s roughly half the size. This may seem like an insubstantial reason until you consider all the things you have neglected to use since they’re inconvenient (anyone else have a cupboard full of appliances they rarely use?). It comes with your standard dev board IO stuff like HDMI, USB, Ethernet, a bunch of GPIO pins, and also an audio codec that supports line and microphone in and headphone out. If you’re curious about the exact specifications you can check out the board here.

The Zybo

The main reason for selecting this type of board, however, over something like a Raspberry Pi, is because of the Zynq 7000 chip it has. This chip incorporates an ARM processor and FPGA fabric onto a single chip, which presents me with the prospect of a lot of flexibility for projects down the road.

That about wraps it up for my intro, but included below are some links to some embedded Linux resources I have been reading, as well as links to Zybo resources I will be following for the first leg of this trip.

Linux Reading Links:

Embedded Linux Wiki

Linux Journal

Zybo Links:

Getting Started

Instructables Guide

Stay tuned as the journey continues!

About Nate Eastland

I am currently a student at Washington State University studying Electrical Engineering. I am originally from Southern California but I have spent most of my life in the Seattle area. Growing up I was always deeply interested in the pure sciences like chemistry and physics. Throughout high school I began to look for ways that I could apply the theory I had learned. I chose to pursue engineering so that my interest in applied sciences could be used to solve real world problems.

View all posts by Nate Eastland →

9 Comments on “My Embedded Linux Adventure – Intro”

  1. Hi Nate,

    So I have a question. If an embedded system is the idea of having some task specific software paired with specific hardware, what is the difference then between this and a microcontroller? From my understanding, microcontrollers work by loading your software into memory to interact with a specific component or piece of hardware like an LED, a DAC, or a WiFi chip.

    Or if there really is no difference between the two in principle, why do people make a distinction between the two?


  2. Yup no doubt that it’s a fine board. Zynq is capable of implementing much broader things due the processor and fpga onsame chip.

  3. If i understood the question of Mr. James Colvin then it is related to difference between a Hardwired system and a Sofware based system. Then the answer is:
    1) Hardwired system are designed for each individual system and are difficult and expensive to change if an upgrade or even a minor change in task is needed. Software is flexiblento be changed without additional hardware change cost.
    2) They require more time to be designed and developed. Hence time means money 🙂
    3) It is expensive to produce a hardwired system than a microcontroller chip. Especially if they are needed in low number. Same is true if you design an ASIC. Microcontrollers are manufactured in millions and more, hence the cost of system reduces significantly.
    3) Microcontrollers come with builtin modules e.g. UART, PWM, USB etc. Hence reducing in the footprint of the system. But if you have to design a Hardwired System then you need to use these modules externally which will increase the size of your system.
    4) Humans find it easy to build a logic sequentially (as is the case with software until and unless there is no multithreading/paralled programming involved). But when you design hardware and specially digital hardware, then you have to think in parallel. And believe me it is not that easy for big systems as writing a software is (you might know it if you work with FPGA).

    I think discussion is getting too long so i think this might satisfy your question. If not then don’t hesitate to ask 🙂


  4. In single line answer:
    Microcontroller = Less Complex and Low Cost
    Hardwired System = Complex and Costly


  5. And Microcontroller is a part of embedded system if you think that embedded system is something else and Microcontroller is something else.

  6. Hi M. Z. Aziz Khan,

    Thank you for the detailed response! I hadn’t considered the fact that microcontrollers can have the various built-in modules like the USB, PWM, and DACs in some cases, whereas all of the hardware based designs have to add those components in externally which does imply more physical space, traces, and just components in general.

    So from what I understand then, the Zybo is really nice in the fact that it has the Zynq SoC because you can use some of the built-in modules on it without taking up a lot of extra space on the board or in the FPGA, but at the same time be able to do some of the parallel processing that is inherently difficult to do in software?

  7. So then I suppose the biggest thing to look for when designing a project is to figure out what you need to do in your project in order to choose your platform (microcontroller, an SoC, or just a FPGA).

    Is there any particular thought process you use when deciding which platform to use? I.E. do you consider the fact that your project might change or need to grow (or have a slightly different version of the project) and have that consideration affect which platform you end up choosing? Or would you always choose something like a microcontroller or SoC that is always easy to change in software?

  8. Dear James Colvin
    it always depends on the requirements of the project. For example, for simple tasks one would not use something expensive and sophisticated. It will be waste of resources. On the other hand one cannot choose something that lacks the capability that one needs to implement. Every project has its own needs and requirements. Therefore one has to first plan and then try to make a good decision both in terms of functionality and in terms of cost.
    😀 no it is not like that one always has to use microcontroller. One has to go through a thought process in order to choose implementation platform.

Leave a Reply

Your email address will not be published. Required fields are marked *