A timing app designed to run on my Odroid-GO
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Macoy Madson de1bf7d26b Fixed sleep mode issues 12 months ago
Dependencies Used Austin Morlan's code to get a good base 12 months ago
app Fixed sleep mode issues 12 months ago
.clang-format Added timer, sleep mode, and input functions 12 months ago
.gitignore Used Austin Morlan's code to get a good base 12 months ago
.gitmodules Used Austin Morlan's code to get a good base 12 months ago
COPYING Add copying and changed readme 12 months ago
LICENSE Initial commit 12 months ago
ReadMe.org Added battery percentage and low battery indicate 12 months ago



A timing app designed to run on my Odroid-GO.

Setting up ESP-IDF

See docs.

# Dependencies
sudo apt-get install git wget libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin make

# Submodules
cd Dependencies/esp-idf/
git submodule update --init

Next, build the toolchain:

cd Dependencies/esp-idf/

Possibly necessary step

I'm not sure this is necessary. The readme recommends doing it.

Comment out line 981 of esp-idf/components/driver/sdspi_host.c to enable the shared SPI bus:

// Initialize SPI bus
esp_err_t ret = spi_bus_initialize((spi_host_device_t)slot, &buscfg,
if (ret != ESP_OK) {
    ESP_LOGD(TAG, "spi_bus_initialize failed with rc=0x%x", ret);
    //return ret;

Building compiler from source

The following is to set up the toolchain by building as much of it from source as the docs have specified. While I could download a binary, I like the idea of compiling from source in case their website goes down. I'm doing this on Ubuntu 18.04.

TODO: This doesn't work yet.

# Crosstool - this builds GCC for ESP32. This will take a while (27 minutes in my case)
cd ../crosstool-NG/
git submodule update --init
./bootstrap && ./configure --enable-local && make
./ct-ng xtensa-esp32-elf
./ct-ng build
chmod -R u+w builds/xtensa-esp32-elf

cd ../../
mkdir -p tools
cd Dependencies/esp-idf/
# TODO: This doesn't actually use the GCC I built, nor the tools path...

Building the app

Build and flash the application to the Odroid, which should be connected via USB and powered on:

cd Dependencies/esp-idf/
. ./export.sh
cd ../../app
idf.py build && idf.py -p /dev/ttyUSB0 flash

Note that the idf.py commands will only work in the terminal where you executed export.sh.

Monitor, if it doesn't work:

idf.py -p /dev/ttyUSB0 monitor


Thanks to Austin Morlan for his Odroid Go code (MIT license), some of which I have modified. It is kept in Dependencies/embedded-game-programming for reference, but that copy is not used in the app.

I found it much easier to get working than Odroid-Go-Firmware (note: different version of that firmware here). I do use modified subsets of Odroid-Go-Firmware (I'm not sure of the license, so it may actually need to be extracted).