Index of /arm-linux-mcu

      Name                    Last modified       Size  

[DIR] Parent Directory 22-Apr-2017 17:56 - [TXT] CHANGELOG.txt 22-Apr-2017 17:55 519k [TXT] README.txt 22-Apr-2017 17:55 22k [DIR] boot/ 09-Mar-2017 11:45 - [DIR] bootkernel/ 04-Apr-2017 11:26 - [DIR] examples/ 09-Mar-2017 11:45 - [DIR] extensions/ 07-Apr-2017 19:20 - [DIR] include/ 04-Apr-2017 11:26 - [DIR] libs/ 04-Apr-2017 11:26 - [DIR] scripts/ 01-Mar-2017 19:09 - [DIR] thinservers/ 22-Mar-2016 11:56 - [DIR] toolchain/ 09-Mar-2017 11:45 -

MuntsOS Embedded Linux Microcontroller Framework

This framework supports Linux on several single board computers. These single board computers can treated as components, as Linux microcontrollers, and integrated into other projects just like traditional single chip microcontrollers.

MuntsOS is a stripped down Linux distribution that includes a small compressed root file system within the kernel binary itself. At boot time the file system is unpacked into RAM and thereafter the system runs entirely in RAM. The kernel image file, including the compressed root file system, runs about 9 MB.

Prebuilt MuntsOS kernel images are available at http://repo.munts.com/muntsos/kernels.

Extensions

The MuntsOS root file system can be extended at boot time using any of three mechanisms. First, if /boot/tarballs exists, any gzip tarballs in it will be extracted on top of the root file system. Typically you would use this mechanism for customized /etc/passwd, .ssh/authorized_keys, and similiar files.

Second, the system startup script /etc/rc will install any Debian package files found in /boot/packages. Note that packages from the Debian project will probably not work with MuntsOS. Packages should be built specifically for MuntsOS. (The .deb package file format is simply convenient to use, as it is supported by BusyBox.) Some packages available here include a GPIO server and Python3 interpreter.

Thirdly, the system startup script /etc/rc can be configured via a kernel command line option to search for a directory called autoexec.d in various places, such as SD card, USB flash drive, USB CD-ROM or NFS mount. If autoexec.d is found, each executable program or script in it is executed. Programs, scripts and self-extracting shell archives placed in autoexec.d can reconfigure the system for special purposes and/or extend it by unpacking and installing programs and libraries to the root file system in RAM. The LED example extension available here demonstrates how to build a fairly elaborate shell archive that unpacks and installs application software.

The idea is to build a MuntsOS kernel image (which takes a long time) once and install it to the target platform. Then the specific application software can be built after the fact and installed as one or more extension scripts in /boot/autoexec.d, Debian package files in /boot/packages, and/or tarball files in /boot/tarballs.

Thin Servers

The Thin Server is a system design pattern that is little more than a network interface for a single I/O device. Ideally, a Thin Server will be built from a cheap and ubiquitous network microcomputer like the Raspberry Pi. The software must be easy to install from a user's PC or Mac without requiring any special programming tools. It must be able to run headless, administered via the network. It must be able to survive without orderly shutdowns, and must not write much to flash media. It must provide a network based API (Application Programming Interface) using HTTP as a lowest common denominator.

MuntsOS, with its operating system running entirely from RAM, serves well for the Thin Server, and the two concepts have evolved together over the past few years. The simplest way to use MuntsOS is to download one of the prebuilt .zip files from http://repo.munts.com/muntsos/thinservers and extract it to a freshly formatted FAT32 SD card. You can then modify autoexec.d/00-wlan-init on the SD card to customize it for your wireless network environment, if desired.

News

Boards

BeagleBone Black -- Fully Functional

The BeagleBone Black is a cost reduced version of the original BeagleBone Linux microcomputer. The BeagleBone Black originally sold for USD $45, which would have been an impressive feat, except that the Raspberry Pi had arrived on the market a few months earlier at USD $35. Although the BeagleBone Black was more capable than the first couple of Raspberry Pi generations, it has been overshadowed by the Raspberry Pi Model 2 and 3, which sport quad-core processors. The great strength of the BeagleBone Black and its kin compared the Raspberry Pi family is the sheer number of GPIO pins and peripheral ports available on its two 46-pin expansion headers. Even after eMMC, I2C, SPI, and UART pins have been allocated, there are 42 pin GPIO pins available.

All of the current members of the BeagleBone family have Texas Instruments AM3358 Sitara processors running at 1 GHz. Most have 512 MB of RAM and 4 GB eMMC flash on board. The AM3558 processor also has two PRU (Programmable Realtime Unit) I/O processors on board that are capable of very fast I/O operations.

Unlike the original BeagleBone and the BeagleBone Green (see below), the BeagleBone Black has an HDMI video output (though with a pesky micro HDMI connecteor). The HDMI interface consumes a large number of GPIO pins when it is enabled. This MuntsOS port does not enable the HDMI interface.

The default BeagleBone Black device tree enables the I2C bus controller /dev/i2c-2 on the expansion headers. MuntsOS includes device tree overlays (in /boot/overlays/) that also enable the serial ports /dev/ttyS1, /dev/ttyS2, /dev/ttyS4, and /dev/ttyS5, and the SPI devices /dev/spidev1.0 and /dev/spidev1.1 on the expansion headers.

BeagleBone Green -- Fully Functional

The BeagleBone Green is a cost reduced version of the Beagle Bone Black, from Chinese manufacturer Seeed Studio, that sells for USD $39 MSRP. Changes from the BeagleBone Black design are:

The BeagleBone Green is cost competitive with the Raspberry Pi 2 or 3, costing only a little more (USD $39 vs. USD $35) but including on board eMMC and a USB cable. It has only a single core processor, compared to the quad-core Raspberry Pi 2 or 3, but provides many more GPIO pins on its two 46-pin expansion headers. expansion headers. It also has separate dedicated host and slave USB ports as well as the two Grove sockets.

The default BeagleBone Green device tree enables the I2C bus controller /dev/i2c-2 on the expansion headers. MuntsOS includes device tree overlays (in /boot/overlays/) that also enable the serial ports /dev/ttyS1, /dev/ttyS2, /dev/ttyS4, and /dev/ttyS5, and the SPI devices /dev/spidev1.0 and /dev/spidev1.1 on the expansion headers.

The I2C bus controller /dev/i2c-2 is brought out to the left Grove connector J4 and the serial port /dev/ttyS2 is brought out to the right Grove connector J5

Raspberry Pi 1 -- Fully Functional

The Raspberry Pi is a low cost Linux microcontroller available from many sources for USD $20 to $35 (depending on the particular model). It has a 700 MHz BCM2835 ARMv6 CPU and comes with with either 256 MB or 512 MB of RAM. The various Raspberry Pi models have 10/100 Ethernet, 1 to 4 USB ports, HDMI, RCA composite video and a stereo headphone jack. They also have several miniature connectors for camera and LCD display modules as well as a single 2.54 mm pitch GPIO expansion connector, to which expansion boards like this can be attached.

This MuntsOS port has been tested on the Raspberry Pi 1 Models A, B, A+, and B+.

There are separate MuntsOS kernels for original and plus boards: Use RaspberryPi1 for the original Model A and B in USB master mode and RaspberryPi1Plus for the Model A+ and B+ in USB master mode.

There are also separate MuntsOS kernels for original and plus boards compiled with USB Gadget device support enabled. These kernels allow powering and communicating with a Raspberry Pi A or A+ solely through the USB port. Use RaspberryPi1Gadget for the original Model A in USB slave mode and RaspberryPi1PlusGadget for the Model A+ in USB slave mode.

The Raspberry Pi is not the first low cost Linux microcontroller to hit the market. It is neither the cheapest nor highest performance. But it has certainly redefined the very concept, capturing the imaginations of many (particularly young people) and shipping the most units (over twelve million!)

All Raspberry Pi 1 variants are now obsolete, but many millions of units are still in service, and MuntsOS will continue supporting them for the forseeable future.

Raspberry Pi 2 -- Fully Functional

The Rasbperry Pi 2 Model B is a greatly enhanced version of the Raspberry Pi, selling for about USD $35. It has a 900 MHz BCM2836 ARMv7 quad-core CPU and comes with 1 GB of RAM. It is mechanically compatible with the Raspberry Pi 1 Model B+, with 10/100 Ethernet, 4 USB ports, 3.5 mm A/V jack, and a 40-pin GPIO expansion header.

The Raspberry Pi 2 is now obsolete, but many millions of units are still in service, and MuntsOS will continue supporting them for the forseeable future.

Raspberry Pi 3 -- Fully Functional

The Rasbperry Pi 3 Model B is a greatly enhanced version of the Raspberry Pi, selling for about USD $35. It has a 1200 MHz BCM2837 ARMv8 quad-core CPU and comes with 1 GB of RAM. It is mechanically compatible with the Raspberry Pi 1 Model B+ and Raspberry Pi 2 Model B, with 10/100 Ethernet, 4 USB ports, 3.5 mm A/V jack, and a 40-pin GPIO expansion header. The Raspberry Pi 3 Model B includes on board Bluetooth and WiFi radios.

This MuntsOS port enables the WiFi radio, but disables the internal Bluetooth radio, in favor of the serial port on the expansion header. If the internal WiFi radio seems intermittent, check the power supply voltage. The Raspberry Pi 3 requires a heftier power supply than earlier models, and the internal WiFi radio seems to be sensitive to drooping supply voltage.

Although the BCM2837 has a 64-bit capable processor, this MuntsOS port, like Raspbian, runs in 32-bit mode and is built with the same cross toolchain as the Raspberry Pi 2. Extensions, packages, and cross-compilers (like GNAT Ada) built for the Raspberry Pi 2 work perfectly well on the Raspberry Pi 3.

Raspberry Pi Zero -- Fully Functional

The Raspberry Pi Zero is a smaller, cost reduced version of the Raspberry Pi 1 that sells for only USD $5. It uses the same BCM2835 CPU (though clocked at 1 GHz) as the Raspberry Pi1. It has 512 MB of RAM and fewer/smaller/cheaper connectors. It still has the same 40-pin expansion header as the A+/B+/2/3 models.

The Raspberry Pi Zero W[ireless] sells for USD $10 but includes on board Bluetooth and WiFi radios, using the same wireless chip set as the Raspberry Pi 3. As with the Raspberry Pi 3, this MuntSOS port enables the WiFi radio but disables the Bluetooth radio, in favor of the serial port on the expansion header.

A MuntsOS kernel for USB gadget mode is also available for the Raspberry Pi Zero, whose micro-USB OTG connector is easier to use than the standard USB connector of the Raspberry Pi Model A and A+. Use the micro-USB connector labeled "USB" to power and control the Raspberry Pi Zero from a host computer. The absolute minimum possible usable Raspberry Pi kit consists of a Raspberry Pi Zero, a micro-USB cable, and a micro-SD card with one of the MuntsOS Raspberry Pi Zero Gadget Thin Servers installed.

Toolchains

I have now come full circle on embedded Linux toolchains. I created this framework because of how long Buildroot takes to build everything, including the toolchain, from scratch. At the time free prebuilt ARM Linux toolchains were available from Code Sourcery, DENX, and later Linaro. Now, because of a number of factors (Code Sourcery Lite for ARM is no more, Linaro no longer provides toolchains for 32-bit hosts, the official Raspbain toolchain for 64-bit doesn't seem to run on Debian Wheezy, etc.) I am again forced to build toolchains from source.

Fortunately, the Linaro project provides the ABE script for building their toolchain. Patching a single file in the ABE distributuion, gcc.conf, allows retargeting the toolchain to a different processor, such as the ARMv6 Raspberry Pi. I now build a custom Linaro toolchain for each target board. Formerly I built some libraries (zlib, etc.) on demand, as well. Now the libraries are built ahead of time and installed under libc/usr/local/ in the prebuilt toolchain directory tree. The prebuilt toolchains and libraries are now distributed in separate packages, available at http://repo.munts.com/debian.

Git Repository

The source code is available at: http://git.munts.com

Use the following command to clone it:

git clone http://git.munts.com/arm-linux-mcu.git

File Repository

Prebuilt binaries for MuntsOS are available at: http://repo.munts.com/muntsos

Copyright:

Original works herein are copyrighted as follows:


Copyright (C)2013-2017, Philip Munts, President, Munts AM Corp.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

Redistributed works herein are copyrighted and/or licensed by their respective authors.


Questions or comments to Philip Munts phil@munts.net

I am available for custom system development (hardware and software) of products based on ARM Linux microcontrollers or other processors.