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.
Manuals
- Architecture: ARMv8 Architecture Reference Manual
- CPU: Cortex A53 Technical Reference Manual
- SOC: Amlogic s905 Datasheet
- Development board: Odroid-C2 Schematic
The boot process
The Odroid is configured to boot from the boot image you upload using 9242 odroid upload-boot <boot-file>. Running ../reset.sh inside your build directory handles this for you.
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 serial and netcon commands. This can be downloaded from the vi/websocat GitHub project.
-
In a terminal on a CSE machine, launch 9242 odroid serial.
This will connect to your assigned ODroidC2's UART output. This is where the kernel will log errors and anything sent to
seL4_DebugPutChar
. -
In another terminal on a CSE machine, launch 9242 odroid netcon.
Not magical, nothing will happen though until you send something with libnetworkconsole.
- Make your changes.
-
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.