RISC-VボードでRustを動かす話
by
Daniel
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
RISC-VボードでRustを動かす話
Slide 2
Slide 2 text
⾃⼰紹介 Self Self { { name name: : " ダニエル" " ダニエル", , school school: : " 東京農⼯⼤学" " 東京農⼯⼤学", , twitter twitter: : "@daniel_program" "@daniel_program", , } }
Slide 3
Slide 3 text
RISC-V
Slide 4
Slide 4 text
RISC-Vとは… CPUのオープンソースな命令セット(ISA)の⼀種
Slide 5
Slide 5 text
HIFive RevB HIFive RevB のページ
Slide 6
Slide 6 text
HIFive RevB Hifive RV IMAC Rust riscv imac-unknown-none-elf このボード向けにコンパイルできるのでは?
Slide 7
Slide 7 text
やってみた C⾔語からRustを呼び出す Rust単体で実⾏する
Slide 8
Slide 8 text
Cから呼び出す rustから使いやすいようにCを書く rustを書く staticlib として書き出す cbindgenで.h ファイルを作る ⼀緒にコンパイルする
Slide 9
Slide 9 text
rustから使いやすいようにCを書く freedom-e-sdk void void led_on led_on( () ) { {. .. .. .} } void void led_off led_off( () ) { {. .. .. .} } int int main main( () ) { { . .. .. . blink_rs blink_rs( () ); ; } }
Slide 10
Slide 10 text
rustを書く extern extern { { fn fn led_on led_on( () ); ; fn fn led_off led_off( () ); ; } } #[no_mangle] #[no_mangle] pub pub extern extern fn fn blink_rs blink_rs( () ) { { loop loop { { unsafe unsafe{ { led_on led_on( () ); ; } } delay delay( () ); ; unsafe unsafe{ { led_off led_off( () ); ; } } delay delay( () ); ; } } } }
Slide 11
Slide 11 text
staticlib Cargo.toml [ [package package] ] name name = = "blink" "blink" version version = = "0.1.0" "0.1.0" authors authors = = [ ["Daniel" "Daniel"] ] edition edition = = "2018" "2018" [ [lib lib] ] crate-type crate-type= =[ ["staticlib" "staticlib"] ] [ [dependencies dependencies] ]
Slide 12
Slide 12 text
cbindgen $ cargo $ cargo install install cbindgen cbindgen $ cbindgen $ cbindgen . . .. .... .. void blink_rs void blink_rs( (void void) ); ;
Slide 13
Slide 13 text
⼀緒にコンパイルする コンパイラにstaticlib も投げればコンパイルしてくれる。 今回はMakefile の依存関係に書くだけでコンパイルしてくれた。
Slide 14
Slide 14 text
Rust単体で実⾏する Github - riscv-rust-quickstart https://github.com/riscv-rust/riscv-rust-quickstart
Slide 15
Slide 15 text
"cargo run " で実⾏ができる!
Slide 16
Slide 16 text
Example leds_blinkでLチカができている
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
実⾏はしっかりできます
Slide 19
Slide 19 text
まとめ riscvボードでRustは動かせる。 Cとつなげるのは⾯倒くさい ライブラリ周りがまだしっかりしていない
Slide 20
Slide 20 text
ありがとうございます! @daniel_program