From 96cefe6f06e546f850a028d48a798eaa20170b13 Mon Sep 17 00:00:00 2001 From: Florian Agbuya Date: Mon, 25 Mar 2024 17:16:56 +0800 Subject: [PATCH 1/2] update fsbl source --- flake.nix | 6 ++---- fsbl.patch | 31 ------------------------------- 2 files changed, 2 insertions(+), 35 deletions(-) delete mode 100644 fsbl.patch diff --git a/flake.nix b/flake.nix index 16520b1..5aec2da 100644 --- a/flake.nix +++ b/flake.nix @@ -168,17 +168,15 @@ src = pkgs.fetchFromGitHub { owner = "Xilinx"; repo = "embeddedsw"; - rev = "65c849ed46c88c67457e1fc742744f96db968ff1"; - sha256 = "1rvl06ha40dzd6s9aa4sylmksh4xb9dqaxq462lffv1fdk342pda"; + rev = "xilinx_v2022.2"; + sha256 = "sha256-UDz9KK/Hw3qM1BAeKif30rE8Bi6C2uvuZlvyvtJCMfw="; }; - patches = [ ./fsbl.patch ]; nativeBuildInputs = [ pkgs.gnumake gnutoolchain.binutils gnutoolchain.gcc ]; patchPhase = '' - patch -p1 -i ${./fsbl.patch} patchShebangs lib/sw_apps/zynq_fsbl/misc/copy_bsp.sh echo 'SEARCH_DIR("${gnutoolchain.newlib}/arm-none-eabi/lib");' >> lib/sw_apps/zynq_fsbl/src/lscript.ld ''; diff --git a/fsbl.patch b/fsbl.patch deleted file mode 100644 index 2537177..0000000 --- a/fsbl.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/lib/sw_apps/zynq_fsbl/src/Makefile b/lib/sw_apps/zynq_fsbl/src/Makefile -index 0e3ccdf1c5..a5b02f386e 100644 ---- a/lib/sw_apps/zynq_fsbl/src/Makefile -+++ b/lib/sw_apps/zynq_fsbl/src/Makefile -@@ -71,11 +71,14 @@ endif - all: $(EXEC) - - $(EXEC): $(LIBS) $(OBJS) $(INCLUDES) -- cp $(BSP_DIR)/$(BOARD)/ps7_init.* . - $(LINKER) $(LD1FLAGS) -o $@ $(OBJS) $(LDFLAGS) - rm -rf $(OBJS) -- -- -+ -+.PHONY: ps7_init -+ -+ps7_init: -+ cp $(BSP_DIR)/$(BOARD)/ps7_init.* . -+ - $(LIBS): - echo "Copying BSP files" - $(BSP_DIR)/copy_bsp.sh $(BOARD) $(CC) -@@ -86,7 +89,7 @@ $(LIBS): - make -C $(BSP_DIR) -k all "CC=armcc" "AR=armar" "C_FLAGS= -O2 -c" "EC_FLAGS=--debug --wchar32"; \ - fi; - --%.o:%.c -+%.o:%.c ps7_init - $(CC) $(CC_FLAGS) $(CFLAGS) $(ECFLAGS) -c $< -o $@ $(INCLUDEPATH) - - %.o:%.S -- 2.42.0 From 195a21fe78e4dde1fd705cb2899ab5d2763ae037 Mon Sep 17 00:00:00 2001 From: Florian Agbuya Date: Mon, 25 Mar 2024 17:20:19 +0800 Subject: [PATCH 2/2] use nix format for arm gnu toolchain --- flake.nix | 136 ++++++++---------------------------------------------- 1 file changed, 20 insertions(+), 116 deletions(-) diff --git a/flake.nix b/flake.nix index 5aec2da..fc195d3 100644 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,7 @@ outputs = { self, nixpkgs, mozilla-overlay }: let - pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; + pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) crosspkgs-overlay ]; }; rustManifest = pkgs.fetchurl { url = "https://static.rust-lang.org/dist/2021-01-29/channel-rust-nightly.toml"; @@ -26,118 +26,19 @@ cargo = rust; }); - gnu-platform = "arm-none-eabi"; - - binutils-pkg = { zlib, extraConfigureFlags ? [] }: pkgs.stdenv.mkDerivation rec { - basename = "binutils"; - version = "2.30"; - name = "${basename}-${gnu-platform}-${version}"; - src = pkgs.fetchurl { - url = "https://ftp.gnu.org/gnu/binutils/binutils-${version}.tar.bz2"; - sha256 = "028cklfqaab24glva1ks2aqa1zxa6w6xmc8q34zs1sb7h22dxspg"; + crosspkgs-overlay = (self: super: { + pkgsCross = super.pkgsCross // { + zynq-baremetal = import super.path { + system = "x86_64-linux"; + crossSystem = { + config = "arm-none-eabihf"; + libc = "newlib"; + gcc.cpu = "cortex-a9"; + gcc.fpu = "vfpv3"; + }; + }; }; - configureFlags = [ - "--enable-deterministic-archives" - "--target=${gnu-platform}" - "--with-cpu=cortex-a9" - "--with-fpu=vfpv3" - "--with-float=hard" - "--with-mode=thumb" - ] ++ extraConfigureFlags; - outputs = [ "out" "info" "man" ]; - depsBuildBuild = [ pkgs.buildPackages.stdenv.cc ]; - buildInputs = [ zlib ]; - enableParallelBuilding = true; - meta = { - description = "Tools for manipulating binaries (linker, assembler, etc.)"; - longDescription = '' - The GNU Binutils are a collection of binary tools. The main - ones are `ld' (the GNU linker) and `as' (the GNU assembler). - They also include the BFD (Binary File Descriptor) library, - `gprof', `nm', `strip', etc. - ''; - homepage = http://www.gnu.org/software/binutils/; - license = pkgs.lib.licenses.gpl3Plus; - /* Give binutils a lower priority than gcc-wrapper to prevent a - collision due to the ld/as wrappers/symlinks in the latter. */ - priority = "10"; - }; - }; - - gcc-pkg = { gmp, mpfr, libmpc, platform-binutils, extraConfigureFlags ? [] }: pkgs.stdenv.mkDerivation rec { - basename = "gcc"; - version = "9.1.0"; - name = "${basename}-${gnu-platform}-${version}"; - src = pkgs.fetchurl { - url = "https://ftp.gnu.org/gnu/gcc/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "1817nc2bqdc251k0lpc51cimna7v68xjrnvqzvc50q3ax4s6i9kr"; - }; - preConfigure = '' - mkdir build - cd build - ''; - configureScript = "../configure"; - configureFlags = [ - "--target=${gnu-platform}" - "--with-arch=armv7-a" - "--with-tune=cortex-a9" - "--with-fpu=vfpv3" - "--with-float=hard" - "--disable-libssp" - "--enable-languages=c" - "--with-as=${platform-binutils}/bin/${gnu-platform}-as" - "--with-ld=${platform-binutils}/bin/${gnu-platform}-ld" ] ++ extraConfigureFlags; - outputs = [ "out" "info" "man" ]; - hardeningDisable = [ "format" "pie" ]; - propagatedBuildInputs = [ gmp mpfr libmpc platform-binutils ]; - enableParallelBuilding = true; - dontFixup = true; - }; - - newlib-pkg = { platform-binutils, platform-gcc }: pkgs.stdenv.mkDerivation rec { - pname = "newlib"; - version = "3.1.0"; - src = pkgs.fetchurl { - url = "ftp://sourceware.org/pub/newlib/newlib-${version}.tar.gz"; - sha256 = "0ahh3n079zjp7d9wynggwrnrs27440aac04340chf1p9476a2kzv"; - }; - nativeBuildInputs = [ platform-binutils platform-gcc ]; - configureFlags = [ - "--target=${gnu-platform}" - - "--with-cpu=cortex-a9" - "--with-fpu=vfpv3" - "--with-float=hard" - "--with-mode=thumb" - "--enable-interwork" - "--disable-multilib" - - "--disable-newlib-supplied-syscalls" - "--with-gnu-ld" - "--with-gnu-as" - "--disable-newlib-io-float" - "--disable-werror" - ]; - dontFixup = true; - }; - gnutoolchain = rec { - binutils-bootstrap = pkgs.callPackage binutils-pkg { }; - gcc-bootstrap = pkgs.callPackage gcc-pkg { - platform-binutils = binutils-bootstrap; - extraConfigureFlags = [ "--disable-libgcc" ]; - }; - newlib = pkgs.callPackage newlib-pkg { - platform-binutils = binutils-bootstrap; - platform-gcc = gcc-bootstrap; - }; - binutils = pkgs.callPackage binutils-pkg { - extraConfigureFlags = [ "--with-lib-path=${newlib}/arm-none-eabi/lib" ]; - }; - gcc = pkgs.callPackage gcc-pkg { - platform-binutils = binutils; - extraConfigureFlags = [ "--enable-newlib" "--with-headers=${newlib}/arm-none-eabi/include" ]; - }; - }; + }); mkbootimage = pkgs.stdenv.mkDerivation { pname = "mkbootimage"; @@ -172,13 +73,16 @@ sha256 = "sha256-UDz9KK/Hw3qM1BAeKif30rE8Bi6C2uvuZlvyvtJCMfw="; }; nativeBuildInputs = [ - pkgs.gnumake - gnutoolchain.binutils - gnutoolchain.gcc + pkgs.pkgsCross.zynq-baremetal.buildPackages.binutils + pkgs.pkgsCross.zynq-baremetal.buildPackages.gcc ]; patchPhase = '' patchShebangs lib/sw_apps/zynq_fsbl/misc/copy_bsp.sh - echo 'SEARCH_DIR("${gnutoolchain.newlib}/arm-none-eabi/lib");' >> lib/sw_apps/zynq_fsbl/src/lscript.ld + + for x in lib/sw_apps/zynq_fsbl/src/Makefile lib/sw_apps/zynq_fsbl/misc/copy_bsp.sh lib/bsp/standalone/src/arm/cortexa9/gcc/Makefile; do + substituteInPlace $x \ + --replace "arm-none-eabi-" "arm-none-eabihf-" + done ''; buildPhase = '' cd lib/sw_apps/zynq_fsbl/src -- 2.42.0