No categories assigned

Operating System installation

Revision as of 18:06, 11 June 2020 by B.Naegele (talk | contribs) (compiling the kernel)

> Main Page > Piano Expander based on Pianotec and Odroid-N2


Installation of the base-system

Enable Auto-Login

Enabling the On-Screen-Keyboard

  • In applications, where you don't want to use an external keyboard you have the possibility to use an "On-Screen-Keyboard" which could be controlled via the Touch-Screen.

Switch-On the On-Screen-Keyboard on Ubuntu-Mate

  • On Ubuntu-Mate the On-Screen-Keyboard is already installed. You can find it in the ‘Universal Access’ menu. In this menu you find the application "Onboard" -> a click on this menu-point activates the On-Screen-Keyboard.

Adding support for ARM 32-bit code execution

odroid64:$ sudo dpkg --add-architecture armhf

odroid64:$ sudo apt-get update

apt install libc6:armhf

apt install libx11-6:armhf

apt install libfreetype6:armhf

apt install libxext6:armhf

apt install libasound2:armhf

Changing FDT (Flattened Device Tree) to support second UART-Interface for MIDI

Enabling 31250 UART-Baud-Rate for Midi-Usage

  • The baud-rate 31250 which is used for MIDI-trafic is normally NOT supported on standard UART drivers.
  • We have to tweek the UART-Kernel-driver for supporting this baud rate. This sounds like a complicated action, but it isn't really complicated - take a look on this article in the Odroid-Magazine -> ODROID-N2 UART Custom Baud Rate for MIDI

Cross-Compiling or compiling the Kernel natively (on the Odroid-N2 itself)

  • You have the possibility to compile the Kernel external (e.g. on your Desktop-PC/Laptop) where you have to install the Cross-Compiler-Toolchain and the other build utilities) or directly on the Odroid itself.
  • I am a fan of doing it directly on the Odroid-N2 itself. Therefore I describe this procedure first.

compiling the Kernel natively on the Odroid-N2

getting the Kernel-Sources

  • changing the user to be "root"
$ sudo su
--> enter your root password

Attention: Be careful - the root-user can do really everything on the system - also damaging the running OS

  • going to the directory where you want to build the kernel
$ cd /usr/src/
  • install the source code version control system software "git":
$ apt install git
  • going into the kernel-root-path
$ cd /usr/src/linux/
  • getting the kernel-sources (cloning) from github:
$ git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidg12-4.9.y

configuring the kernel

  • configuring the base configuration of the kernel
$ make odroidg12_defconfig
  • edit the uart-driver with an editor of your choice - for me it's the editor "vi" -> $ vi /usr/src/linux/drivers/amlogic/uart/meson_uart.c
  • alter there the function meson_uart_change_speed to the following:
static void meson_uart_change_speed(struct uart_port *port, unsigned long baud)
{
        u32 val;
        struct meson_uart_port *mup = to_meson_port(port);
        struct platform_device *pdev = to_platform_device(port->dev);

        while (!(readl(port->membase + AML_UART_STATUS) & AML_UART_TX_EMPTY))
                cpu_relax();

#ifdef UART_TEST_DEBUG
        if (port->line != 0)
                baud = 115200;
#endif

// this part is added.
// trace_printk() is not neccesarry, it is just for debugging.
        trace_printk("Your baudrate: %ld\n", baud);
        if(baud == 38400)
        {
                baud = 31250;
                trace_printk("Change to %ld\n", baud);
        }
  • save your file!

configuring the kernel

  • configuring the base configuration of the kernel
$ make odroidg12_defconfig
  • edit the uart-driver with an editor of your choice - for me it's the editor "vi" -> $ vi /usr/src/linux/drivers/amlogic/uart/meson_uart.c
  • alter there the function meson_uart_change_speed to the following:
static void meson_uart_change_speed(struct uart_port *port, unsigned long baud)
{
        u32 val;
        struct meson_uart_port *mup = to_meson_port(port);
        struct platform_device *pdev = to_platform_device(port->dev);

        while (!(readl(port->membase + AML_UART_STATUS) & AML_UART_TX_EMPTY))
                cpu_relax();

#ifdef UART_TEST_DEBUG
        if (port->line != 0)
                baud = 115200;
#endif

// this part is added.
// trace_printk() is not neccesarry, it is just for debugging.
        trace_printk("Your baudrate: %ld\n", baud);
        if(baud == 38400)
        {
                baud = 31250;
                trace_printk("Change to %ld\n", baud);
        }
  • save your file!

additional kernel-config

  • if you want to add other stuff to the kernel config you can do this by using the command "make menuconfig"
  • if "make menuconfig" could not be startet because auf missing curses-support you have to install the libncurses-dev package
$ apt install libncurses-dev

$ make menuconfig

compiling the kernel

$ make -j7

> Main Page > Piano Expander based on Pianotec and Odroid-N2