RISC-VボードでRustを動かす話
by
Daniel
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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