Compare commits

...

2 Commits

Author SHA1 Message Date
Sebastien Bourdeauducq 85f7b2bf15 use overlay instead of passing llvm/rustc/cargo around 2019-06-06 12:05:48 +08:00
Sebastien Bourdeauducq 78f67f82d3 firmware: simulable demo
Run:
qemu-system-riscv32 -nographic -machine sifive_u -kernel target/riscv32imc-unknown-none-elf/release/helloworld
2019-06-06 10:33:29 +08:00
6 changed files with 25 additions and 19 deletions

View File

@ -16,18 +16,5 @@ rec {
heavycomps = pkgs.callPackage ./heavycomps.nix { inherit nmigen; }; heavycomps = pkgs.callPackage ./heavycomps.nix { inherit nmigen; };
binutils-riscv = pkgs.callPackage ./compilers/binutils.nix { platform = "riscv32"; }; binutils-riscv = pkgs.callPackage ./compilers/binutils.nix { platform = "riscv32"; };
llvm_7 = pkgs.llvm_7.overrideAttrs(oa: { rust-riscv32imc-crates = pkgs.callPackage ./compilers/rust-riscv32imc-crates.nix { };
name = oa.name + "-riscv";
cmakeFlags = oa.cmakeFlags ++ ["-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=RISCV"];
});
rustc = (pkgs.rustc.overrideAttrs(oa: {
name = "${oa.pname}-${oa.version}-riscv";
})).override {
inherit llvm_7;
pkgsBuildBuild = pkgs.pkgsBuildBuild // { inherit llvm_7; };
pkgsBuildHost = pkgs.pkgsBuildHost // { inherit llvm_7; };
pkgsBuildTarget = pkgs.pkgsBuildTarget // { inherit llvm_7; };
};
rust-riscv32imc-crates = pkgs.callPackage ./compilers/rust-riscv32imc-crates.nix { inherit rustc; };
cargo = pkgs.cargo.override { inherit rustc; };
} }

View File

@ -1,5 +1,5 @@
MEMORY MEMORY
{ {
FLASH : ORIGIN = 0x20000000, LENGTH = 16M FLASH : ORIGIN = 0x80000000, LENGTH = 16M
RAM : ORIGIN = 0x80000000, LENGTH = 16K RAM : ORIGIN = 0x81000000, LENGTH = 16K
} }

View File

@ -8,5 +8,11 @@ use riscv_rt::entry;
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
loop {} let foo = "hello world\n";
loop {
for c in foo.chars() {
let mem = 0x1001_3000 as *mut u8;
unsafe { *mem = c as u8 }
}
}
} }

7
overlay.nix Normal file
View File

@ -0,0 +1,7 @@
self: super:
{
llvm_7 = super.llvm_7.overrideAttrs(oa: {
name = oa.name + "-riscv";
cmakeFlags = oa.cmakeFlags ++ ["-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=RISCV"];
});
}

View File

@ -1,7 +1,12 @@
{ pkgs ? import <nixpkgs> {}}: { }:
let let
pkgs = import <nixpkgs> { overlays = [ import ./overlay.nix ]; };
derivations = import ./derivations.nix { inherit pkgs; }; derivations = import ./derivations.nix { inherit pkgs; };
jobs = derivations // { jobs = derivations // {
rustc = pkgs.rustc;
cargo = pkgs.cargo;
cargo-vendor = pkgs.cargo-vendor;
helloworld_ecp5 = import ./examples/helloworld_ecp5.nix { inherit pkgs; }; helloworld_ecp5 = import ./examples/helloworld_ecp5.nix { inherit pkgs; };
helloworld_kintex7 = import ./examples/helloworld_kintex7.nix { inherit pkgs; }; helloworld_kintex7 = import ./examples/helloworld_kintex7.nix { inherit pkgs; };
simplesoc_ecp5 = import ./examples/simplesoc_ecp5.nix { inherit pkgs; }; simplesoc_ecp5 = import ./examples/simplesoc_ecp5.nix { inherit pkgs; };

View File

@ -1,5 +1,6 @@
{ pkgs ? import <nixpkgs> {}}: { }:
let let
pkgs = import <nixpkgs> { overlays = [ import ./overlay.nix ]; };
hx = import ./derivations.nix { inherit pkgs; }; hx = import ./derivations.nix { inherit pkgs; };
in in
pkgs.mkShell { pkgs.mkShell {