MAIX (Canaan Kendryte k210) Embedded Linux - Rootfs with BusyBox

Enabling the MMC drivers in linux The first thing to do is to enable to MMC drivers in linux. To do this simply and fast we will just use another default config. Where in the previous chapter we used nommu_k210_defconfig we will now use nommu_k210_sdcard_defconfig. Besides that we will also tell linux to generate an specific target for use to use as dtb. Where we used k210_generic.dtb we will now use sipeed_maix_bit....

February 1, 2022 · 2 min · Renzo Gort

MAIX (Canaan Kendryte k210) Embedded Linux - Linux

Obtaining the linux source To start we first need the source files of linux so we can compile it. We will also use the --depth=1 option because we simple don’t need the massive history of linux on our disk. git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git --depth=1 cd linux Configuring linux First of we need the correct defconfig. To get the defconfig you need to run the make help command with the architecture of which you need the defconfig....

February 1, 2022 · 3 min · Renzo Gort

MAIX (Canaan Kendryte k210) Embedded Linux - U-Boot

Obtaining the u-boot source To start we first need the source files of u-boot so we can compile the bootloader. git clone https://source.denx.de/u-boot/u-boot.git cd u-boot Configuring the bootloader To find the correct default config look in the /configs directory. For us the defconfig sipeed_maix_bitm_defconfig is important. If you found the best default config you can apply the config with the following command: CROSS_COMPILE=riscv64-linux- make sipeed_maix_bitm_defconfig To edit the config use:...

February 1, 2022 · 1 min · Renzo Gort

MAIX (Canaan Kendryte k210) Embedded Linux - Introduction

This is my process of getting linux to work on the MAIX bit. The MAIX bit consits of an k210 SoC with 2 RISC-V 64 bit harts. The SoC has an total of 8MB RAM. The start is to do this without buildroot. Maybe later I will integrate all of this in an buildroot environment. Toolchain The toolchain is important in all steps. Because the target architecture is different than the architecture on the system that we compile the code on we need an cross-compiler....

February 1, 2022 · 1 min · Renzo Gort

MAIX M1 Handheld Console - Software: Screen

The screen is controlled by the ILI9341 controller. The goal is to have a framebuffer in memory which is pushed to the screen at a desent fps. The 8-bit interface is being used. This means we can write 1 pixel per message. The most code of the configuration and startup is based of the Adafruit TFTLCD-library. There are a few parts to realize the desired goal: Screen initialization Creating a framebuffer in the main loop for easy testing Make a routine for the second core to put a framebuffer to the screen....

September 27, 2021 · 3 min · Renzo Gort

MAIX M1 Handheld Console - Introduction

This is a process of building a handheld console. For this console I am going to be using a RISC-V microcontroller from Canaan, the Kendryte K210. This is a dual core 64-bit RISC-V microcontroller with floating point unit and 8 MB of RAM. I am not using the chip directly instead I will be using the Sipeed M1w stamp. For now I will not be using WiFi so it doesn’t matter if a M1 or M1w is used....

September 20, 2021 · 1 min · Renzo Gort