Skip to main content

BootLoader

Struct BootLoader 

Source
pub struct BootLoader {
    pub state: State,
}
Expand description

A bootloader for CH32 devices.

Fields§

§state: State

The reported state of the bootloader after preparing for boot

Implementations§

Source§

impl BootLoader

Source

pub fn prepare<ACTIVE: NorFlash, DFU: NorFlash, STATE: NorFlash, const BUFFER_SIZE: usize>( config: BootLoaderConfig<ACTIVE, DFU, STATE>, ) -> Self

Inspect the bootloader state and perform actions required before booting, such as swapping firmware.

Panics if the swap can not be performed, see BootLoader::try_prepare for the fallible version.

Source

pub fn try_prepare<ACTIVE: NorFlash, DFU: NorFlash, STATE: NorFlash, const BUFFER_SIZE: usize>( config: BootLoaderConfig<ACTIVE, DFU, STATE>, ) -> Result<Self, BootError>

Inspect the bootloader state and perform actions required before booting, such as swapping firmware.

Source

pub unsafe fn load(self, start: u32) -> !

Boots the application.

start is an offset from the start of internal flash (the same numbering as the __bootloader_* symbols), not a bus address, so loader.load(active_start()) jumps to FLASH_BASE + active_start().

All interrupts are masked before jumping. The application startup code of qingke-rt sets up the stack pointer, the global pointer, mtvec and the interrupt controller itself, so nothing else has to be done.

§Safety

This jumps to the code (and uses the stack) placed in the active partition. The caller must make sure a valid application has been programmed there.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.