Add library with Rust bindings to target_f1 code (#68)
* Move flipper-core into a workspace * Fix target build rules * Add flipper-f1-sys library * Add flipper-f1-sys dependency to flipper-core * Remove apparently useless includes * Build and export HAL statics * Disable Rust dependency detection for target_f1 build * Install libclang-10-dev in docker * Build Rust libs every time * remove duplicate sources from make * clean build different example * wip add example fn * Implement rust_uart_write() * fix rebuild instructions for target_f1 Co-authored-by: aanper <mail@s3f.ru>
This commit is contained in:
39
core-rs/flipper-core/src/lib.rs
Normal file
39
core-rs/flipper-core/src/lib.rs
Normal file
@@ -0,0 +1,39 @@
|
||||
#![no_std]
|
||||
|
||||
#[cfg(target_arch = "arm")]
|
||||
use flipper_f1_sys::hal::{HAL_UART_Transmit_IT, huart1};
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn add(a: u32, b: u32) -> u32 {
|
||||
a + b
|
||||
}
|
||||
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn rust_uart_write() {
|
||||
let string = "Rust test string\n";
|
||||
let bytes = string.as_bytes();
|
||||
|
||||
#[cfg(target_arch = "arm")]
|
||||
unsafe {
|
||||
HAL_UART_Transmit_IT(&mut huart1, bytes.as_ptr() as *mut _, bytes.len() as u16);
|
||||
}
|
||||
#[cfg(not(target_arch = "arm"))]
|
||||
unsafe {
|
||||
extern "C" {
|
||||
fn write(handle: i32, ptr: *const u8, size: usize) -> isize;
|
||||
}
|
||||
|
||||
write(1, bytes.as_ptr(), bytes.len());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mod aux {
|
||||
use core::panic::PanicInfo;
|
||||
|
||||
#[panic_handler]
|
||||
fn panic(_info: &PanicInfo) -> ! {
|
||||
loop { continue }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user