Slide 1

Slide 1 text

1 Rust Kansai Meetup #5 ٕज़ॻయ7Ͱݟ͚ͭͨ ϕΞϝλϧRustຊ 2019೥10݄5೔(౔) @ηϯελΠϜδϟύϯ גࣜձࣾಹ༝ଟ԰ Ճ౻༐໵

Slide 2

Slide 2 text

ࣗݾ঺հ: Ճ౻ ༐໵ • ιϑτ΢ΣΞΤϯδχΞʢ2000೥ʙʣ • גࣜձࣾಹ༝ଟ԰ ୅දऔక໾ʢ2007೥ʙʣ ͳ Ώ ͨ ΍ • झຯ: • ΋ͷͮ͘Γશൠʢιϑτ/ϋʔυʣ • 3DϓϦϯλʢ2013೥ʙʣ • ϘϧμϦϯάʢ2011೥ʙʣ 2 yuyakato1984 nayutaya

Slide 3

Slide 3 text

ٕज़ॻయ 3

Slide 4

Slide 4 text

4 ٕज़ॻయͱ͸ʁ ৽͍ٕ͠ज़ʹग़ձ͑Δ ͓ࡇΓͰ͢ɻ https://techbookfest.org/ ΑΓҾ༻ ٕज़ಉਓࢽͷଈചձ ௚ۙͰ͸2019೥9݄22೔(೔)ʹ஑ାʹͯ։࠵ ࢀՃͨ͠ਓ

Slide 5

Slide 5 text

ٕज़ॻయ7ͷઓར඼ 5 ↑࢓ࣄ࿮Ͱ6࡭ ←झຯ࿮Ͱ5࡭ Λ ͓͔͍ͭ ͯ͠΋Β͍·ͨ͠ ͋Γ͕ͱ͏ʂI܅

Slide 6

Slide 6 text

ϕΞϝλϧ 6

Slide 7

Slide 7 text

ϕΞϝλϧͱ͸ʁ 7 ʲϕΞϝλϧʳʪ໊ʫ Bare Metal ௚༁Ͱ͸ʮ࿐ग़ͨۚ͠ଐʯʮΉ͖ग़͠ͷۚଐʯɻ సͯ͡ɺOSͳͲ͕Πϯετʔϧ͞Ε͍ͯͳ͍ɺ·ͬ͞Βͳ ίϯϐϡʔλɺ·ͨ͸ετϨʔδɻ

Slide 8

Slide 8 text

ϕΞϝλϧͱ͸ʁ 8

Slide 9

Slide 9 text

ϕΞϝλϧͱ͸ʁ 8 OSͷͳ͍Ϛγϯ ཁ͢Δʹ

Slide 10

Slide 10 text

9 RustΛѪ͢Δ ϕΞϝλϧΛѪ͢Δ ͔ͭ ͚ͩʹ ࢗ͞Δ3࡭Λ঺հ͠·͢ ͜ͷੈʹԿਓ͍Δ͔෼͔Βͳ͍ ͻͱ

Slide 11

Slide 11 text

঺հ͢Δ3࡭ 10 M5StackͰ࢝ΊΔ ૊ΈࠐΈRust Rust on Bare-metal Raspberry Pi Rust on Bare-metal Raspberry Pi Vol.2

Slide 12

Slide 12 text

1࡭໨ 11

Slide 13

Slide 13 text

M5StackͰ࢝ΊΔ૊ΈࠐΈRust 12 Kenta IDA ஶ / 58ϖʔδ μ΢ϯϩʔυ൛ 500ԁ https://booth.pm/ja/items/1569213 ৽ץ

Slide 14

Slide 14 text

M5StackɺESP32ͱ͸ʁ 13 Wi-FiɺBluetoothΛ಺ଂ͢Δ ҆Ձ͔ͭଟػೳͳϚΠίϯ ESP32ɺӷথσΟεϓϨΠɺ ϘλϯɺόοςϦͳͲ͕಺ଂ͞Εͨ ίϯύΫτͳ։ൃϞδϡʔϧ ͜ͷϞδϡʔϧͷ தʹؚ·ΕΔνοϓ ελοΫͰ͖ΔΑʂ US$5͘Β͍Ͱങ͑ΔΑʂ

Slide 15

Slide 15 text

ର৅ಡऀ • M5Stackɺ·ͨ͸ESP32ʹ৮ͬͨ͜ͱ͕͋Δ • Arduino IDEɺPlatform IOɺ·ͨ͸ESP-IDFͰ
 ϓϩάϥϜΛ࡞ͬͨ͜ͱ͕͋Δ • RustͷʮHello, worldʯ͸ܦݧࡁΈ 14 ֘౰͢Δਓ

Slide 16

Slide 16 text

͜ͷຊͷεΰΠͱ͜Ζ 15

Slide 17

Slide 17 text

͜ͷຊͷεΰΠͱ͜Ζ 15 LLVMɺrustc ͷϏϧυ͔Β͸͡·Δ ESP32ͷCPU͸TensilicaࣾͷXtensa LX6

Slide 18

Slide 18 text

QiitaهࣄΛॻ͖·ͨ͠ 16 ESP32 + RustͰ Hello world https://qiita.com/yuyakato/items/c11de0a43d14dea6c9dd Ϗϧυ͢Δ͚ͩͰ 30෼ʙ2͔͔࣌ؒΓ·͢

Slide 19

Slide 19 text

Ωʔϫʔυ #[no_std] #[no_mangle] #[global_allocator] #[alloc_error_handler] extern “C" bindgen FreeRTOS 17

Slide 20

Slide 20 text

2࡭໨ 18

Slide 21

Slide 21 text

Rust on Bare-metal Raspberry Pi 19 naotaco ஶ / 62ϖʔδ ෺ཧຊ 800ԁ https://booth.pm/ja/items/1318760 Kindle൛ 700ԁ https://www.amazon.co.jp/dp/B07QG3WX3T طץ

Slide 22

Slide 22 text

ର৅ಡऀ • OSͷແ͍ੈքʹಌΕ͍ͯΔ • Raspberry Pi 3Λ࣋ͯ༨͍ͯ͠Δ • ϋʔυ΢ΣΞͷ͜ͱΛ΋ͬͱ஌Γ͍ͨ 20 ※ͪͳΈʹॻ੶ʹ͸ॻ͍ͯ͋Γ·ͤΜ ֘౰͢Δਓ

Slide 23

Slide 23 text

Raspberry Piͱ͸ʁ 21 ͜Ε͸આ໌ෆཁͩͱࢥΘΕΔͷͰলུ

Slide 24

Slide 24 text

͜ͷຊͷεΰΠͱ͜Ζ 22

Slide 25

Slide 25 text

͜ͷຊͷεΰΠͱ͜Ζ 22 mainؔ਺·Ͱ͕௕͍ ϕΞϝλϧ͋Δ͋Δ

Slide 26

Slide 26 text

Ωʔϫʔυ #[no_std] #[global_allocator] Arm Cortex-A53 SoC Ϩδελ DMA MMIO ϒʔτϩʔμ UART registerΫϨʔτ compiler_fence fence JTAG OpenOCD gdb 23 DMA: Direct Memory Access MMIO: Memory Mapped I/O

Slide 27

Slide 27 text

3࡭໨ 24

Slide 28

Slide 28 text

Rust on Bare-metal Raspberry Pi Vol.2 25 naotaco ஶ / 50ϖʔδ ෺ཧຊ 700ԁ https://booth.pm/ja/items/1575818 ৽ץ

Slide 29

Slide 29 text

͜ͷຊͷεΰΠͱ͜Ζ 26

Slide 30

Slide 30 text

͜ͷຊͷεΰΠͱ͜Ζ 26 ಺༰͕΄΅DMAC DMAC: DMA Controller

Slide 31

Slide 31 text

Ωʔϫʔυ DMAC #[repr(C)] ΩϟογϡϝϞϦ 27 DMAC: DMA Controller

Slide 32

Slide 32 text

·ͱΊ • ·͢·͢޿͕ΔRustͷద༻ൣғ • ϕΞϝλϧ͔Θ͍͍ΑϕΞϝλϧ 28

Slide 33

Slide 33 text

Let's dive into bare metal with Rust 29