Module capsules_extra::sdcard
source · Expand description
Provides driver for accessing an SD Card and a userspace Driver.
This allows initialization and block reads or writes on top of SPI.
§Usage
ⓘ
let spi_mux = components::spi::SpiMuxComponent::new(
&base_peripherals.spim0,
dynamic_deferred_caller
).finalize(components::spi_mux_component_helper!(nrf52833::spi::SPIM));
base_peripherals.spim0.configure(
nrf52833::pinmux::Pinmux::new(SPI_MOSI_PIN as u32), // SD MOSI
nrf52833::pinmux::Pinmux::new(SPI_MISO_PIN as u32), // SD MISO
nrf52833::pinmux::Pinmux::new(SPI_SCK_PIN as u32), // SD SCK
);
let sdcard_spi = components::spi::SpiComponent::new(
spi_mux,
&nrf52833_peripherals.gpio_port[SPI_CS_PIN]
).finalize(components::spi_component_helper!(nrf52833::spi::SPIM));
let sdcard_virtual_alarm = static_init!(
capsules::virtual_alarm::VirtualMuxAlarm<'static, nrf52833::rtc::Rtc>,
capsules::virtual_alarm::VirtualMuxAlarm::new(mux_alarm));
sdcard_virtual_alarm.setup();
let sdcard_tx_buffer = static_init!([u8; capsules::sdcard::TXRX_BUFFER_LENGTH],
[0; capsules::sdcard::TXRX_BUFFER_LENGTH]);
let sdcard_rx_buffer = static_init!([u8; capsules::sdcard::TXRX_BUFFER_LENGTH],
[0; capsules::sdcard::TXRX_BUFFER_LENGTH]);
let sdcard = static_init!(
capsules::sdcard::SDCard<
'static,
capsules::virtual_alarm::VirtualMuxAlarm<'static, nrf52833::rtc::Rtc>>,
capsules::sdcard::SDCard::new(sdcard_spi,
sdcard_virtual_alarm,
Some(&SD_DETECT_PIN),
sdcard_tx_buffer,
sdcard_rx_buffer));
sdcard_spi.set_client(sdcard);
sdcard_virtual_alarm.set_alarm_client(sdcard);
SD_DETECT_PIN.set_client(sdcard);
let sdcard_kernel_buffer = static_init!([u8; capsules::sdcard::KERNEL_BUFFER_LENGTH],
[0; capsules::sdcard::KERNEL_BUFFER_LENGTH]);
let sdcard_driver = static_init!(
capsules::sdcard::SDCardDriver<
'static,
capsules::virtual_alarm::VirtualMuxAlarm<'static, nrf52833::rtc::Rtc>>,
capsules::sdcard::SDCardDriver::new(
sdcard,
sdcard_kernel_buffer,
board_kernel.create_grant(
capsules::sdcard::DRIVER_NUM,
&memory_allocation_capability)));
sdcard.set_client(sdcard_driver);
Structs§
- Holds buffers and whatnot that the application has passed us.
- SD Card capsule, capable of being built on top of by other kernel capsules
- Application driver for SD Card capsule, layers on top of SD Card capsule This is used if the SDCard is going to be attached directly to userspace syscalls. SDCardDriver can be ignored if another capsule is going to build off of the SDCard instead
Constants§
- Buffer for SD card driver, assigned in board
main.rs
files - Buffers used for SD card transactions, assigned in board
main.rs
files Constraints:
Traits§
- Callback functions from SDCard