Skip to content

Commit

Permalink
boards: rpi: use start()
Browse files Browse the repository at this point in the history
  • Loading branch information
bradjc committed Mar 8, 2024
1 parent 67acd8f commit b33c787
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 45 deletions.
31 changes: 16 additions & 15 deletions boards/nano_rp2040_connect/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,17 +253,15 @@ fn init_clocks(peripherals: &Rp2040DefaultPeripherals) {
/// removed when this function returns. Otherwise, the stack space used for
/// these static_inits is wasted.
#[inline(never)]
unsafe fn create_peripherals() -> &'static mut Rp2040DefaultPeripherals<'static> {
static_init!(Rp2040DefaultPeripherals, Rp2040DefaultPeripherals::new())
}

/// Main function called after RAM initialized.
#[no_mangle]
pub unsafe fn main() {
pub unsafe fn start() -> (
&'static kernel::Kernel,
NanoRP2040Connect,
&'static rp2040::chip::Rp2040<'static, Rp2040DefaultPeripherals<'static>>,
) {
// Loads relocations and clears BSS
rp2040::init();

let peripherals = create_peripherals();
let peripherals = static_init!(Rp2040DefaultPeripherals, Rp2040DefaultPeripherals::new());
peripherals.resolve_dependencies();

// Reset all peripherals except QSPI (we might be booting from Flash), PLL USB and PLL SYS
Expand Down Expand Up @@ -322,7 +320,6 @@ pub unsafe fn main() {

let process_management_capability =
create_capability!(capabilities::ProcessManagementCapability);
let main_loop_capability = create_capability!(capabilities::MainLoopCapability);
let memory_allocation_capability = create_capability!(capabilities::MemoryAllocationCapability);

let mux_alarm = components::alarm::AlarmMuxComponent::new(&peripherals.timer)
Expand Down Expand Up @@ -613,10 +610,14 @@ pub unsafe fn main() {
debug!("{:?}", err);
});

board_kernel.kernel_loop(
&nano_rp2040_connect,
chip,
Some(&nano_rp2040_connect.ipc),
&main_loop_capability,
);
(board_kernel, nano_rp2040_connect, chip)
}

/// Main function called after RAM initialized.
#[no_mangle]
pub unsafe fn main() {
let main_loop_capability = create_capability!(capabilities::MainLoopCapability);

let (board_kernel, platform, chip) = start();
board_kernel.kernel_loop(&platform, chip, Some(&platform.ipc), &main_loop_capability);
}
31 changes: 16 additions & 15 deletions boards/pico_explorer_base/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -263,17 +263,15 @@ fn init_clocks(peripherals: &Rp2040DefaultPeripherals) {
/// removed when this function returns. Otherwise, the stack space used for
/// these static_inits is wasted.
#[inline(never)]
unsafe fn create_peripherals() -> &'static mut Rp2040DefaultPeripherals<'static> {
static_init!(Rp2040DefaultPeripherals, Rp2040DefaultPeripherals::new())
}

/// Main function called after RAM initialized.
#[no_mangle]
pub unsafe fn main() {
pub unsafe fn start() -> (
&'static kernel::Kernel,
PicoExplorerBase,
&'static rp2040::chip::Rp2040<'static, Rp2040DefaultPeripherals<'static>>,
) {
// Loads relocations and clears BSS
rp2040::init();

let peripherals = create_peripherals();
let peripherals = static_init!(Rp2040DefaultPeripherals, Rp2040DefaultPeripherals::new());
peripherals.resolve_dependencies();

// Reset all peripherals except QSPI (we might be booting from Flash), PLL USB and PLL SYS
Expand Down Expand Up @@ -335,7 +333,6 @@ pub unsafe fn main() {

let process_management_capability =
create_capability!(capabilities::ProcessManagementCapability);
let main_loop_capability = create_capability!(capabilities::MainLoopCapability);
let memory_allocation_capability = create_capability!(capabilities::MemoryAllocationCapability);

let mux_alarm = components::alarm::AlarmMuxComponent::new(&peripherals.timer)
Expand Down Expand Up @@ -697,10 +694,14 @@ pub unsafe fn main() {
debug!("{:?}", err);
});

board_kernel.kernel_loop(
&pico_explorer_base,
chip,
Some(&pico_explorer_base.ipc),
&main_loop_capability,
);
(board_kernel, pico_explorer_base, chip)
}

/// Main function called after RAM initialized.
#[no_mangle]
pub unsafe fn main() {
let main_loop_capability = create_capability!(capabilities::MainLoopCapability);

let (board_kernel, platform, chip) = start();
board_kernel.kernel_loop(&platform, chip, Some(&platform.ipc), &main_loop_capability);
}
31 changes: 16 additions & 15 deletions boards/raspberry_pi_pico/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,17 +254,15 @@ fn init_clocks(peripherals: &Rp2040DefaultPeripherals) {
/// removed when this function returns. Otherwise, the stack space used for
/// these static_inits is wasted.
#[inline(never)]
unsafe fn create_peripherals() -> &'static mut Rp2040DefaultPeripherals<'static> {
static_init!(Rp2040DefaultPeripherals, Rp2040DefaultPeripherals::new())
}

/// Main function called after RAM initialized.
#[no_mangle]
pub unsafe fn main() {
pub unsafe fn start() -> (
&'static kernel::Kernel,
RaspberryPiPico,
&'static rp2040::chip::Rp2040<'static, Rp2040DefaultPeripherals<'static>>,
) {
// Loads relocations and clears BSS
rp2040::init();

let peripherals = create_peripherals();
let peripherals = static_init!(Rp2040DefaultPeripherals, Rp2040DefaultPeripherals::new());
peripherals.resolve_dependencies();

// Reset all peripherals except QSPI (we might be booting from Flash), PLL USB and PLL SYS
Expand Down Expand Up @@ -323,7 +321,6 @@ pub unsafe fn main() {

let process_management_capability =
create_capability!(capabilities::ProcessManagementCapability);
let main_loop_capability = create_capability!(capabilities::MainLoopCapability);
let memory_allocation_capability = create_capability!(capabilities::MemoryAllocationCapability);

let mux_alarm = components::alarm::AlarmMuxComponent::new(&peripherals.timer)
Expand Down Expand Up @@ -606,10 +603,14 @@ pub unsafe fn main() {
debug!("{:?}", err);
});

board_kernel.kernel_loop(
&raspberry_pi_pico,
chip,
Some(&raspberry_pi_pico.ipc),
&main_loop_capability,
);
(board_kernel, raspberry_pi_pico, chip)
}

/// Main function called after RAM initialized.
#[no_mangle]
pub unsafe fn main() {
let main_loop_capability = create_capability!(capabilities::MainLoopCapability);

let (board_kernel, platform, chip) = start();
board_kernel.kernel_loop(&platform, chip, Some(&platform.ipc), &main_loop_capability);
}

0 comments on commit b33c787

Please sign in to comment.