Compare commits
No commits in common. "master" and "zynq-baremetal" have entirely different histories.
master
...
zynq-barem
|
@ -1,141 +0,0 @@
|
|||
# Fix for bus error issues when compiling cpython extensions in pyrp3 v1.2.0+
|
||||
# Patch sourced from: https://github.com/linien-org/pyrp3/tree/e6688acf8bd79d2dbe1d192d09c1a1baf1f6c67b (setup.py & monitor/Makefile)
|
||||
# Reference: https://github.com/elhep/Fast-Servo-Firmware/blob/master/OS/scripts/linien_install_requirements.sh#L28
|
||||
|
||||
diff --git a/monitor/Makefile b/monitor/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..044d88e
|
||||
--- /dev/null
|
||||
+++ b/monitor/Makefile
|
||||
@@ -0,0 +1,31 @@
|
||||
+# Makefile for libmonitor
|
||||
+
|
||||
+OBJS = monitor.o
|
||||
+SRCS = $(subst .o,.c, $(OBJS))
|
||||
+OSOBJS = monitor.os
|
||||
+TARGETLIB=libmonitor.so
|
||||
+CFLAGS=-g -std=gnu99 -Wall -Werror
|
||||
+LIBS=-lm -lpthread
|
||||
+
|
||||
+# Use CROSS_COMPILE=arm-linux-gnueabi-
|
||||
+CC=$(CROSS_COMPILE)gcc
|
||||
+INSTALL_DIR ?= .
|
||||
+
|
||||
+
|
||||
+all: $(TARGETLIB)
|
||||
+lib: $(TARGETLIB)
|
||||
+
|
||||
+%.os: %.c
|
||||
+ $(CC) -c -fPIC $(CFLAGS) $< -o $@
|
||||
+
|
||||
+$(TARGETLIB): $(OSOBJS)
|
||||
+ $(CC) -o $@ -shared $^ $(CFLAGS) $(LIBS)
|
||||
+
|
||||
+clean:
|
||||
+ rm -f $(TARGETLIB) *.o *.os
|
||||
+
|
||||
+# Install target - creates 'lib/' sub-directory in $(INSTALL_DIR) and copies all
|
||||
+# executables to that location.
|
||||
+install:
|
||||
+ mkdir -p $(INSTALL_DIR)/lib
|
||||
+ cp $(TARGETLIB) $(INSTALL_DIR)/lib
|
||||
\ No newline at end of file
|
||||
diff --git a/pyrp3/raw_memory.py b/pyrp3/raw_memory.py
|
||||
index ce1b28e..233b82a 100644
|
||||
--- a/pyrp3/raw_memory.py
|
||||
+++ b/pyrp3/raw_memory.py
|
||||
@@ -1,12 +1,9 @@
|
||||
from ctypes import POINTER, c_uint32, cast, cdll, create_string_buffer, sizeof
|
||||
-from importlib.machinery import EXTENSION_SUFFIXES
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
|
||||
-libmonitor_file = str(
|
||||
- Path(__file__).parent / ".." / "monitor{}".format(EXTENSION_SUFFIXES[0])
|
||||
-)
|
||||
+libmonitor_file = 'libmonitor.so'
|
||||
|
||||
libmonitor = cdll.LoadLibrary(libmonitor_file)
|
||||
libmonitor.read_value.restype = c_uint32
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 98bdaee..b0a8af4 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -1,5 +1,10 @@
|
||||
import re
|
||||
-from distutils.core import Extension, setup
|
||||
+import os
|
||||
+
|
||||
+from distutils.core import setup
|
||||
+from distutils.command.build import build
|
||||
+from distutils.command.install import install
|
||||
+
|
||||
from pathlib import Path
|
||||
|
||||
# from https://stackoverflow.com/a/7071358/2750945
|
||||
@@ -11,9 +16,50 @@ if mo:
|
||||
verstr = mo.group(1)
|
||||
else:
|
||||
raise RuntimeError("Unable to find version string in %s." % (VERSIONFILE,))
|
||||
+
|
||||
+# Patch from https://github.com/linien-org/pyrp3/blob/e6688acf8bd79d2dbe1d192d09c1a1baf1f6c67b/setup.py#L16-L55
|
||||
+build_dir = "monitor/"
|
||||
+
|
||||
+def compile_libmonitor():
|
||||
+ cwd = os.getcwd() # get current directory
|
||||
+ try:
|
||||
+ os.chdir(build_dir)
|
||||
+ os.system("make clean")
|
||||
+ os.system("make all")
|
||||
+ finally:
|
||||
+ os.chdir(cwd)
|
||||
+
|
||||
+
|
||||
+def install_libmonitor(prefix=""):
|
||||
+ cwd = os.getcwd() # get current directory
|
||||
+ try:
|
||||
+ os.chdir(build_dir)
|
||||
+ os.system("make install INSTALL_DIR={prefix}".format(prefix=prefix))
|
||||
+ finally:
|
||||
+ os.chdir(cwd)
|
||||
+
|
||||
+
|
||||
+class lib_build(build):
|
||||
+ def run(self):
|
||||
+ compile_libmonitor()
|
||||
+ build.run(self)
|
||||
+
|
||||
+
|
||||
+class lib_install(install):
|
||||
+ def run(self):
|
||||
+ compile_libmonitor()
|
||||
+ install_libmonitor(self.prefix)
|
||||
+ # install.run(self)
|
||||
+
|
||||
+# Will use nix to install libmonitor
|
||||
+cmdclass = {
|
||||
+ "build": lib_build
|
||||
+}
|
||||
+
|
||||
this_directory = Path(__file__).parent
|
||||
long_description = (this_directory / "README.rst").read_text()
|
||||
|
||||
+
|
||||
setup(
|
||||
name="pyrp3",
|
||||
version=verstr,
|
||||
@@ -32,6 +78,7 @@ setup(
|
||||
"cached_property>=1.5.2",
|
||||
"numpy>=1.11.0",
|
||||
],
|
||||
+ cmdclass=cmdclass,
|
||||
classifiers=[
|
||||
"Intended Audience :: Developers",
|
||||
"Intended Audience :: Education",
|
||||
@@ -45,5 +92,4 @@ setup(
|
||||
"Topic :: Software Development :: Libraries :: Python Modules",
|
||||
],
|
||||
keywords=["redpitaya", "FPGA", "zynq"],
|
||||
- ext_modules=[Extension("monitor", ["monitor/monitor.c"])],
|
||||
)
|
|
@ -21,7 +21,7 @@ import mmap
|
|||
import os
|
||||
|
||||
import spidev
|
||||
from pyfastservo.common import (
|
||||
from common import (
|
||||
ADC_AFE_CTRL_ADDR,
|
||||
ADC_BITSLIP_ADDR,
|
||||
ADC_CH0_HIGH_ADDR,
|
||||
|
@ -54,7 +54,7 @@ def main_adc_config(test_pattern):
|
|||
spi.open(MAIN_ADC_BUS, MAIN_ADC_DEVICE)
|
||||
spi.max_speed_hz = 50000
|
||||
spi.mode = 0b00 # CPOL = 0 CPHA = 0
|
||||
spi.cshigh = False
|
||||
spi.cshigh = True
|
||||
# spi.read0 = False
|
||||
|
||||
spi_buffer = [0x00, 0x80] # reset
|
||||
|
@ -121,7 +121,7 @@ def main_adc_test_mode(enable):
|
|||
spi.open(MAIN_ADC_BUS, MAIN_ADC_DEVICE)
|
||||
spi.max_speed_hz = 50000
|
||||
spi.mode = 0b00 # CPOL = 0 CPHA = 0
|
||||
spi.cshigh = False
|
||||
spi.cshigh = True
|
||||
# spi.read0 = True
|
||||
|
||||
reg_contents = (
|
||||
|
@ -292,7 +292,7 @@ def adc_aux_read(port, type, pin):
|
|||
spi.open(1, 3) # AUX ADC 1?
|
||||
spi.max_speed_hz = 5000
|
||||
spi.mode = 0b00
|
||||
spi.cshigh = False
|
||||
spi.cshigh = True
|
||||
|
||||
read_buffer = spi.xfer2(write_buffer)
|
||||
mu_voltage = read_buffer[0] << 8 | read_buffer[1] >> 2
|
||||
|
|
|
@ -22,8 +22,8 @@ MAP_SIZE = 0x1000
|
|||
MAP_MASK = 0xFFF
|
||||
PAGESIZE = 0x1000
|
||||
|
||||
# LINIEN_OFFSET = 0x0
|
||||
LINIEN_OFFSET = 0x300000
|
||||
LINIEN_OFFSET = 0x0
|
||||
# LINIEN_OFFSET = 0x300000
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# FRONT PANEL LEDS REGISTER ADDRESSES
|
||||
|
|
|
@ -21,7 +21,7 @@ import mmap
|
|||
import os
|
||||
|
||||
import spidev
|
||||
from pyfastservo.common import (
|
||||
from common import (
|
||||
CH0_HIGH_WORD_ADDR,
|
||||
CH0_LOW_WORD_ADDR,
|
||||
CH1_HIGH_WORD_ADDR,
|
||||
|
@ -45,7 +45,7 @@ def main_dac_init():
|
|||
spi.open(MAIN_DAC_BUS, MAIN_DAC_DEVICE)
|
||||
spi.max_speed_hz = 5000
|
||||
spi.mode = 0b00 # CPOL = 0 CPHA = 0
|
||||
spi.cshigh = False
|
||||
spi.cshigh = True
|
||||
|
||||
spi_buffer = [0x00, 0x10] # software reset
|
||||
spi.xfer2(spi_buffer)
|
||||
|
|
|
@ -21,7 +21,7 @@ import mmap
|
|||
import os
|
||||
import time
|
||||
|
||||
from pyfastservo.common import (
|
||||
from common import (
|
||||
LED0_BASE_ADDR,
|
||||
LED1_BASE_ADDR,
|
||||
LED2_BASE_ADDR,
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
from pyfastservo import adc, si5340, dac
|
||||
import adc
|
||||
import si5340
|
||||
import dac
|
||||
|
||||
def main():
|
||||
si5340.configure_si5340()
|
||||
|
|
131
flake.nix
131
flake.nix
|
@ -11,7 +11,7 @@
|
|||
outputs = { self, nixpkgs, not-os, src-migen, src-misoc }:
|
||||
let
|
||||
pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ crosspkgs-overlay ]; };
|
||||
pkgs-armv7l = pkgs.pkgsCross.zynq-armv7l-linux;
|
||||
not-os-cfg = not-os-configured.config.system;
|
||||
fsbl-support = ./fast-servo/fsbl-support;
|
||||
|
||||
patched-not-os = pkgs.applyPatches {
|
||||
|
@ -27,19 +27,6 @@
|
|||
];
|
||||
};
|
||||
|
||||
crossSystem = {
|
||||
system = "armv7l-linux";
|
||||
linux-kernel = {
|
||||
name = "zynq";
|
||||
baseConfig = "multi_v7_defconfig";
|
||||
target = "uImage";
|
||||
installTarget = "uImage";
|
||||
autoModules = false;
|
||||
DTB = true;
|
||||
makeFlags = [ "LOADADDR=0x8000" ];
|
||||
};
|
||||
};
|
||||
|
||||
crosspkgs-overlay = (self: super: {
|
||||
pkgsCross = super.pkgsCross // {
|
||||
zynq-baremetal = import super.path {
|
||||
|
@ -51,10 +38,6 @@
|
|||
gcc.fpu = "vfpv3";
|
||||
};
|
||||
};
|
||||
zynq-armv7l-linux = import super.path {
|
||||
system = "x86_64-linux";
|
||||
inherit crossSystem;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -100,49 +83,38 @@
|
|||
runScript = "vivado";
|
||||
};
|
||||
|
||||
pyrp3 = pkgs-armv7l.python3Packages.buildPythonPackage rec {
|
||||
pyrp3 = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "pyrp3";
|
||||
version = "1.2.0";
|
||||
pyproject = true;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "linien-org";
|
||||
repo = "pyrp3";
|
||||
repo = "${pname}";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-43TTlpJ5SMAjQM71bNVvrWQyciRXM3zpuA/Dw41AEgU=";
|
||||
};
|
||||
patches = ./fast-servo/linien-pyrp3-monitor.patch;
|
||||
nativeBuildInputs = with pkgs-armv7l.python3Packages; [
|
||||
setuptools wheel setuptools-scm
|
||||
] ++ (with pkgs-armv7l; [ gcc gnumake ]);
|
||||
propagatedBuildInputs = with pkgs-armv7l.python3Packages; [
|
||||
nativeBuildInputs = with pkgs.python3Packages; [ setuptools wheel setuptools-scm ];
|
||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||
myhdl
|
||||
rpyc4
|
||||
cached-property
|
||||
numpy
|
||||
];
|
||||
postInstall = ''
|
||||
cp monitor/libmonitor.so $out/lib
|
||||
'';
|
||||
postFixup = ''
|
||||
substituteInPlace $out/${pkgs.python3.sitePackages}/pyrp3/raw_memory.py \
|
||||
--replace "libmonitor.so" "$out/lib/libmonitor.so"
|
||||
'';
|
||||
};
|
||||
|
||||
linien-server = pkgs-armv7l.python3Packages.buildPythonPackage rec {
|
||||
linien-server = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "linien-server";
|
||||
pyproject = true;
|
||||
inherit (pkgs.python3Packages.linien-common) src version;
|
||||
sourceRoot = "source/linien-server";
|
||||
postPatch = ''
|
||||
cp ${fast-servo-gateware}/csrmap.py linien_server/csrmap.py
|
||||
substituteInPlace linien_server/acquisition.py \
|
||||
--replace " start_nginx()" "" \
|
||||
--replace " stop_nginx()" "" \
|
||||
--replace " flash_fpga()" ""
|
||||
'';
|
||||
nativeBuildInputs = [ pkgs-armv7l.python3Packages.setuptools ];
|
||||
propagatedBuildInputs = with pkgs-armv7l.python3Packages; [
|
||||
nativeBuildInputs = [ pkgs.python3Packages.setuptools ];
|
||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||
appdirs
|
||||
certifi
|
||||
click
|
||||
|
@ -154,6 +126,15 @@
|
|||
];
|
||||
};
|
||||
|
||||
not-os-configured = (import patched-not-os {
|
||||
inherit nixpkgs;
|
||||
extraModules = [
|
||||
"${patched-not-os}/zynq_image.nix"
|
||||
];
|
||||
system = "x86_64-linux";
|
||||
crossSystem.system = "armv7l-linux";
|
||||
});
|
||||
|
||||
fast-servo-gateware = pkgs.stdenv.mkDerivation rec {
|
||||
name = "fast-servo-gateware";
|
||||
inherit (pkgs.python3Packages.linien-common) src;
|
||||
|
@ -186,33 +167,11 @@
|
|||
mkdir -p $out $out/nix-support
|
||||
cp gateware/build/top.bit $out
|
||||
cp linien-server/linien_server/gateware.bin $out
|
||||
cp linien-server/linien_server/csrmap.py $out
|
||||
echo file binary-dist $out/top.bit >> $out/nix-support/hydra-build-products
|
||||
echo file binary-dist $out/gateware.bin >> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
};
|
||||
|
||||
pyfastservo = pkgs-armv7l.python3Packages.buildPythonPackage rec {
|
||||
name = "pyfastservo";
|
||||
src = ./fast-servo;
|
||||
preBuild = ''
|
||||
cat > setup.py << EOF
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name="pyfastservo",
|
||||
packages=["pyfastservo"],
|
||||
install_requires=["spidev", "smbus2"],
|
||||
entry_points = {"console_scripts": ["fp_leds=pyfastservo.fp_leds:main"]},
|
||||
)
|
||||
EOF
|
||||
'';
|
||||
propagatedBuildInputs = with pkgs-armv7l.python3Packages; [
|
||||
spidev
|
||||
smbus2
|
||||
];
|
||||
};
|
||||
|
||||
mkbootimage = pkgs.stdenv.mkDerivation {
|
||||
pname = "mkbootimage";
|
||||
version = "2.3dev";
|
||||
|
@ -237,37 +196,6 @@
|
|||
};
|
||||
|
||||
board-package-set = { board }: let
|
||||
not-os-configured = (import patched-not-os {
|
||||
inherit nixpkgs;
|
||||
extraModules = [
|
||||
"${patched-not-os}/zynq_image.nix"
|
||||
] ++ pkgs.lib.optionals (board == "fast-servo") [
|
||||
({ config, pkgs, lib, ... }: {
|
||||
environment.systemPackages = [
|
||||
linien-server
|
||||
(pkgs.python3.withPackages(ps: [ pyfastservo ]))
|
||||
];
|
||||
boot.postBootCommands = lib.mkAfter ''
|
||||
|
||||
# Program the FPGA
|
||||
set +x
|
||||
echo "Loading bitstream into SRAM..."
|
||||
echo 0 > /sys/class/fpga_manager/fpga0/flags
|
||||
mkdir -p /lib/firmware
|
||||
cp ${fast-servo-gateware}/gateware.bin /lib/firmware/
|
||||
echo gateware.bin > /sys/class/fpga_manager/fpga0/firmware
|
||||
|
||||
# Run device init scripts
|
||||
echo "Initializing clock generator, ADC, and DAC..."
|
||||
python3 -m pyfastservo.initialize
|
||||
'';
|
||||
})];
|
||||
system = "x86_64-linux";
|
||||
inherit crossSystem;
|
||||
});
|
||||
|
||||
not-os-build = not-os-configured.config.system.build;
|
||||
|
||||
fsbl = pkgs.stdenv.mkDerivation {
|
||||
name = "${board}-fsbl";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
@ -306,8 +234,9 @@
|
|||
dontFixup = true;
|
||||
};
|
||||
|
||||
u-boot = (pkgs-armv7l.buildUBoot {
|
||||
name = "${board}-u-boot";
|
||||
u-boot = let
|
||||
fast-servo-dts = fast-servo/fast-servo.dts;
|
||||
in (pkgs.pkgsCross.armv7l-hf-multiplatform.buildUBoot {
|
||||
defconfig = "xilinx_zynq_virt_defconfig";
|
||||
patches = [] ++ pkgs.lib.optional (board == "fast-servo") ./fast-servo/u-boot.patch;
|
||||
preConfigure = ''
|
||||
|
@ -317,7 +246,7 @@
|
|||
CONFIG_SYS_PROMPT="${board}-boot> "
|
||||
CONFIG_AUTOBOOT=y
|
||||
CONFIG_BOOTCOMMAND="${builtins.replaceStrings [ "\n" ] [ "; " ] ''
|
||||
setenv bootargs 'root=/dev/mmcblk0p2 console=ttyPS0,115200n8 systemConfig=${builtins.unsafeDiscardStringContext not-os-build.toplevel}'
|
||||
setenv bootargs 'root=/dev/mmcblk0p2 console=ttyPS0,115200n8 systemConfig=${builtins.unsafeDiscardStringContext not-os-cfg.build.toplevel}'
|
||||
fatload mmc 0 0x6400000 uImage
|
||||
fatload mmc 0 0x8000000 ${board}.dtb
|
||||
fatload mmc 0 0xA400000 uRamdisk.image.gz
|
||||
|
@ -330,7 +259,7 @@
|
|||
filesToInstall = [ "u-boot.elf" ];
|
||||
}).overrideAttrs (oldAttrs: {
|
||||
postUnpack = ''
|
||||
cp ${fast-servo/fast-servo.dts} $sourceRoot/arch/arm/dts/zynq-fast-servo.dts
|
||||
cp ${fast-servo-dts} $sourceRoot/arch/arm/dts/zynq-fast-servo.dts
|
||||
'';
|
||||
postInstall = ''
|
||||
mkdir -p $out/dts
|
||||
|
@ -361,7 +290,7 @@
|
|||
echo file binary-dist $out/boot.bin >> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
|
||||
dtb = pkgs.runCommand "${board}-dtb"
|
||||
dtb = pkgs.runCommand "dtb"
|
||||
{
|
||||
buildInputs = [ pkgs.gcc pkgs.dtc ];
|
||||
}
|
||||
|
@ -381,14 +310,14 @@
|
|||
|
||||
sd-image = let
|
||||
rootfsImage = pkgs.callPackage (pkgs.path + "/nixos/lib/make-ext4-fs.nix") {
|
||||
storePaths = [ not-os-build.toplevel ];
|
||||
storePaths = [ not-os-cfg.build.toplevel ];
|
||||
volumeLabel = "ROOT";
|
||||
};
|
||||
# Current firmware (kernel, bootimage, etc..) takes ~18MB
|
||||
firmwareSize = 30;
|
||||
firmwarePartitionOffset = 8;
|
||||
in pkgs.stdenv.mkDerivation {
|
||||
name = "${board}-sd-image";
|
||||
name = "sd-image";
|
||||
nativeBuildInputs = with pkgs; [ dosfstools mtools libfaketime util-linux parted ];
|
||||
buildCommand = ''
|
||||
mkdir -p $out/nix-support $out/sd-image
|
||||
|
@ -422,8 +351,8 @@
|
|||
mkdir firmware
|
||||
cp ${bootimage}/boot.bin firmware/
|
||||
cp ${dtb}/${board}.dtb firmware/
|
||||
cp ${not-os-build.kernel}/uImage firmware/
|
||||
cp ${not-os-build.uRamdisk}/initrd firmware/uRamdisk.image.gz
|
||||
cp ${not-os-cfg.build.kernel}/uImage firmware/
|
||||
cp ${not-os-cfg.build.uRamdisk}/initrd firmware/uRamdisk.image.gz
|
||||
|
||||
(cd firmware; mcopy -psvm -i ../firmware_part.img ./* ::)
|
||||
dd conv=notrunc if=firmware_part.img of=$img seek=$START count=$SECTORS
|
||||
|
@ -436,9 +365,7 @@
|
|||
export PATH=${pkgs.qemu}/bin:$PATH
|
||||
IMGDIR=$(mktemp -d /tmp/not-os-qemu-XXXXXX)
|
||||
BASE=$(realpath $(dirname $0))
|
||||
|
||||
qemu-img convert -O qcow2 -f raw -o preallocation=metadata $BASE/sd-image.img $IMGDIR/sd-sparse.qcow2
|
||||
qemu-img create -F qcow2 -f qcow2 -b $IMGDIR/sd-sparse.qcow2 $IMGDIR/sd-overlay.qcow2 2G
|
||||
qemu-img create -F raw -f qcow2 -b $BASE/sd-image.img $IMGDIR/sd-overlay.qcow2 512M
|
||||
|
||||
# Some command arguments are based from samples in Xilinx QEMU User Documentation
|
||||
# See: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/821854273/Running+Bare+Metal+Applications+on+QEMU
|
||||
|
@ -453,7 +380,7 @@
|
|||
|
||||
rm -rf $IMGDIR
|
||||
'';
|
||||
in pkgs.runCommand "${board}-qemu" {
|
||||
in pkgs.runCommand "not-os-qemu" {
|
||||
inherit qemuScript;
|
||||
passAsFile = [ "qemuScript" ];
|
||||
preferLocalBuild = true;
|
||||
|
|
|
@ -151,10 +151,10 @@ index c61f9d6..fbdf0fd 100644
|
|||
};
|
||||
}
|
||||
diff --git a/zynq_image.nix b/zynq_image.nix
|
||||
index 3fa23ab..9d1621e 100644
|
||||
index 3fa23ab..e2e3871 100644
|
||||
--- a/zynq_image.nix
|
||||
+++ b/zynq_image.nix
|
||||
@@ -1,66 +1,89 @@
|
||||
@@ -1,66 +1,102 @@
|
||||
-{ config, pkgs, ... }:
|
||||
+{ lib, config, pkgs, ... }:
|
||||
|
||||
|
@ -163,7 +163,22 @@ index 3fa23ab..9d1621e 100644
|
|||
- # dont use overlays for the qemu, it causes a lot of wasted time on recompiles
|
||||
- x86pkgs = import pkgs.path { system = "x86_64-linux"; };
|
||||
- customKernel = pkgs.linux.override {
|
||||
+ customKernel = (pkgs.linux.override {
|
||||
+ crosspkgs = import pkgs.path {
|
||||
+ system = "x86_64-linux";
|
||||
+ crossSystem = {
|
||||
+ system = "armv7l-linux";
|
||||
+ linux-kernel = {
|
||||
+ name = "zynq";
|
||||
+ baseConfig = "multi_v7_defconfig";
|
||||
+ target = "uImage";
|
||||
+ installTarget = "uImage";
|
||||
+ autoModules = false;
|
||||
+ DTB = true;
|
||||
+ makeFlags = [ "LOADADDR=0x8000" ];
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ customKernel = (crosspkgs.linux.override {
|
||||
extraConfig = ''
|
||||
OVERLAY_FS y
|
||||
+ MEDIA_SUPPORT n
|
||||
|
@ -180,15 +195,14 @@ index 3fa23ab..9d1621e 100644
|
|||
+ OF_OVERLAY y
|
||||
'';
|
||||
- };
|
||||
- customKernelPackages = pkgs.linuxPackagesFor customKernel;
|
||||
+ }).overrideAttrs (oa: {
|
||||
+ postInstall = ''
|
||||
+ if [ -e arch/arm/boot/uImage ]; then
|
||||
+ cp arch/arm/boot/uImage $out
|
||||
+ fi
|
||||
+ cp arch/arm/boot/uImage $out
|
||||
+ ${oa.postInstall}
|
||||
+ '';
|
||||
+ });
|
||||
customKernelPackages = pkgs.linuxPackagesFor customKernel;
|
||||
+ customKernelPackages = crosspkgs.linuxPackagesFor customKernel;
|
||||
in {
|
||||
imports = [ ./arm32-cross-fixes.nix ];
|
||||
boot.kernelPackages = customKernelPackages;
|
||||
|
@ -239,12 +253,12 @@ index 3fa23ab..9d1621e 100644
|
|||
- chmod +x qemu-script
|
||||
- patchShebangs qemu-script
|
||||
- ls -ltrh
|
||||
- '';
|
||||
'';
|
||||
- system.build.rpi_image_tar = pkgs.runCommand "dist.tar" {} ''
|
||||
- mkdir -p $out/nix-support
|
||||
- tar -cvf $out/dist.tar ${config.system.build.rpi_image}
|
||||
- echo "file binary-dist $out/dist.tar" >> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
- '';
|
||||
- environment.systemPackages = [ pkgs.strace ];
|
||||
- environment.etc."service/getty/run".source = pkgs.writeShellScript "getty" ''
|
||||
- agetty ttyPS0 115200
|
||||
|
|
|
@ -1062,13 +1062,13 @@ index 0000000..59aa585
|
|||
++
|
||||
+ #endif /*_LINUX_FPGA_MGR_H */
|
||||
diff --git a/zynq_image.nix b/zynq_image.nix
|
||||
index 9d1621e..012e50c 100644
|
||||
index e2e3871..2decd54 100644
|
||||
--- a/zynq_image.nix
|
||||
+++ b/zynq_image.nix
|
||||
@@ -3,6 +3,16 @@
|
||||
with lib;
|
||||
let
|
||||
customKernel = (pkgs.linux.override {
|
||||
@@ -18,6 +18,16 @@ let
|
||||
};
|
||||
};
|
||||
customKernel = (crosspkgs.linux.override {
|
||||
+ kernelPatches = [
|
||||
+ ({
|
||||
+ name = "xilinx-configfs-overlays";
|
||||
|
@ -1082,7 +1082,7 @@ index 9d1621e..012e50c 100644
|
|||
extraConfig = ''
|
||||
OVERLAY_FS y
|
||||
MEDIA_SUPPORT n
|
||||
@@ -17,6 +27,7 @@ let
|
||||
@@ -32,6 +42,7 @@ let
|
||||
OF_FPGA_REGION y
|
||||
FPGA_MGR_ZYNQ_FPGA y
|
||||
OF_OVERLAY y
|
||||
|
|
Loading…
Reference in New Issue