How to Build & Run Linux on Kendryte K210 RISC-V NOMMU Processor

RISCV64 NOMMU Menuconfig

A few months ago, we wrote that Western Digital was working on Linux & BusyBox RISC-V NOMMU, and managed to boot a minimal Linux OS on Kendryte K210 powered Sipeed Maix Go board. RISC-V NOMMU support was scheduled for Linux 5.5, and now that the new kernel has been released, Damien Le Moal has pushed the code allowing to build Linux and a busybox based roofs for RISC-V 64-bit NOMMU platforms using buildroot. I could start the build following the instructions on Github, but it failed as a Linux 5.6 RC1 tarball was missing. But I noticed “Vowstart” picked up on Damien’s work, and wrote detailed instructions. So let’s try the build out using a machine running Ubuntu 18.04. We’ll have to make sure dependencies are installed first:

Then we can retrieve the source code and do some preparations (e.g. extract Linux 5.6 RC1 tarball):

The next step is to build the toolchain. It will take a long […]

Western Digital Made RISC-V Linux & BusyBox Boot on Sipeed Maix Go Board

The other day we wrote about Getting Started with Embedded Linux on RISC-V in QEMU emulator and noted that Linux capable RISC-V hardware is currently fairly expensive. We also mentioned there was work on porting uCLinux to Kendryte K210 RISC-V processor on boards such as Sipeed Maix board. The processor only comes with 8MB RAM, and does not feature an MMU (Memory Management Unit) so what you’d be able to do on the board would be limited, and for instance, a desktop environment is clearly impossible on the platform. NOMMU support also requires some extra work, and in Linux 5.4 we saw only of the changes was “SiFive PLIC IRQ chip modifications, in preparation for M-mode Linux”. The slide above is extracted from the “RISC-V NOMMU and M-Mode Linux” presentation by Damien Le Moal, Western Digital at the Linux Plumbers Conference 2019 last September. It explains M-mode support is better suited for NOMMU mode since more direct access to the […]

Getting Started with Embedded Linux on RISC-V in QEMU

RISC-V Linux QEMU Buildroot

RISC-V is getting more and more popular, but if you want to run Linux on actual hardware it’s currently fairly expensive since you either need to rely on HiFive Unleashed SBC ($999), or expensive FPGAs. Another solution is running Linux RISC-V via QEMU emulator,  and I showed how to do this using BBL (Berkeley Boot Loader),  Linux 4.14, and busybear rootfs. If you check the comments section of that earlier post you could also try out Fedora RISC-V images in QEMU. Bootlin has now published a presentation showing how to run embedded Linux on RISC-V in QEMU with many of the same components as in the previous instructions, but with a more up-to-date Linux kernel (5.4), and using Buildroot to build everything from scratch including the toolchain, BBL, the Linux kernel, and a Busybox based root file system. They explain each step in detail in the 45-page presentation to allow you to customize your final firmware to your requirements for […]

Forlinx OK1052-C Board Features NXP i.MX RT1052 Crossover Processor


NXP i.MX RT series crossover processors were first announced last year as processors providing the same real-time capability as found in microcontrollers while providing performance similar to entry-level application processors thanks to an Arm Cortex-M7 core clocked at up to 600 MHz. i.MX RT series also lower BoM thanks to integrated PMIC and up to 512KB SRAM/TCM. Later on uCLinux for NXP i.MX RT1050 evaluation board was released, and a few months ago, we covered the upcoming VisionSOM-RT industrial system-on-module powered by the crossover processor.  That means we did not have production-ready commercial solutions so far, but this has changed recently, with for example Forlinx Embedded OK1052-C board. The solution is comprised of a baseboard and a system-on-module with the following specifications: FET1052-C SoM SoC –  NXP i.MX RT1052 single core Arm Cortex-M7 crossover processor @ up to 528 MHz with 512KB SRAM/TCM System Memory – 16MB or 32MB SDRAM Storage – 4MB to 16MB QSPI Nor Flash Board to […]

Emcraft Releases Linux BSP for NXP i.MX RT1050 Cortex M7 Evaluation Board

NXP iMX RT series is a family of ARM Cortex M7 processors clocked at 600 MHz, making the solution a “crossover embedded processor” bridging the gap between real-time capabilities of micro-controllers and the performance of application processors. This week, NXP provided some benchmark numbers for i.MX RT1050 processor, which delivers a CoreMark score of 3020, DMIPS of 1284, and 20ns interrupt latency at 600 MHz, which means it could be a good candidate for embedded Linux, and Emcraft Systems has just released a uCLinux BSP for the NXP i.MX RT1050 EVK board. The BSP features U-Boot v2017.09-rc1, Linux Kernel 4.5 with relevant device drivers such as key I/O interfaces, Wi-Fi, SD card, LCD, etc…, and GNU development tools such as a GCC 4.7 toolchain, GDB, and so on. The company has made a demo with a GUI application designed with Crank Software’s Storyboard Suite, and running in Linux on the NXP i.MX RT1050 evaluation kit The binary files for the […]

Emcraft Systems STM32F7 ARM Cortex M7 SoM and Development Kit Run uClinux

STMicro announced their STM32F7 MCU family the same as ARM announced their latest ARM Cortex M7 core for high-end micro-controllers last September. Emcraft Systems have now launched a STM32F7 system-on-module with 32MB SDRAM and 16MB NOR flash, and ported uClinux to the platform. The company has also launched a STM32F7 starter kit for evaluation and development. Both target industrial automation, system and power management, wireless networking / sensors and other embedded applications. STM32F7-SOM-1A Module STM32F7 system-on-module specifications: MCU – STMicro STM32F746 Cortex M7 MCU up to 200 MHz with 320KB RAM, 1MB flash in TFBGA-216 package System Memory – 32MB SDRAM Storage – 16MB NOR flash Connectivity – 802.3 Ethernet PHY SoM connectors – 2x 80-pin (0.4mm pitch) Debugging – ARM SWJ-DP combined JTAG and serial wire debug port Misc – Watchdog, RTC, USB and other I/Os via SoM connectors Power – 3.3V DC; Low-power mode with short startup times; Deep-sleep power mode with ultra- low power consumption profiles; Dimensions […]

Amptek iCon is an ARM Cortex M3 Board for IoT Running uCLinux (Crowdfunding)

Up until now, the only company I ever heard running Linux on ARM Cortex M3/M4 was EmCraft Systems with their system-on-modules and development kits based on Freescale Kinetis, STMicro STM32 and Actel Smartfusion micro-controllers. But there’s now another option thanks to Ampek Technologies, a Canadian based company funded in 2002, and their iCon (Internet Connectivity) board featuring NXP LPC1788 Cortex M3 connected to 64MB RAM which is plenty enough to run uCLinux. The board can be used for applications such as industrial control systems, wireless sensors, or smart home appliances. The iCon board specifications are as follows: MCU – NXP LPC1788 ARM Cortex-M3 MCU @ 120MHz with 512 KB flash memory, and 96 KB SRAM System Memory – 64MB SDRAM (external chip) Storage – 32MB flash for firmware Connectivity – 802.11 b/g/n, Bluetooth 4.0. Ethernet is supported via an add-on module USB – USB 2.0 host port, mini-USB debug port Other ports and headers: CAN port (+5V ground connector) RS-485 […]

Low Power Mode (Suspend to RAM) in uCLinux for Freescale Kinetis K70 MCU

All ARM based micro-controllers and processors implement multiple power mode in order to save optimize power usage depending on the tasks. However, I’ve been told by some hobbyists/developers/makers that low power modes are not always implemented in Linux, especially for low cost systems either because of hardware limitations or the software is not implemented. EmCraft Systems has just released their latest embedded (uC-) Linux distributions for the MCU boards, and one of the features now available is “suspend to RAM” for their K70 SoM development kit, based on Freescale Kinetis K70 Cortex M4 MCU, which consume just around 600 to 700 uA @ 3.3V (2 to 2.3 mW) in this low power mode. They have connected a multimeter to measure the current drawn at different power modes. If you want to know all the details, you should probably read the company’s article on “Linux Low-Power Mode on Kinetis“, but I’ll summarize the key points in this posts. They checked the […]