Embedded Linux
-
Think Horses, not Zebras
There is a popular quote in medical circles: When you hear hoofbeats, think of horses, not zebras. – Dr. Theodore Woodward “Zebra” is the American medical slang for arriving at a surprising, often exotic, medical diagnosis when a more com…
-
Adventures with a ATSAMA5D27 board
Recently, we brought up a new PCB (printed circuit board) a customer had designed based on the Microchip ATSAMA5D27C-D1G processor. We encountered several interesting challenges. The first issue was that the design only had serial ports (a…
-
Microcontroller (MCU) or Microprocessor (MPU)?
As technology advances, there are two basic processing platforms for implementing embedded systems. The first is the Microcontroller Unit (MCU). These devices have varying amounts of integrated Flash (<= 2MB) and RAM (<= 1MB), and are…
-
Getting started with Embedded Linux
Recently I was asked by a developer, who has done windows development for 10 years, how to get started with Embedded Linux. Embedded Linux covers a lot of ground and includes a broad range of components/skills to put together an entire syst…
-
Git, Versioning, and Branching for Embedded Linux Development
When building a product using Linux, versioning and branching of your software is an important consideration. Everyone’s needs are different depending on the size of the team, culture, and testing requirements, so there is no one size that …
-
Separation of Source and Build Directories
As we work with larger and more complex systems (i.e. Linux), more and more of our time is spent on integration and pulling different pieces together. We often need to debug or understand code we did not write – especially in build systems…
-
Understanding the NXP i.MX6UL Pin Mux (Part 2)
In the previous post, it was noted that bit 30 needs to be set in the i.MX6UL pad config if you want to read the state of a GPIO output. Digging into this a bit more, we find the following text in the Documentation/devicetree/bindings/pinct…
-
Understanding the NXP i.MX6UL Pin Mux
(note, the article is also applicable to the i.MX6ULL as these processors are very similar) The NXP i.MX6UL application processor has a very flexible pin multiplexer, that is somewhat difficult to understand at first glance. Most times whe…
-
Why Git?
Some time back, I gave a presentation that included an overview of the Git version control system. I still occasionally get asked why Git should be used instead of Subversion, as it seems harder at first. Most developers don’t really unde…
-
Using Go in place of a Spreadsheet
Recently I needed to calculate NAND partition tables for a project where we will be supporting a number of different flash parts from 500MB to 2GB. I first tried this in a spreadsheet, but found it difficult to work easily with hex numbers…
-
Using Docker for OE/Yocto builds
Why Docker? When using OE to build software for products, we often run into the scenario where software needs to be built using the same version of OpenEmbedded over the course of several years. Production builds need to be predictable. …
-
Go Language for Embedded ARM Linux Systems
In the quest for technologies that work well for embedded Linux systems, I recently gave Go another try. The last timeI tried this was very early on and there were some floating point issues on ARM that appear to be fixed now. Having spen…
-
OpenEmbedded / Yocto Usage Survey
Recently, I sent a survey to the OpenEmbedded and Yocto mail lists asking a series of questions about how they use OE. 38 people responded. The average number of years using OE is 4.8 years. Below are the results of the questions. (updat…
-
Best practices for using CMake in OpenEmbedded/Yocto
I’ve already written about using autotools and qmake in OE. With recent projects, we’re using CMake to build most C/C++ components. Like any good tool, CMake has a learning curve, but it seems to do its job quite well. Below are examples…
-
Library sizes for C vs C++ in an embedded Linux system
Is the size of the libraries required for C++ (vs C) a concern in Embedded Linux systems? Most Embedded Linux systems likely include some C++ code, so this is probably not even a decision we need to make in many cases. However, often ther…
-
Setting up an OpenEmbedded Package Feed Server
With the BEC OE build template, you can easily set up an opkg feed server that serves up packages from your build directory. This allows you to easily install new packages during development, without generating and reflashing an entire ima…
-
Why systemd in Embedded Linux Systems?
Recently I was asked why use systemd vs sysvinit in embedded systems? There are many discussions on this, and really most of the reasons people use it for servers and desktops are also valid for embedded systems. Lennart Poettering’s arti…
-
OpenEmbedded Build Template
How does one set an OpenEmbedded/Yocto/Poky/Angstrom build? There are many options. Some include: Angstrom setup scripts Poky Freescale Community BSP OpenEmbedded core standalone (I’m sure there are many others, feel free to add in commen…
-
OS Containers for Build Systems
Since I’ve been running archlinux on some of my systems, one thing I’ve found useful is systemd-nspawn. systemd-nspawn containers (or chroots on non-systemd systems) give you a quick way to install a Linux distribution, that can run inside …
-
OpenEmbedded Source Mirrors
When using OpenEmbedded for product development, there are several reasons you may want to consider setting up a source mirror for your OpenEmbedded build: over time, sources disappear from download locations various servers for source pac…
-
Perisistent device names for USB serial ports
Currently, my workstation has two 8-port USB<->RS232 devices, one dual port USB<->RS422/RS485 adapter, and several single port adapters such as the very useful BUBII. So with around 20 USB->serial devices, figuring out which…
-
A quick way to set up an OpenEmbedded feed server
During development with OpenEmbedded (oe-core, meta-oe, meta-angstrom), I often find it useful to set up a feed server so that packages can quickly be installed on the target system without manually copying them over or building a new image…
-
Setting the root password in an OpenEmbedded image
During development, often a blank root password is used for the embedded Linux target system. However, when deploying an embedded Linux system, often there is a requirement to set the root password to something non-obvious. One way to do …
-
OpenEmbedded: configuring openssh to allow a blank password
Noticed the following when browsing around in the OpenEmbedded sources the other day: ROOTFS_POSTPROCESS_COMMAND += "openssh_allow_empty_password ;" This allows a blank password for development, which is conveient for running ssh…
-
Running a reboot cycle test shell script with systemd
One of the easiest ways to stress test an embedded Linux system is to continuously reboot the system. Booting is a difficult activity for a Linux system (similar to waking up in the morning). The CPU is maxed out. There are a lot of things …
-
Bitbake has a new way of displaying build status
Now instead of displaying a scrolling log, bitbake will display a simple output that lists which tasks it is working on at the moment: Currently 4 running tasks (185 of 3093): 0: gmp-native-5.0.5-r0 do_configure (pid 22919) 1: lzo-native-…
-
Mounting a UBIFS partition using systemd
Systemd is becoming the defacto system and service manager for Linux, replacing the SysV init scripts. The Angstrom distribution has supported systemd for some time now. Recently, I needed to mount a UBIFS filesystem in one of my projects.…
-
A Review of Graphical Application Solutions for Embedded Linux Systems
One of the decisions we face when building Embedded Linux systems is what components to use. With Open Source software, there is often more than one good option. Graphical libraries are no exception. In this article, we’ll examine GTK+, Qt,…
-
A Linux Kernel Tracing Tutorial
The Linux kernel has a fairly extensive tracing infrastructure that is quite useful for debugging. There are a number of things you can do with tracing, but the focus of this article will be the traditional printk type debugging we often e…
-
The easy way to get serial terminal in Linux
When doing embedded Linux development, most of us spend out time tethered to a target system with a serial cable, which is used for a serial console. Minicom is the defacto serial terminal software for Linux. However, Minicom is a little …
-
Verizon UML290 and Sprint U600 USB Modems in Embedded Systems
Recently I tested support for the Verizon UML290 and Sprint U600 USB Cellular modems in an embedded Linux system. Both modems support 3G and 4G networks, but only the 3G modes were tested due to lack of 4G coverage at the testing location.…
-
Yocto and OpenEmbedded
Recently, I attended an Embedded Linux summit hosted by the Linux Foundation to discuss the Yocto project. Overall, I thought the meeting was very positive and constructive. Having met and discussed at length the methods and goals of the L…
-
OpenEmbedded srctree and gitver
Recently an OpenEmbedded class name srctree became usable. The srctree.bbclass enables operation inside of an existing source tree for a project, rather than using the fetch/unpack/patch idiom. The srctree.bbclass in combination with the …
-
Qt Creator for C/C++ development
Recently, I’ve been evaluating Qt Creator for general C/C++ development. I’m currently involved in the development of a rather large C++ application that is approaching 200,000 lines of code and 1000 source modules. In the past, I’ve typi…
-
Installing OMAP3 images on a SD card
This article and screen-cast is a continuation of that last couple posts describing the BEC OE build template. The purpose again for a build system is to automate tedious manual tasks, and in doing so, we end up documenting how the build s…
-
Creating a Custom OpenEmbedded Image
In this article screencast, we’ll demonstrate how to create a custom Linux OS image using the OpenEmbedded build system. This demonstration builds on the earlier article about using the BEC OE build template. The OpenEmbedded build system…
-
OpenEmbedded Build Template
Setting up an OpenEmbedded build is a fairly simple process if you carefully follow the instructions. There are also a number of scripts available that automate the setup such as the OpenEmbedded Tools for Eclipse, the Angstrom setup scrip…
-
MeeGo Review
As we evaluate various technologies that might be applicable in embedded systems, MeeGo is the subject of this article. MeeGo is a collaboration between Intel and Nokia, and is replacing the Moblin and Maemo efforts. For this review, MeeG…
-
Gumstix Overo review
Based on the interest and number of embedded modules currently available, it appears that the OMAP3 CPU from TI will be very popular in the general purpose embedded Linux market. One of the OMAP3 modules available is the Overo from Gumstix…
-
The Go language for embedded systems
As one of the things I do is evaluate new technologies for embedded systems, the Go language from Google is an interesting development. I have been looking for a better “system” language for some time. What I mean by a better system langu…
-
OpenEmbedded development activity
Ever since I have been sending out weekly change logs, I have been impressed by the consistent amount of development activity in the OpenEmbedded project. Every week there are consistently over a dozen developers making changes. Developer…
-
OMAP3 Resume Timing
One of the most common power management modes for ARM processors is the suspend mode. In this mode, peripherals are shut down when possible, the SDRAM is put into self-refresh, and the CPU is placed in a low power mode. A useful bit of in…
-
Linux kernel stats, and long term advantages
I just read an interesting interview with Greg Kroah Hartman. According to Greg, we add 11,000 lines, remove 5500 lines, and modify 2200 lines every single day. This rate of change is something that few organizations have the resources to…
-
Linux PM: OMAP3 Suspend Support
This article provides an overview of the Linux kernel support for the suspend state in the TI OMAP3. Power management has always been one of the more difficult parts of a system to get right. The OMAP3 power management is quite extensive.…
-
Integrated CAN solutions for Linux
I just received an email notification from EMS (http://ems-wuensche.com/) that support for their CAN controllers is now in mainline Linux kernels. The EMS PCI products are supported in 2.6.31, and the CPC-USB product will be supported in 2…
-
Notification at the end of builds
I do quite a few OpenEmbedded project builds during the course of a week. This process usually takes 3-5 minutes. That is just enough time to get distracted doing something else and forget about the build until an hour later when you real…
-
Best practices for kernel development with OpenEmbedded
A common question is how do you do kernel development with OpenEmbedded? Typically, OpenEmbedded builds a kernel by checking the source out of a git repository, or by applying patch files to a released version of the kernel. See the many …
-
Best practices for building Gtk+ applications with OpenEmbedded
I recentlywrote an article about best practices building Qt applications with OpenEmbedded, and it occured to me that I should write an equivalent article for Gtk+ applications. The same points apply – put your application source in a SCM …
-
Best practices for building Qt applications with OpenEmbedded
This article describes how to cross compile a Qt application (named qt_tutorial) with OpenEmbedded, and several best practices you should consider. OpenEmbedded currently includes fairly good support for building Qt – both Qt Embedded and …
-
Gumstix Overo Pinout Spreadsheet updated
The Gumstix Overo Pinout Spreadsheet has been updated with the Palo board connector pinouts, and a few mistakes have been fixed.
-
How to capture source changes to an OpenEmbedded package
One task that is a often confusing to new OpenEmbedded users is how to capture changes to the source code for a package/recipe. First, lets review the progression in tools use to capture source code changes. Figure 1: Progression of tools …
-
Embedded Linux versus Windows CE
Occasionally I am asked how Embedded Linux compares with Windows CE. I have spent the past 5 years doing mostly embedded Linux development, and the previous 5 years doing mostly WinCE development with a few exceptions, so my thoughts are n…
-
Dealing with large data structures efficiently in embedded systems
I’m currently dealing with a programming problem where I need access to several 64MB, file-backed data structures concurrently on an Embedded Linux system that only has 64MB of RAM. The data structures are fairly sparse (mostly zero data),…
-
MontaVista Linux 6 is based on OpenEmbedded Technologies
Very interesting news from MontaVista yesterday as they announced MontaVista Linux 6. It turns out they are using bitbake, which is the core of the OpenEmbedded build system. Along with the adoption of OpenEmbedded in many leading Embedde…
-
How to set up a NFS root filesystem for embedded Linux development
Although ssh and friends work really well for embedded systems, occasionally you want to set up a NFS root for development. One of the scenarios where nfsroot is useful is if you are making a lot of rootfs changes, and you don’t want to sp…
-
Compulab cm-x270 kernel updated to 2.6.29 in OE
The cm-x270 kernel support in OpenEmbedded has just been updated to version 2.6.29.
-
Wi2Wi W2CBW003 Wifi/Bluetooth module review
The Wi2Wi W2CBW003 is a highly integrated module that provides both Wifi and Bluetooth radios for embedded designs. This module is ideal for embedded designs, as it provides a lot of functionality in a small package and includes standard i…
-
Memory Performance on various Embedded Systems
Marcin just published an interesting article about memory performance on various embedded systems using the hdparm -T as a simple benchmarq. This test gives a pretty good indicator of memory performance in the system. From the hdparm man …
-
Who is using OpenEmbedded?
Having used OpenEmbedded for a number of Embedded Linux projects over the past 5 years, it is interesting watching new users come on board. The most recent announcement came from Koan that the KaeilOS distribution will be joining the OpenE…
-
Sprint 598U USB Broadband Modem in Embedded Systems
One thing that works really well in Linux is support for USB Broadband modems. While it usually takes a little fiddling with PPP scripts, it is generally not too difficult to get working. One of the reasons for this is most modems impleme…
-
Socketcan utils and test apps added to OpenEmbedded
The Socketcan test applications and utilities are now available in OpenEmbedded. The socketcan kernel modules already exist in OE. To build and deploy: get the latest version of OE metadata bitbake socketcan-utils-test scp /build/angstro…
-
Socketcan CAN-bus drivers added to OpenEmbedded
I just added a recipe to OpenEmbedded to build the Socketcan kernel modules from the socketcan SVN. So if you are using the latest OpenEmbedded metadata, you can: bitbake socketcan-modules scp /build/angstrom-2008.1/tmp/deploy/glibc/ipk//…
-
Intel Atom vs TI OMAP3
As we look at new projects, both the Intel Atom and the TI OMAP3 processors generate considerable interest. As we have already shown, the OMAP3 does offer a considerable performance improvement over earlier generations of ARM CPUs. The fo…
-
GTK performance on PXA270 vs. OMAP3
Several of my customers have built applications using the GTK+ tookit. While GTK+ works fairly well for what we have done, I have been wondering how the performance compares on the new Omap3 processors from TI. As we are evaluating the OMA…
-
Fix for PXA270 MMC/SD Controller Write Corruption
During system verification for a customer, we noticed occasional failures when writing to a SD card using the Marvell PXA270 MMC/SD controller. The failure is a 4KB block of data is shifted on byte, where the first byte is duplicated and t…
-
Mono 2.2 RC1 added to Openembedded
I recently addedMono 2.2 RC1 to OpenEmbedded. The last usable version of Mono in Openembedded was 1.2.6, so this is a big step up. Lots of interesting things have been happening since then (like Full Static Compilation) that continue to m…
-
Using the Vala Programming Language in Embedded Systems
Recently I’ve been following the Vala programming language and using it some in embedded systems. Vala is a new programming language that aims to bring modern programming features to GNOME developers without imposing additional runtime req…
-
How to implement an interrupt driven GPIO input in Linux
With Linux, some of the things that seem like they should be easy are not – at least at first glance. For example, how do you read an interrupt driven GPIO input in a Linux application? With simpler microcontroller systems, this is straig…
-
How to Implement a Web Application Framework in an Embedded Linux System
As devices are increasingly more networked, an embedded web server is becoming a standard way for users to interact with and configure an embedded device using a standard web browser. As an example, most pieces of networking equipment (suc…
-
Gumstix Overo Connector Spreadsheet
One of the first things I do when designing a system based on a processor module is create a spreadsheet listing all the connector I/O. This is the easiest way I’ve found to make sure nothing gets missed. My first pass at a I/O spreadshee…
-
How to disable SSH host key checking
This article presents a very nice overview of options to disable ssh host key checking. When working with embedded systems where you are constantly reloading the rootfs, it is really annoying to have to edit your ~/.ssh/known_hostsevery ti…
-
Printing from Embedded Systems
How does one implement support for printing in embedded systems? I recently had the opportunity to add printing support to an embedded Linux system. The device is an industrial touch screen powered by a Compulab cm-x270 module (PXA270 CPU)…
-
Benefits of OpenEmbedded switching to Git
Recently the OpenEmbedded project has switched to the Git version control system. This is good news for many reasons. The obvious reasons are Git is faster than Monotone, handles branching better, has lots of nice features, larger user ba…
-
Linux Input Testing and Debugging
The Linux input layer has made a lot of progress in recent years. When writing a new input driver (such as keyboard, trackball, etc), it is useful to be able to monitor input events using a test application. This article describes two way…
-
Using a Verizon USB720 modem in an Embedded Linux system
The Verizon USB720 Cellular modem is a quick and easy way to add wireless internet connectivity to your embedded system. Why might you want to add cellular connectivity to your embedded device? Remote access and diagnostics is a big reas…
-
Autotools quick reference
At some point, most Linux developers need to master Autotools. For most of us, this is a fairly painful process, but like any good tool, Autotools is extremely useful and well worth learning. For example, if your program is set up correct…
-
The Linux kernel container_of macro
The Linux kernel contains a very useful macro named “container_of” that is used extensively in back-casting a data structure to its containing data structure. This article includes a simple program that illustrates how this macro is used, …
-
Should you be using monotonic timers?
In a previous article, I covered some of the basics of Linux timers. Any time you are doing any type of fixed time delay in a program, you should really be using monotonic times, so the delay will not be affected by system time changes. I…
-
GESBC-9302E kernel update to 2.6.24, and reboot fix
I recently updated the GESBC-9302 machine support in OpenEmbedded to include the 2.6.24 released kernel. Also, Glomation has kindly provided me with a patch for the software reboot problem which I have integrated into the OpenEmbedded buil…
-
Marvell Embedded SDIO Wifi Success
As detailed in the article I wrote back in September of 2007 (/web/content/view/75/9/), getting embedded wifi modules functioning is not a simple task. However, due to recent advances in the Linux kernel, it looks like a viable solution f…
-
C# on embedded ARM Linux systems is now practical
Update: Michael Dominic K. has kindly provided feedback on this article and has some additional points about Mono and embedded systems. Mono has included support for ARM systems for some time, but with the release of Mono 1.2.6, and its inc…
-
Mono 1.2.6 added to OpenEmbedded
I recently updated the Mono recipes in OpenEmbedded to include the Mono 1.2.6 version. Several critical bugs that were present in 1.2.5 have been fixed, and its looking very good. More on this later …
-
Embedded Linux development on Windows???
From http://www.embedded.com/design/opensource/204300381 : Host platform Although everything I will describe can be also done on a Windows host, I recommend using Linux. It’s more convenient, and more tools and utilities are available. And…
-
Compulab EM-X270 Review
The EM-X270 is a full featured computer board from Compulab (http://www.compulab.co.il/x270em/html/x270-em-datasheet.htm) designed for handheld/mobile applications. The board includes options for about anything you might need in a portable…
-
Linux 2.6.23 for the Compulab cm-x270
Updated 2.6.23 kernel patches for the Compulab cm-x270 are now available in OpenEmbedded: http://www.openembedded.org/filebrowser/org.openembedded.dev/packages/linux/linux-2.6.23/cm-x270 The cm-x270 support in OpenEmbedded has undergone a l…
-
Compulab cm-x270 NAND flash eraseblock sizes
If you are having trouble mounting a JFFS2 file system on a Compulab cm-x270 module, you may have a device that has a NAND flash with 16KiB eraseblocks. All of the devices I have personally used to date have had 128KiB eraseblocks, but I j…
-
Howto load Openembedded on the Compulab cm-x270 computer module
There are quite a few people using (or would like to use) OpenEmbedded on the Compulab cm-x270. The cm-x270 is a high performance, low cost computer module that can be used with a custom baseboard in embedded systems (see /web/content/view…
-
How to implement realtime periodic tasks in Linux applications
(see also should you be using monotonic timers?) Have you ever wondered what is the best way to implement periodic tasks in Linux applications – something better than usleep()? This article covers a number of issues related to this subject…
-
The Embedded WiFi module Quest
original article written in Sept, 2007 How does one implement WiFi functionality in vertical, low volume portable products? This is a good question, and one I’ve been struggling with for the past 3 months. I have a customer who is designi…
-
The correct way to add packages to an OpenEmbedded Image
Update 2007-10-14: use IMAGE_INSTALL in image recipe Update 2007-10-22: a few corrections, added full path for include and comments Update 2010-06-07: use recipes instead of packages directory As more and more OpenMoko developers are coming…
-
Linux 2.6.22 for the Compulab cm-x270
I just completed porting the cm-x270 Linux kernel patches to the 2.6.22 kernel. Kernel build is available in OpenEmbedded. Patches are available in the OE tree: http://www.openembedded.org/filebrowser/org.openembedded.dev/packages/linux/c…
-
Design tips for your embedded Linux product
When designing a system that runs embedded Linux, there are number of things you can do to make your life a lot easier and provide for future expansion to cover cases you did not anticipate. Following these simple guidelines can drasticall…
-
Open JTAG debugging tool for the PXA270
Looking for a low cost, high functionality JTAG solution for the PXA270? As of several weeks ago, the openocd project now works with the Intel/Marvell PXA270 processor. There are a number of USB based JTAG debuggers available for under $1…
-
Atmel AT32AP7000 development board review
I recently purchased an Atmel NGW100 development board which includes an Atmel AT32AP7000 CPU. This CPU is based on the new Atmel AVR32 architecture, and is capable of running full Linux. This review covers the basics of this development …
-
The Embedded Industry Transformation
I just ran across an interesting article written by Doug Gaff titled “Is the embedded industry dead?”. The article points out the transformation that is happening in the “embedded” industry. For many systems, we are no longer constrained …
-
Can you afford not to use Linux in your product?
How much does hardware capable of running Linux cost? Recently, I priced components for a fairly minimal system. CPU: Atmel AT91SAM9260 (< $10) 32MBytes of SDRAM ($6) 256MBytes of NAND flash ($6) These are prices for relatively low vo…
-
Is Linux ready for real-time applications?
Have you ever wondered about the real-time response of Linux and how well it performs? I recently developed a system where I had the requirement to send a packet of data out a serial port every 30ms. This article describes how stock Linux…
-
NAND Flash is almost "free" and what it means for Embedded Systems
original article published in March, 2007 EETimes recently ran an article titled “Plummeting prices make NAND appear almost free” (http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=197002923). 1GBytes parts cost around $55 in …
-
Do you need "software update" functionality in your Embedded Linux system?
In this day and age, most embedded systems include a way for users to easily update software once the device has been deployed. This article discusses the requirements for a field update mechanism along with pointers for how to implement. …
-
Building a tiny "safe" boot image using OpenEmbedded
We are currently working a project that contains cm-x270 module (/web/content/view/62/9/ ) which contains 4MB of NOR flash and 128MB of NAND flash. The Linux kernel and a small root file system (rootfs) will be stored in NOR flash, and the…
-
Compulab cm-x270 PXA270 module review
We are in the process of supporting a customer who is designing a product that uses the Compulab cm-x270 “Computer-on-module”. The cm-x270 is a small computer module 66x44x7mm that contains an Intel PXA270 ARM processor similar to those fo…
-
Introduction to OpenEmbedded part 1
This is the first in a multi-part series on the OpenEmbedded development environment. This and subsequent articles will provide an introduction to OpenEmbedded, why to use it, how it works, and will provide examples of how BEC has used OE…
-
Remote access for embedded systems behind a firewall
When deploying embedded systems, wouldn’t it be nice if you could easily set up remote access for troubleshooting and updates? With Embedded Linux systems, this is quite easy to do. This article will explore how to use SSH to set up remot…
-
How to build GNU/Linux for an embedded x86 computer
Recently, I had a customer who needed an embedded Linux distribution running on an Advantech PCM-9371 single board computer (SBC). The PCM-9371 contains a low voltage Celeron or Pentium III processor. This article describes why the Openem…
-
Adding software to a Moxa UC7408 using OpenEmbedded
One of the big advantages of using Linux in embedded systems is the thousands of applications and drivers available for it (/web/content/view/35/37/ ). One of the challenges of Embedded Linux is building these applications. Building appli…
-
Moxa UC7408 Review
I am currently evaluating a Moxa UC7408 for one of my customers. The UC7408 is a small fanless industrial computer that runs Linux or Windows CE. This article provides a basic overview of this unit and a review of some of the UC7408 featu…