Move linker scripts to sub-folders

This commit is contained in:
bjoernQ 2022-02-18 12:00:05 +01:00
parent 826d485fe1
commit 7b59c9e76d
33 changed files with 62 additions and 34 deletions

View File

@ -48,7 +48,8 @@ pub enum InterruptKind {
} }
/// Enumeration of available CPU interrupts. /// Enumeration of available CPU interrupts.
/// It is possible to create a handler for each of the interrupts. (e.g. `interrupt3`) /// It is possible to create a handler for each of the interrupts. (e.g.
/// `interrupt3`)
pub enum CpuInterrupt { pub enum CpuInterrupt {
Interrupt1 = 1, Interrupt1 = 1,
Interrupt2, Interrupt2,

View File

@ -1,6 +1,5 @@
use darling::FromMeta; use darling::FromMeta;
use proc_macro::TokenStream; use proc_macro::{self, Span, TokenStream};
use proc_macro::{self, Span};
use proc_macro_error::{abort, proc_macro_error}; use proc_macro_error::{abort, proc_macro_error};
use quote::quote; use quote::quote;
use syn::{parse_macro_input, AttributeArgs}; use syn::{parse_macro_input, AttributeArgs};

View File

@ -1,10 +1,10 @@
[target.xtensa-esp32-none-elf] [target.xtensa-esp32-none-elf]
runner = "xtensa-esp32-elf-gdb -q -x xtensa.gdb" runner = "espflash --monitor"
[build] [build]
rustflags = [ rustflags = [
"-C", "link-arg=-nostartfiles", "-C", "link-arg=-nostartfiles",
"-C", "link-arg=-Wl,-Tlink.x", "-C", "link-arg=-Wl,-Tlinkall.x",
] ]
target = "xtensa-esp32-none-elf" target = "xtensa-esp32-none-elf"

View File

@ -5,20 +5,23 @@ fn main() {
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
File::create(out.join("memory.x")) File::create(out.join("memory.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("memory.x")) .write_all(include_bytes!("ld/memory.x"))
.unwrap(); .unwrap();
File::create(out.join("alias.x")) File::create(out.join("alias.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("rom.x")) .write_all(include_bytes!("ld/rom.x"))
.unwrap(); .unwrap();
File::create(out.join("hal-defaults.x")) File::create(out.join("hal-defaults.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("hal-defaults.x")) .write_all(include_bytes!("ld/hal-defaults.x"))
.unwrap(); .unwrap();
println!("cargo:rustc-link-arg=-Thal-defaults.x"); File::create(out.join("linkall.x"))
.unwrap()
.write_all(include_bytes!("ld/linkall.x"))
.unwrap();
println!("cargo:rustc-link-search={}", out.display()); println!("cargo:rustc-link-search={}", out.display());

2
esp32-hal/ld/linkall.x Normal file
View File

@ -0,0 +1,2 @@
INCLUDE "link.x"
INCLUDE "hal-defaults.x"

View File

@ -1,5 +1,7 @@
[target.riscv32imc-unknown-none-elf] [target.riscv32imc-unknown-none-elf]
runner = "espflash --format direct-boot --monitor"
rustflags = [ rustflags = [
"-C", "link-arg=-Tlinkall.x"
] ]
[build] [build]

View File

@ -14,17 +14,22 @@ fn main() {
File::create(out.join("memory.x")) File::create(out.join("memory.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("db-esp32c3-memory.x")) .write_all(include_bytes!("ld/db-esp32c3-memory.x"))
.unwrap(); .unwrap();
File::create(out.join("esp32c3-link.x")) File::create(out.join("esp32c3-link.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("db-esp32c3-link.x")) .write_all(include_bytes!("ld/db-esp32c3-link.x"))
.unwrap(); .unwrap();
File::create(out.join("riscv-link.x")) File::create(out.join("riscv-link.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("db-riscv-link.x")) .write_all(include_bytes!("ld/db-riscv-link.x"))
.unwrap();
File::create(out.join("linkall.x"))
.unwrap()
.write_all(include_bytes!("ld/db-linkall.x"))
.unwrap(); .unwrap();
println!("cargo:rustc-link-search={}", out.display()); println!("cargo:rustc-link-search={}", out.display());
@ -32,7 +37,6 @@ fn main() {
// Only re-run the build script when memory.x is changed, // Only re-run the build script when memory.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=memory.x"); println!("cargo:rerun-if-changed=memory.x");
println!("cargo:rustc-link-arg=-Tesp32c3-link.x");
add_defaults(); add_defaults();
prepare_trap(); prepare_trap();
@ -44,12 +48,17 @@ fn main() {
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
File::create(out.join("memory.x")) File::create(out.join("memory.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("bl-esp32c3-memory.x")) .write_all(include_bytes!("ld/bl-esp32c3-memory.x"))
.unwrap(); .unwrap();
File::create(out.join("bl-riscv-link.x")) File::create(out.join("bl-riscv-link.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("bl-riscv-link.x")) .write_all(include_bytes!("ld/bl-riscv-link.x"))
.unwrap();
File::create(out.join("linkall.x"))
.unwrap()
.write_all(include_bytes!("ld/bl-linkall.x"))
.unwrap(); .unwrap();
println!("cargo:rustc-link-search={}", out.display()); println!("cargo:rustc-link-search={}", out.display());
@ -57,8 +66,6 @@ fn main() {
// Only re-run the build script when memory.x is changed, // Only re-run the build script when memory.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=memory.x"); println!("cargo:rerun-if-changed=memory.x");
println!("cargo:rustc-link-arg=-Tmemory.x");
println!("cargo:rustc-link-arg=-Tbl-riscv-link.x");
add_defaults(); add_defaults();
prepare_trap(); prepare_trap();
@ -68,11 +75,10 @@ fn add_defaults() {
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
File::create(out.join("hal-defaults.x")) File::create(out.join("hal-defaults.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("hal-defaults.x")) .write_all(include_bytes!("ld/hal-defaults.x"))
.unwrap(); .unwrap();
println!("cargo:rustc-link-search={}", out.display()); println!("cargo:rustc-link-search={}", out.display());
println!("cargo:rustc-link-arg=-Thal-defaults.x");
} }
fn prepare_trap() { fn prepare_trap() {

View File

@ -29,4 +29,4 @@ fn main() -> ! {
writeln!(serial0, "Hello world!").unwrap(); writeln!(serial0, "Hello world!").unwrap();
block!(timer0.wait()).unwrap(); block!(timer0.wait()).unwrap();
} }
} }

View File

@ -0,0 +1,3 @@
INCLUDE "memory.x"
INCLUDE "bl-riscv-link.x"
INCLUDE "hal-defaults.x"

View File

@ -0,0 +1,2 @@
INCLUDE "esp32c3-link.x"
INCLUDE "hal-defaults.x"

View File

@ -1,10 +1,10 @@
[target.xtensa-esp32s2-none-elf] [target.xtensa-esp32s2-none-elf]
runner = "xtensa-esp32s2-elf-gdb -q -x xtensa.gdb" runner = "espflash --monitor"
[build] [build]
rustflags = [ rustflags = [
"-C", "link-arg=-nostartfiles", "-C", "link-arg=-nostartfiles",
"-C", "link-arg=-Wl,-Tlink.x", "-C", "link-arg=-Wl,-Tlinkall.x",
] ]
target = "xtensa-esp32s2-none-elf" target = "xtensa-esp32s2-none-elf"

View File

@ -5,20 +5,23 @@ fn main() {
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
File::create(out.join("memory.x")) File::create(out.join("memory.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("memory.x")) .write_all(include_bytes!("ld/memory.x"))
.unwrap(); .unwrap();
File::create(out.join("alias.x")) File::create(out.join("alias.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("rom.x")) .write_all(include_bytes!("ld/rom.x"))
.unwrap(); .unwrap();
File::create(out.join("hal-defaults.x")) File::create(out.join("hal-defaults.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("hal-defaults.x")) .write_all(include_bytes!("ld/hal-defaults.x"))
.unwrap(); .unwrap();
println!("cargo:rustc-link-arg=-Thal-defaults.x"); File::create(out.join("linkall.x"))
.unwrap()
.write_all(include_bytes!("ld/linkall.x"))
.unwrap();
println!("cargo:rustc-link-search={}", out.display()); println!("cargo:rustc-link-search={}", out.display());

2
esp32s2-hal/ld/linkall.x Normal file
View File

@ -0,0 +1,2 @@
INCLUDE "link.x"
INCLUDE "hal-defaults.x"

View File

@ -1,7 +1,7 @@
#![no_std] #![no_std]
pub use embedded_hal as ehal; pub use embedded_hal as ehal;
pub use esp_hal_common::{pac, prelude, Delay, Serial, Timer, ram}; pub use esp_hal_common::{pac, prelude, ram, Delay, Serial, Timer};
#[no_mangle] #[no_mangle]
extern "C" fn DefaultHandler(_level: u32, _interrupt: pac::Interrupt) {} extern "C" fn DefaultHandler(_level: u32, _interrupt: pac::Interrupt) {}

View File

@ -1,10 +1,10 @@
[target.xtensa-esp32s3-none-elf] [target.xtensa-esp32s3-none-elf]
runner = "xtensa-esp32s3-elf-gdb -q -x xtensa.gdb" runner = "espflash --monitor"
[build] [build]
rustflags = [ rustflags = [
"-C", "link-arg=-nostartfiles", "-C", "link-arg=-nostartfiles",
"-C", "link-arg=-Wl,-Tesp32s3.x", "-C", "link-arg=-Wl,-Tlinkall.x",
] ]
target = "xtensa-esp32s3-none-elf" target = "xtensa-esp32s3-none-elf"

View File

@ -5,25 +5,28 @@ fn main() {
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
File::create(out.join("memory.x")) File::create(out.join("memory.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("memory.x")) .write_all(include_bytes!("ld/memory.x"))
.unwrap(); .unwrap();
File::create(out.join("alias.x")) File::create(out.join("alias.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("rom.x")) .write_all(include_bytes!("ld/rom.x"))
.unwrap(); .unwrap();
File::create(out.join("hal-defaults.x")) File::create(out.join("hal-defaults.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("hal-defaults.x")) .write_all(include_bytes!("ld/hal-defaults.x"))
.unwrap(); .unwrap();
File::create(out.join("esp32s3.x")) File::create(out.join("esp32s3.x"))
.unwrap() .unwrap()
.write_all(include_bytes!("esp32s3.x")) .write_all(include_bytes!("ld/esp32s3.x"))
.unwrap(); .unwrap();
println!("cargo:rustc-link-arg=-Thal-defaults.x"); File::create(out.join("linkall.x"))
.unwrap()
.write_all(include_bytes!("ld/linkall.x"))
.unwrap();
println!("cargo:rustc-link-search={}", out.display()); println!("cargo:rustc-link-search={}", out.display());

2
esp32s3-hal/ld/linkall.x Normal file
View File

@ -0,0 +1,2 @@
INCLUDE "esp32s3.x"
INCLUDE "hal-defaults.x"