commit | 6003782859553371a47da3b31e82ae79e2ea64d2 | [log] [tgz] |
---|---|---|
author | Jan Kundrát <jan.kundrat@cesnet.cz> | Mon Feb 26 16:27:07 2018 +0100 |
committer | Jan Kundrát <jan.kundrat@cesnet.cz> | Mon Feb 26 18:15:42 2018 +0100 |
tree | 1b5c72d3e8c13b4a736fe8d1215d444f869a54fb | |
parent | bb4435a1ddffb4e8a7d564d9e4fb854b24ffa8b9 [diff] |
clearfog: An inverter for OCM's SPI clock It turned out that the spi-orion SPI master (perhaps the silicon, maybe the driver, maybe the docs, but who cares) has troubles with transfers which alternate CPOL=0 and CPOL=1. SOmetimes the changes only take effect on the *next* transfer. This meant that we ended up with addressing the OCM with CPOL=0 (wrong) and the GPIO expander with CPOL=1 (wrong as well). Given that we need a buffer on the SPI_CLK line to ensure that anny attached crap doesn't pull it up, it's very easy to just add a simple inverter gate. I used one NOR from a TI 74AHC02. Change-Id: Ic78a0237c3e705fb8c9b4d66802fb64639ad1906
This repository contains CzechLight-specific bits for Buildroot. Buildroot is a tool which produces system images for flashing to embedded devices. They have a nice documentation which explains everything that one might need.
Everything is in Gerrit. One should not need to clone anything from anywhere else. The build will download source tarballs of various open source components, though.
TODO: Automate this via the CI system. I want to get the .img
files for testing of each change, eventually.
git clone ssh://$YOUR_LOGIN@cesnet.cz@gerrit.cesnet.cz:29418/CzechLight/br2-external czechlight pushd czechlight git submodule update --init --recursive popd mkdir build-clearfog cd build-clearfog ../czechlight/dev-setup-git.sh make czechlight_clearfog_defconfig make
A full rebuild takes between 30 and 45 minutes on a T460s laptop for targets which use a pre-generated Linaro toolchain (clearfog
, beaglebone
). Other targets take longer because one has to build a toolchain first. When the build finishes, the generated image to be dd
-ed to an SD card is at images/sdcard.img
.
WARNING: Buildroot is fragile. It is not safe to perform incremental builds after changing an "important" setting. Please check their manual for details.
A significant amount of time is wasted in configure
steps which are not parallelized :( as of November 2017. This can be hacked by patching Buildroot's top-level Makefile
, but note that one cannot easily debug stuff afterwards.
diff --git a/Makefile b/Makefile index 79db7fe..905099a 100644 --- a/Makefile +++ b/Makefile @@ -114,7 +114,7 @@ endif # this top-level Makefile in parallel comment the ".NOTPARALLEL" line and # use the -j<jobs> option when building, e.g: # make -j$((`getconf _NPROCESSORS_ONLN`+1)) -.NOTPARALLEL: # absolute path TOPDIR := $(CURDIR)
Also, we are building two different root filesystem instances (an EXT4 image and a tarball for RAUC). This is also currently broken, but we can work around that reasonably easily:
make -j32 target-finalize && make
Apart from the traditional way of re-flashing the SD card or the eMMC from scratch, it's also possible to use RAUC to update. This method preserves the U-Boot version and the U-Boot's environment. Apart from that, everything starting with the kernel and the DTB file and including the root FS is updated. Configuration stored in /cfg
is brought along and preserved as well.
To install an update:
# build node make rsync -avP images/update.raucb somewhere.example.org:path/to/web/root # target, perhaps via an USB console wget http://somewhere.example.org/update.raucb -O /tmp/update.raucb rauc install /tmp/update.raucb reboot