#![no_std] #![no_main] use core::panic::PanicInfo; use cortex_ar::asm::nop; use zynq7000_rt as _; /// One user LED is MIO7 const ZEDBOARD_LED_MASK: u32 = 1 << 7; /// Entry point (not called like a normal main function) #[unsafe(no_mangle)] pub extern "C" fn boot_core(cpu_id: u32) -> ! { if cpu_id != 0 { panic!("unexpected CPU ID {}", cpu_id); } main(); } #[unsafe(export_name = "main")] pub fn main() -> ! { let mut gpio = unsafe { zynq7000::gpio::Gpio::new_mmio() }; gpio.modify_dirm_0(|v| v | ZEDBOARD_LED_MASK); gpio.modify_out_en_0(|v| v | ZEDBOARD_LED_MASK); loop { gpio.modify_out_0(|v| v ^ ZEDBOARD_LED_MASK); for _ in 0..1_000_000 { nop(); } } } /// Panic handler #[panic_handler] fn panic(_info: &PanicInfo) -> ! { loop {} }