From 5ad6fb84129d56f885d82828fa4b980e81d2b898 Mon Sep 17 00:00:00 2001 From: Savanni D'Gerinel Date: Sun, 26 Jun 2022 11:51:40 -0400 Subject: [PATCH] Add the lcd demo program to the flake --- flake.nix | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index d0388ef..255f076 100644 --- a/flake.nix +++ b/flake.nix @@ -46,7 +46,7 @@ name = "morse-tx"; src = ./.; - includes = [ "base" "spi" "morse" ]; + includes = [ "base" "spi" "morse" "rfm69hcw" ]; MCU = "atmega32u4"; CHIP_SELECT = "AVR_ATmega32u4"; @@ -55,10 +55,11 @@ INCLUDE_DIRS = lib.concatStringsSep " " (map (dir: "-I${src}/${dir}") includes); buildPhase = '' + ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o rfm.o -c ${src}/rfm69hcw/rfm.c ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o spi.o -c ${src}/spi/spi.c ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o morse.o -c ${src}/morse/morse.c ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o main.o -c ${src}/morse_tx/main.c - ${avr.gcc}/bin/avr-gcc ${CFLAGS} -o main.elf main.o morse.o spi.o + ${avr.gcc}/bin/avr-gcc ${CFLAGS} -o main.elf main.o morse.o spi.o rfm.o $OBJCOPY -O ihex main.elf main.hex ''; installPhase = '' @@ -73,7 +74,7 @@ lib = pkgs.lib; avr = pkgs.pkgsCross.avr.buildPackages; in pkgs.stdenv.mkDerivation rec { - name = "morse-tx"; + name = "spi-test"; src = ./.; includes = [ "base" "spi" ]; @@ -96,6 +97,37 @@ ''; }; + packages."x86_64-linux"."lcd" = + let + pkgs = import nixpkgs { system = "x86_64-linux"; }; + lib = pkgs.lib; + avr = pkgs.pkgsCross.avr.buildPackages; + in pkgs.stdenv.mkDerivation rec { + name = "lcd"; + src = ./.; + + includes = [ "base" "shift_register" "spi" ]; + + MCU = "atmega32u4"; + CHIP_SELECT = "AVR_ATmega32u4"; + F_CPU = "8000000"; + CFLAGS = ''-O -finline-functions -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -DF_CPU=${F_CPU} -std=gnu99 -D__${CHIP_SELECT}__=1 -mmcu=${MCU} -DAVR=1''; + INCLUDE_DIRS = lib.concatStringsSep " " (map (dir: "-I${src}/${dir}") includes); + + buildPhase = '' + ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o base.o -c ${src}/base/base.c + ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o spi.o -c ${src}/spi/spi.c + ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o reg.o -c ${src}/shift_register/reg.c + ${avr.gcc}/bin/avr-gcc ${CFLAGS} ${INCLUDE_DIRS} -o main.o -c ${src}/lcd/main.c + ${avr.gcc}/bin/avr-gcc ${CFLAGS} -o main.elf main.o reg.o spi.o base.o + $OBJCOPY -O ihex main.elf main.hex + ''; + installPhase = '' + mkdir $out + cp main.elf main.hex $out + ''; + }; + devShell."x86_64-linux" = let pkgs = import nixpkgs { system = "x86_64-linux"; };