From 58a599303f3e932c822eee2381c86f14d07b29c9 Mon Sep 17 00:00:00 2001 From: Ruohai Zhu <1132370844@qq.com> Date: Mon, 18 Mar 2024 00:29:31 +0800 Subject: [PATCH] Add support for Raspi4 --- Cargo.lock | 2 +- crates/driver_block/Cargo.toml | 2 +- modules/ruxhal/src/platform/aarch64_raspi/mod.rs | 8 ++++++-- platforms/aarch64-raspi4.toml | 1 + scripts/make/raspi4.mk | 4 ++-- tools/raspi4/X1_JTAG_boot/jtag_boot_rpi4.img | Bin 0 -> 9368 bytes 6 files changed, 11 insertions(+), 6 deletions(-) create mode 100755 tools/raspi4/X1_JTAG_boot/jtag_boot_rpi4.img diff --git a/Cargo.lock b/Cargo.lock index 33021e148..4d8829975 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -236,7 +236,7 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bcm2835-sdhci" version = "0.1.0" -source = "git+https://github.com/lhw2002426/bcm2835-sdhci.git?rev=e974f16#e974f168efa72b470a01f61bdef32240c66f54fc" +source = "git+https://github.com/lhw2002426/bcm2835-sdhci.git?rev=bf07a72#bf07a727e07ba3f3f276d9bead2401cdb343d019" dependencies = [ "aarch64-cpu", "log", diff --git a/crates/driver_block/Cargo.toml b/crates/driver_block/Cargo.toml index c81c00001..c66f8763c 100644 --- a/crates/driver_block/Cargo.toml +++ b/crates/driver_block/Cargo.toml @@ -17,4 +17,4 @@ default = [] [dependencies] log = "0.4" driver_common = { path = "../driver_common" } -bcm2835-sdhci = { git = "https://github.com/lhw2002426/bcm2835-sdhci.git", rev = "e974f16", optional = true } +bcm2835-sdhci = { git = "https://github.com/lhw2002426/bcm2835-sdhci.git", rev = "bf07a72", optional = true } diff --git a/modules/ruxhal/src/platform/aarch64_raspi/mod.rs b/modules/ruxhal/src/platform/aarch64_raspi/mod.rs index 18e692cb0..57d2fda90 100644 --- a/modules/ruxhal/src/platform/aarch64_raspi/mod.rs +++ b/modules/ruxhal/src/platform/aarch64_raspi/mod.rs @@ -42,14 +42,18 @@ extern "C" { fn rust_main_secondary(cpu_id: usize); } -pub(crate) unsafe extern "C" fn rust_entry(cpu_id: usize, dtb: usize) { +pub(crate) unsafe extern "C" fn rust_entry(cpu_id: usize) { crate::mem::clear_bss(); crate::arch::set_exception_vector_base(exception_vector_base as usize); crate::arch::write_page_table_root0(0.into()); // disable low address access + unsafe { + // Set the physical address of the dtb file to 0x03000000 in config.txt + dtb::init(crate::mem::phys_to_virt(0x03000000.into()).as_ptr()); + } crate::cpu::init_primary(cpu_id); super::aarch64_common::pl011::init_early(); super::aarch64_common::generic_timer::init_early(); - rust_main(cpu_id, dtb); + rust_main(cpu_id, 0x03000000); } #[cfg(feature = "smp")] diff --git a/platforms/aarch64-raspi4.toml b/platforms/aarch64-raspi4.toml index f204d1d1a..710b24c7a 100644 --- a/platforms/aarch64-raspi4.toml +++ b/platforms/aarch64-raspi4.toml @@ -18,6 +18,7 @@ kernel-base-vaddr = "0xffff_0000_0008_0000" phys-virt-offset = "0xffff_0000_0000_0000" # MMIO regions with format (`base_paddr`, `size`). mmio-regions = [ + ["0xFE34_0000", "0x1000"], # SD card ["0xFE20_1000", "0x1000"], # PL011 UART ["0xFF84_1000", "0x8000"], # GICv2 ] diff --git a/scripts/make/raspi4.mk b/scripts/make/raspi4.mk index 66eea697b..b8ff8a0d1 100644 --- a/scripts/make/raspi4.mk +++ b/scripts/make/raspi4.mk @@ -89,6 +89,6 @@ openocd: ## Start GDB session ##------------------------------------------------------------------------------ gdb: RUSTC_MISC_ARGS += -C debuginfo=2 -gdb: $(KERNEL_ELF) +gdb: $(OUT_ELF) $(call color_header, "Launching GDB") - @$(DOCKER_GDB) gdb-multiarch -q $(KERNEL_ELF) + @$(DOCKER_GDB) gdb-multiarch -q $(OUT_ELF) diff --git a/tools/raspi4/X1_JTAG_boot/jtag_boot_rpi4.img b/tools/raspi4/X1_JTAG_boot/jtag_boot_rpi4.img new file mode 100755 index 0000000000000000000000000000000000000000..b4bca1b7254179abfb801889656da895c4197ab6 GIT binary patch literal 9368 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