rp: add precompiled boot2 to avoid depending on gcc

This commit is contained in:
Dario Nieuwenhuis
2021-03-29 22:28:36 +02:00
parent 4371302da8
commit d938b95430
8 changed files with 31 additions and 25 deletions

17
embassy-rp/build.rs Normal file
View File

@ -0,0 +1,17 @@
use std::fs::{self, File};
use std::io::Write;
use std::path::{Path, PathBuf};
use std::{env, ffi::OsStr};
fn main() {
// Put the linker script somewhere the linker can find it
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
let link_x = include_bytes!("link-rp.x.in");
let mut f = File::create(out.join("link-rp.x")).unwrap();
f.write_all(link_x).unwrap();
println!("cargo:rustc-link-search={}", out.display());
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=link-rp.x.in");
}

8
embassy-rp/link-rp.x.in Normal file
View File

@ -0,0 +1,8 @@
SECTIONS {
/* ### Boot loader */
.boot2 ORIGIN(BOOT2) :
{
KEEP(*(.boot2));
} > BOOT2
}

BIN
embassy-rp/src/boot2.bin Normal file

Binary file not shown.

View File

@ -1,5 +1,9 @@
use crate::{pac, pll, resets};
#[link_section = ".boot2"]
#[used]
pub static BOOT2: [u8; 256] = *include_bytes!("boot2.bin");
#[non_exhaustive]
pub struct Config {}