Getting Started with (Apache) NuttX RTOS - Part 1
NuttX RTOS is used in many products from companies like Sony, Xiaomi, Samsung, Google/Fitbit, WildernessLabs and many other companis. So, probably you are already using NuttX even without knowing it, like the you was using Linux on your TV, WiFi router more than 10 years ago and didn't know too! Today you will have the chance to discover a little bit of this fantastic Linux-like RTOS! Are you ready? So, let's get started!
Libgpiod - Toggling GPIOs The Right Way In Embedded Linux
OverviewWe all know that GPIO is one of the core elements of any embedded system. We use GPIOs to control LEDs and use them to monitor switches and button presses. In modern embedded systems, GPIOs can also be used as pins for other peripheral busses, such as SPI and I2C. Similar to the previous article on interacting with peripherals on an SPI bus in userspace via SPIdev (https://www.embeddedrelated.com/showarticle/1485.php), we can also control GPIOs from userspace on an embedded...
Peripheral Interaction Without a Linux Device Driver Using Spidev
OverviewWhen integrating a new peripheral onto an embedded Linux platform, we might think we always need to implement a kernel module to serve as a device driver. However, as we all know, absolutes such as “always” and “never” are rarely true. The same is true in this case. Implementing a device driver in kernel space on an embedded Linux platform should only be undertaken if the performance requirements of the final application demand it. In most instances, a userspace...
Getting Started With Embedded Linux - From Nothing To A Login Prompt
One of the famous observations that have been made related to embedded systems is referred to as “Moore’s Law”, which states that the number of transistors in integrated circuits doubles every year. This observation has held mostly true for the past several decades, so powerful CPUs are no longer simply relegated to servers, desktops, and laptops. Instead, we see powerful CPUs with increased capabilities being introduced into embedded systems on devices that live at “the edge”....
Dumb Embedded System Mistakes: Running The Wrong Code
ContentsAbsolute Beginner's Guide To Getting Started With Raspberry Pi
Contents:- Introduction
- Simplifications
- Decisions
- The Raspberry Pi
- Parts: What You Need
- Suppliers: Where To Order
- Shopping Lists: What To Order
Examining The Stack For Fun And Profit
Well, maybe not so much for profit, but certainly for fun. This is a wandering journey of exploration and discovery, learning a variety of interesting and useful things.
One of the concerns with an embedded system is how much memory it needs, known as the memory footprint. This consists of the persistent storage needed for the program (i.e. the flash memory or filesystem space that stores the executable image), and the volatile storage needed to hold the data while executing over long...
Linux Kernel Development - Part 1: Hello Kernel!
Our very first program in every language or framework usually is the notorious "Hello World" program. For this Linux Kernel Modules Development introduction we will follow the same concept, but instead of the usual "Hello World" we will make a "Hello Kernel!" and you will understand the reason in a few moments. Note that in this article I will not focus on a deep explanation about this topic for the moment, since this is only the introduction.
But before we dive into code we need to have the...
Off the shelf availability of Custom IoT Gateway
Any IoT implementation requires a gateway. Since most industrial gateways comes at a price above average, choosing a right gateway for your new IoT requirement could be a daunting task. With the advancement in IIoT, several segments of industry use cases are popping up and each with their unique requirements. For example, condition monitoring of a thermal power plant, predictive maintenance of factory heavy machinery and asset tracking of containers in a shipping yard etc. Every such...
How to Give Persistent Names To USB-Serial Devices on Ubuntu 14.04
If you have a bunch of USB-serial devices connected to your dock station and you needed to bind your USB-serial devices under static names so that all the USB-serial devices don't get to be assigned to random names by "udev" manager when you re-plug your laptop to the dock station, follow the instructions below. I will share the udev rules I created as a reference and give the step by step instructions to achieve persistent naming. All the steps worked on my Ubuntu 14.04...
Absolute Beginner's Guide To Getting Started With Raspberry Pi
Contents:- Introduction
- Simplifications
- Decisions
- The Raspberry Pi
- Parts: What You Need
- Suppliers: Where To Order
- Shopping Lists: What To Order
Libgpiod - Toggling GPIOs The Right Way In Embedded Linux
OverviewWe all know that GPIO is one of the core elements of any embedded system. We use GPIOs to control LEDs and use them to monitor switches and button presses. In modern embedded systems, GPIOs can also be used as pins for other peripheral busses, such as SPI and I2C. Similar to the previous article on interacting with peripherals on an SPI bus in userspace via SPIdev (https://www.embeddedrelated.com/showarticle/1485.php), we can also control GPIOs from userspace on an embedded...
Getting Started with (Apache) NuttX RTOS - Part 1
NuttX RTOS is used in many products from companies like Sony, Xiaomi, Samsung, Google/Fitbit, WildernessLabs and many other companis. So, probably you are already using NuttX even without knowing it, like the you was using Linux on your TV, WiFi router more than 10 years ago and didn't know too! Today you will have the chance to discover a little bit of this fantastic Linux-like RTOS! Are you ready? So, let's get started!
Linux Kernel Development - Part 1: Hello Kernel!
Our very first program in every language or framework usually is the notorious "Hello World" program. For this Linux Kernel Modules Development introduction we will follow the same concept, but instead of the usual "Hello World" we will make a "Hello Kernel!" and you will understand the reason in a few moments. Note that in this article I will not focus on a deep explanation about this topic for the moment, since this is only the introduction.
But before we dive into code we need to have the...
Using the C language to program the am335x PRU
IntroductionSome weeks ago, I published an article on how we used the PRU to implement a power supply control loop having hard realtime constraints:
//www.embeddedrelated.com/showarticle/586.php
Writing this kind of logic in assembly language is not easy. First the assembly language itself may be difficult to learn depending on your background. Then, fixed and floating point arithmetics require lot of code. While macros help to handle the complexity, they still are error prone as you...
An overview of Linux Boot Process for Embedded Systems
This Text provides an insight in to the Embedded Linux Boot Process. Reader should have a basic Knowledge of Boot Process in general and should be familiar with Embedded Linux Boot Process.
.................PART-A................(1) Software components Involved in Embedded Linux Boot Process (a) Bootloader (b) kernel Image (c) root file system - either an initrd image or a NFS location(2) Steps during Booting process of a conventional...Using the Beaglebone PRU to achieve realtime at low cost
IntroductionI work as an engineer in a synchrotron facility. A few weeks ago, I helped the people in charge of the power supply developments to integrate a realtime control algorithm on a prototype platform: a BeagleBone Black (BBB) running Linux. I had already worked with this board in the past, and I found it very interesting given its excellent resources versus price ratio (around 40 euros). This time, I was impressed by its realtime capabilities. I thought it would be a good idea to...
How to Give Persistent Names To USB-Serial Devices on Ubuntu 14.04
If you have a bunch of USB-serial devices connected to your dock station and you needed to bind your USB-serial devices under static names so that all the USB-serial devices don't get to be assigned to random names by "udev" manager when you re-plug your laptop to the dock station, follow the instructions below. I will share the udev rules I created as a reference and give the step by step instructions to achieve persistent naming. All the steps worked on my Ubuntu 14.04...
Peripheral Interaction Without a Linux Device Driver Using Spidev
OverviewWhen integrating a new peripheral onto an embedded Linux platform, we might think we always need to implement a kernel module to serve as a device driver. However, as we all know, absolutes such as “always” and “never” are rarely true. The same is true in this case. Implementing a device driver in kernel space on an embedded Linux platform should only be undertaken if the performance requirements of the final application demand it. In most instances, a userspace...
Examining The Stack For Fun And Profit
Well, maybe not so much for profit, but certainly for fun. This is a wandering journey of exploration and discovery, learning a variety of interesting and useful things.
One of the concerns with an embedded system is how much memory it needs, known as the memory footprint. This consists of the persistent storage needed for the program (i.e. the flash memory or filesystem space that stores the executable image), and the volatile storage needed to hold the data while executing over long...
Using the Beaglebone PRU to achieve realtime at low cost
IntroductionI work as an engineer in a synchrotron facility. A few weeks ago, I helped the people in charge of the power supply developments to integrate a realtime control algorithm on a prototype platform: a BeagleBone Black (BBB) running Linux. I had already worked with this board in the past, and I found it very interesting given its excellent resources versus price ratio (around 40 euros). This time, I was impressed by its realtime capabilities. I thought it would be a good idea to...
Using the C language to program the am335x PRU
IntroductionSome weeks ago, I published an article on how we used the PRU to implement a power supply control loop having hard realtime constraints:
//www.embeddedrelated.com/showarticle/586.php
Writing this kind of logic in assembly language is not easy. First the assembly language itself may be difficult to learn depending on your background. Then, fixed and floating point arithmetics require lot of code. While macros help to handle the complexity, they still are error prone as you...
An overview of Linux Boot Process for Embedded Systems
This Text provides an insight in to the Embedded Linux Boot Process. Reader should have a basic Knowledge of Boot Process in general and should be familiar with Embedded Linux Boot Process.
.................PART-A................(1) Software components Involved in Embedded Linux Boot Process (a) Bootloader (b) kernel Image (c) root file system - either an initrd image or a NFS location(2) Steps during Booting process of a conventional...Absolute Beginner's Guide To Getting Started With Raspberry Pi
Contents:- Introduction
- Simplifications
- Decisions
- The Raspberry Pi
- Parts: What You Need
- Suppliers: Where To Order
- Shopping Lists: What To Order
Interfacing LINUX with microcontrollers
IntroductionI am increasingly asked to work on small spare time projects where a user needs to control some device over the INTERNET. Recently, a friend needed to control heater relays and measure the temperature of its geographically distant secondary house. Another case relates to the control of a pan tilt home monitoring camera. A last one is the control of an old XY plotter DACs.
In both applications, the user wants to access the system over a web browser using HTTP. From the user...
How to Give Persistent Names To USB-Serial Devices on Ubuntu 14.04
If you have a bunch of USB-serial devices connected to your dock station and you needed to bind your USB-serial devices under static names so that all the USB-serial devices don't get to be assigned to random names by "udev" manager when you re-plug your laptop to the dock station, follow the instructions below. I will share the udev rules I created as a reference and give the step by step instructions to achieve persistent naming. All the steps worked on my Ubuntu 14.04...
Linux Kernel Development - Part 1: Hello Kernel!
Our very first program in every language or framework usually is the notorious "Hello World" program. For this Linux Kernel Modules Development introduction we will follow the same concept, but instead of the usual "Hello World" we will make a "Hello Kernel!" and you will understand the reason in a few moments. Note that in this article I will not focus on a deep explanation about this topic for the moment, since this is only the introduction.
But before we dive into code we need to have the...
How to install Ubuntu 12.04 Precise, Xubuntu-desktop and Open JDK-7 on Beagleboard Rev. C2
My aim was to install Ubuntu 12.04, Xubuntu-desktop graphical user interface and Java virtual machine (Open JDK-7) on my beagleboard so that I could run my java application on the monitor connected to the BB. I encountered several problems and solved them one by one. Following is how I've done it..
I had all the accesorries for the beagleboard (usb hub, dvi-to-hdmi cable, usb-ethernet converter, usb keyboard, usb mouse and a hdmi enabled monitor).
My host PC also has a Ubuntu 12.04...
Examining The Stack For Fun And Profit
Well, maybe not so much for profit, but certainly for fun. This is a wandering journey of exploration and discovery, learning a variety of interesting and useful things.
One of the concerns with an embedded system is how much memory it needs, known as the memory footprint. This consists of the persistent storage needed for the program (i.e. the flash memory or filesystem space that stores the executable image), and the volatile storage needed to hold the data while executing over long...