Merge "Fixed for updated SMC control, SPI loading in release"
diff --git a/capsules/src/elfloader_capsule.rs b/capsules/src/elfloader_capsule.rs
index 1345f43..22ec75a 100644
--- a/capsules/src/elfloader_capsule.rs
+++ b/capsules/src/elfloader_capsule.rs
@@ -34,7 +34,6 @@
pub struct ElfLoaderCapsule<'a, F: hil::flash::Flash + 'static> {
mailbox_hal: Option<&'static dyn MailboxHAL>,
smc_ctrl_hal: Option<&'static dyn smc_ctrl_hal::SmcCtrlHal>,
- fpga: bool,
flash: Option<&'static capsules::virtual_flash::FlashUser<'static, F>>,
flash_busy: Cell<bool>,
read_page: TakeCell<'static, F::Page>,
@@ -108,11 +107,10 @@
}
impl<'a, F: hil::flash::Flash> ElfLoaderCapsule<'a, F> {
- pub fn new(fpga: bool) -> Self {
+ pub fn new() -> Self {
Self {
mailbox_hal: None,
smc_ctrl_hal: None,
- fpga: fpga,
flash: None,
flash_busy: Cell::new(false),
read_page: TakeCell::empty(),
@@ -621,10 +619,15 @@
if minor_num == matcha_config::CMD_ELFLOADER_BOOT_SEL4 {
match self.flash {
Some(_) => {
- if self.fpga {
+ #[cfg(debug_assertions)]
+ let debug = true;
+
+ #[cfg(not(debug_assertions))]
+ let debug = false;
+ if !debug {
self.load_sel4();
} else {
- dprintf!("Simulation; bypass loading from SPI flash\r\n");
+ dprintf!("Debug; bypass loading from SPI flash\r\n");
self.mailbox_hal.map(|mb| {
matcha_utils::load_sel4(mb);
});
diff --git a/platform/src/main.rs b/platform/src/main.rs
index 752c07c..98186f1 100644
--- a/platform/src/main.rs
+++ b/platform/src/main.rs
@@ -42,7 +42,6 @@
use matcha_hal::timer_hal;
use matcha_hal::uart_hal;
use matcha_hal::smc_ctrl_hal;
-use matcha_hal::rv_core_ibex_hal;
use rv32i::csr;
pub mod chip;
@@ -289,7 +288,6 @@
)
);
- let fpga_version = rv_core_ibex_hal::RV_CORE_IBEX_SEC.fpga_version();
let elfloader_capsule = static_init!(
matcha_capsules::elfloader_capsule::ElfLoaderCapsule<
'static,
@@ -297,7 +295,7 @@
'static,
capsules::virtual_spi::VirtualSpiMasterDevice<'static, spi_host_hal::SpiHw>,
>>,
- matcha_capsules::elfloader_capsule::ElfLoaderCapsule::new(fpga_version != 0)
+ matcha_capsules::elfloader_capsule::ElfLoaderCapsule::new()
);
let mailbox_capsule = static_init!(
diff --git a/utils/src/lib.rs b/utils/src/lib.rs
index b39fced..32c544c 100644
--- a/utils/src/lib.rs
+++ b/utils/src/lib.rs
@@ -25,7 +25,7 @@
pub mod elf_loader;
pub mod tar_loader;
-pub const SMC_CONTROL_BLOCK: *mut u32 = 0x54020000 as *mut u32;
+pub const SMC_CONTROL_BLOCK: *mut u32 = 0x54020004 as *mut u32;
pub const SMC_PAGE_SIZE: usize = 4096; // SMC page size
pub const SMC_BEGIN: usize = 0x50000000; // Start of SMC memory in SEC map
@@ -77,9 +77,6 @@
dprintf!("Starting management core\n");
- let entry_point: u32 = (*sel4_elf).e_entry
- - (elf_loader::elf_virt_min(sel4_segments) - elf_loader::elf_phys_min(sel4_segments));
-
smc_send_bootmsg(mailbox, [
ui_p_reg_start,
ui_p_reg_start
@@ -91,7 +88,7 @@
(*capdl_elf).e_entry,
]);
- SMC_CONTROL_BLOCK.write_volatile(entry_point);
+ SMC_CONTROL_BLOCK.write_volatile(1);
}
}