Hardkernel Odroid-C2

The Odroid-C2 low-cost development platform, see the specifications on the hardkernel website.

The Odroid-C2 has multiple components. The development board itself contains a system-on-chip (SOC), the Amlogic S905, 2GiB RAM, and other devices including ethernet, SD card reader, eMMC module socket, infrared (IR) sensor, USB ports and LEDs.

The SOC itself, the Amlogic S905, contains an quad-core ARMv8, Cortex-A53 CPU and other devices including timers, watchdog timers, GPU, DMA controllers etc.

Finally, the CPU, a Corex-A53, has four cores, caches, and other architectural features including the coprocessor and arm generic timers.


The boot process

The ODroid is configured to boot from the boot image you upload using 9242 odroid upload-boot <boot-file> . If there appears to be an issue with your odroid booting, you can reset the U-Boot configuration with 9242 odroid reconfigure.

Setting up your host

The CSE lab machines already have the required software installed. See milestone 0 for details.

Getting access to a dedicated ODroid-C2

The first time you run the 9242 odroid command or the odroid script from your repository you will be asked to log in with your zID and zPass. You will then be allocated an odroid.

How to use - what is really happening

A brief description of the development cycle can be found in Milestone 0. A lot is happening under the covers to allow you to easily develop an operating system:

The odroid script in your git repostory is similar to the one that is run by 9242 odroid on CSE machines.

It may be out of date. The latest version can be downloaded from GitLab.

The websocat program must be installed in order to use the tty and serial commands. This can be downloaded from the vi/websocat GitHub project.

  1. Plug in the Odroid-C2 and power it on.

    On CSE machines this generates a hotplug event on the host's USB bus and results in the creation of the tty device. A cse script runs at this time and customises the tftpd and nfs server to your login sessions user name.

  2. In a terminal on a CSE machine, launch 9242 odroid tty.

    This will connect to your assigned ODroidC2's UART output. This is wher the kernel will log errors and anything sent to seL4_DebugPutChar.

  3. In another terminal on a CSE machine, launch 9242 odroid serial.

    Not magical, nothing will happen though until you send something with libserial.

  4. Make your changes, (hint: learn cscope).
  5. Build and run using ninja && ../reset.sh from your build directory.

    A lot is happening here under the covers, ninja will first build your OS, generating a binary boot image. Once the build is complete, the script uploads the images/sos-image-arm-odroidc2 file as the boot file for your ODroidC2. It then uploads a copy of all of the apps to the NFS directory. Then, a reset signal is sent over serial, which causes the kernel to reboot the device. When the device reboots, tftp will fetch the newly built image over tftp and execute the image.