2020-08-07 13:12:58 +08:00
|
|
|
let
|
2020-10-05 15:20:54 +08:00
|
|
|
mozillaOverlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
|
|
|
|
pkgs = import <nixpkgs> {overlays = [mozillaOverlay];};
|
2020-08-07 13:12:58 +08:00
|
|
|
in with pkgs;
|
|
|
|
let
|
2020-10-05 15:20:54 +08:00
|
|
|
migen = callPackage ./nix/migen.nix {};
|
|
|
|
openocd = callPackage ./nix/openocd.nix {};
|
|
|
|
rustPlatform = callPackage ./nix/rustPlatform.nix {};
|
|
|
|
itm = callPackage ./nix/itm.nix {inherit rustPlatform;};
|
2020-08-07 13:12:58 +08:00
|
|
|
|
2020-10-05 15:20:54 +08:00
|
|
|
runOpenOcdBlock = writeShellScriptBin "run-openocd-block" ''
|
|
|
|
openocd -f openocd/openocd.cfg
|
|
|
|
'';
|
2020-08-07 13:12:58 +08:00
|
|
|
|
2020-10-05 15:20:54 +08:00
|
|
|
openocdFlash = writeShellScriptBin "openocd-flash" ''
|
|
|
|
openocd -f openocd/openocd.cfg -f openocd/main.cfg
|
|
|
|
'';
|
2020-09-16 17:45:41 +08:00
|
|
|
|
2020-10-05 15:20:54 +08:00
|
|
|
publishMqtt = writeShellScriptBin "publish-mqtt" ''
|
|
|
|
mosquitto_pub -h localhost -t $1 -m "$2" -d
|
|
|
|
'';
|
|
|
|
|
|
|
|
openOCDFlashCustomised = writeShellScriptBin "openocd-flash-customised" ''
|
|
|
|
IFS='.|/' read -r a b c d e <<< $1
|
|
|
|
((ip = (a << 32) + (b << 24) + (c << 16) + (d << 8) + e))
|
|
|
|
IFS=':' read -r a b c d e f <<< $2
|
|
|
|
((mac = (16#$a << 40) + (16#$b << 32) + (16#$c << 24) + (16#$d << 16) + (16#$e << 8) + 16#$f))
|
|
|
|
IFS='.' read -r a b c d <<< $3
|
|
|
|
((broker_ip = (a << 24) + (b << 16) + (c << 8) + d))
|
|
|
|
touch temp_name
|
|
|
|
printf "%s\x04" "$4" > temp_name
|
|
|
|
openocd -f openocd/openocd.cfg \
|
|
|
|
-c "init
|
|
|
|
reset init
|
|
|
|
halt
|
|
|
|
stm32h7x mass_erase 1
|
|
|
|
flash write_image erase target/thumbv7em-none-eabihf/release/humpback-dds
|
|
|
|
flash filld 0x08100000 $ip 1
|
|
|
|
flash filld 0x08100020 $mac 1
|
|
|
|
flash fillw 0x08100040 $broker_ip 1
|
|
|
|
flash write_image temp_name 0x08100060 bin
|
|
|
|
reset run
|
|
|
|
shutdown"
|
|
|
|
rm temp_name
|
|
|
|
'';
|
2020-09-23 12:31:10 +08:00
|
|
|
|
2020-08-07 13:12:58 +08:00
|
|
|
in
|
2020-10-05 15:20:54 +08:00
|
|
|
stdenv.mkDerivation {
|
|
|
|
name = "Humpback-DDS";
|
|
|
|
buildInputs = with rustPlatform.rust; [
|
|
|
|
(pkgs.python3.withPackages(ps: [ migen ]))
|
|
|
|
pkgs.yosys
|
|
|
|
pkgs.nextpnr
|
|
|
|
pkgs.icestorm
|
|
|
|
pkgs.gdb
|
|
|
|
pkgs.mosquitto
|
|
|
|
openocd
|
|
|
|
rustc
|
|
|
|
cargo
|
|
|
|
itm
|
|
|
|
runOpenOcdBlock
|
|
|
|
openocdFlash
|
|
|
|
publishMqtt
|
|
|
|
openOCDFlashCustomised
|
|
|
|
];
|
|
|
|
}
|