forked from M-Labs/artiq-zynq
satman: not a library - made closer to runtime
This commit is contained in:
parent
37e8b576b1
commit
5cfcee6d20
@ -4,15 +4,10 @@ name = "satman"
|
|||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
[lib]
|
|
||||||
name = "satman"
|
|
||||||
crate-type = ["staticlib"]
|
|
||||||
path = "main.rs"
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
target_zc706 = ["libboard_zynq/target_zc706", "libsupport_zynq/target_zc706", "libconfig/target_zc706"]
|
target_zc706 = ["libboard_zynq/target_zc706", "libsupport_zynq/target_zc706", "libconfig/target_zc706"]
|
||||||
target_kasli_soc = ["libboard_zynq/target_kasli_soc", "libsupport_zynq/target_kasli_soc", "libconfig/target_kasli_soc"]
|
target_kasli_soc = ["libboard_zynq/target_kasli_soc", "libsupport_zynq/target_kasli_soc", "libconfig/target_kasli_soc"]
|
||||||
default = ["target_zc706"]
|
default = ["target_zc706", ]
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
build_zynq = { path = "../libbuild_zynq" }
|
build_zynq = { path = "../libbuild_zynq" }
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
include ../include/generated/variables.mak
|
|
||||||
include $(MISOC_DIRECTORY)/software/common.mak
|
|
||||||
|
|
||||||
LDFLAGS += -L../libbase
|
|
||||||
|
|
||||||
RUSTFLAGS += -Cpanic=abort
|
|
||||||
|
|
||||||
all:: satman.bin satman.fbi
|
|
||||||
|
|
||||||
.PHONY: $(RUSTOUT)/libsatman.a
|
|
||||||
$(RUSTOUT)/libsatman.a:
|
|
||||||
$(cargo) --manifest-path $(SATMAN_DIRECTORY)/Cargo.toml
|
|
||||||
|
|
||||||
satman.elf: $(RUSTOUT)/libsatman.a
|
|
||||||
$(link) -T $(SATMAN_DIRECTORY)/satman.ld
|
|
||||||
|
|
||||||
%.bin: %.elf
|
|
||||||
$(objcopy) -O binary
|
|
||||||
|
|
||||||
%.fbi: %.bin
|
|
||||||
$(mscimg) -f
|
|
@ -8,14 +8,14 @@ extern crate build_zynq;
|
|||||||
fn main() {
|
fn main() {
|
||||||
// Put the linker script somewhere the linker can find it
|
// Put the linker script somewhere the linker can find it
|
||||||
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
||||||
File::create(out.join("satman.ld"))
|
File::create(out.join("link.x"))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.write_all(include_bytes!("satman.ld"))
|
.write_all(include_bytes!("link.x"))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
println!("cargo:rustc-link-search={}", out.display());
|
println!("cargo:rustc-link-search={}", out.display());
|
||||||
|
|
||||||
// Only re-run the build script when link.x is changed,
|
// Only re-run the build script when link.x is changed,
|
||||||
// instead of when any part of the source code changes.
|
// instead of when any part of the source code changes.
|
||||||
println!("cargo:rerun-if-changed=satman.ld");
|
println!("cargo:rerun-if-changed=link.x");
|
||||||
build_zynq::cfg();
|
build_zynq::cfg();
|
||||||
}
|
}
|
||||||
|
86
src/satman/link.x
Normal file
86
src/satman/link.x
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
ENTRY(Reset);
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
SDRAM : ORIGIN = 0x00100000, LENGTH = 0x1FF00000
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
__text_start = .;
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
KEEP(*(.text.exceptions));
|
||||||
|
*(.text.boot);
|
||||||
|
*(.text .text.*);
|
||||||
|
} > SDRAM
|
||||||
|
__text_end = .;
|
||||||
|
|
||||||
|
__exidx_start = .;
|
||||||
|
.ARM.exidx :
|
||||||
|
{
|
||||||
|
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
|
||||||
|
} > SDRAM
|
||||||
|
__exidx_end = .;
|
||||||
|
|
||||||
|
.ARM.extab :
|
||||||
|
{
|
||||||
|
* (.ARM.extab*)
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.rodata : ALIGN(4)
|
||||||
|
{
|
||||||
|
*(.rodata .rodata.*);
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.data : ALIGN(4)
|
||||||
|
{
|
||||||
|
*(.data .data.*);
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.bss (NOLOAD) : ALIGN(4)
|
||||||
|
{
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss .bss.*);
|
||||||
|
. = ALIGN(4);
|
||||||
|
__bss_end = .;
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.heap (NOLOAD) : ALIGN(8)
|
||||||
|
{
|
||||||
|
__heap0_start = .;
|
||||||
|
. += 0x8000000;
|
||||||
|
__heap0_end = .;
|
||||||
|
__heap1_start = .;
|
||||||
|
. += 0x8000000;
|
||||||
|
__heap1_end = .;
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.stack1 (NOLOAD) : ALIGN(8)
|
||||||
|
{
|
||||||
|
__stack1_end = .;
|
||||||
|
. += 0x1000000;
|
||||||
|
__stack1_start = .;
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.stack0 (NOLOAD) : ALIGN(8)
|
||||||
|
{
|
||||||
|
__stack0_end = .;
|
||||||
|
. += 0x20000;
|
||||||
|
__stack0_start = .;
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.irq_stack1 (NOLOAD) : ALIGN(8)
|
||||||
|
{
|
||||||
|
__irq_stack1_end = .;
|
||||||
|
. += 0x100;
|
||||||
|
__irq_stack1_start = .;
|
||||||
|
} > SDRAM
|
||||||
|
|
||||||
|
.irq_stack0 (NOLOAD) : ALIGN(8)
|
||||||
|
{
|
||||||
|
__irq_stack0_end = .;
|
||||||
|
. += 0x100;
|
||||||
|
__irq_stack0_start = .;
|
||||||
|
} > SDRAM
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
#![feature(never_type, panic_info_message, const_slice_len, try_from, asm, naked_functions)]
|
|
||||||
#![feature(alloc_error_handler)]
|
|
||||||
#![no_std]
|
#![no_std]
|
||||||
#![no_main]
|
#![no_main]
|
||||||
|
#![feature(never_type, panic_info_message, asm, naked_functions)]
|
||||||
|
#![feature(alloc_error_handler)]
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate log;
|
extern crate log;
|
Loading…
Reference in New Issue
Block a user