$30 off During Our Annual Pro Sale. View Details »

Keyboard Firmware in Rust

KOBA789
July 03, 2019

Keyboard Firmware in Rust

KOBA789

July 03, 2019
Tweet

More Decks by KOBA789

Other Decks in Technology

Transcript

  1. ࣗ࡞ΩʔϘʔυͷ

    ϑΝʔϜ΢ΣΞΛ

    3VTUͰॻ͘
    KOBA789

    View Slide

  2. ,0#"
    w ΫοΫύουגࣜձٕࣾज़෦σʔλج൫άϧʔϓ
    w ϝΠϯͷ࢓ࣄ͸େྔͷσʔλΛ͍͍ײ͡ʹ͢Δ͜ͱ

    ͱ͍͏͜ͱʹͳ͍ͬͯΔ

    w ࣮ࡍ͸͓΋͠Ζͦ͏ͳ͜ͱΛͳΜͰ΋΍͍ͬͯΔ
    w ݱࡏ৽ଔ೥໨

    View Slide

  3. ࣗ࡞ΩʔϘʔυ

    View Slide

  4. View Slide

  5. ࠷ۙ<͍ͭ >ਓؾͳझຯ<ཁग़య>

    View Slide

  6. https://techlife.cookpad.com/entry/2018/08/14/172130

    View Slide

  7. ฐࣾʹ΋ͨ͘͞ΜͷѪ޷Ո͕

    View Slide

  8. Ͱɺ

    View Slide

  9. https://internship.cookpad.com/2019/spring/

    View Slide

  10. Πϯλʔϯγοϓ
    ࣗ࡞ΩʔϘʔυίʔε

    View Slide

  11. View Slide

  12. څྉ΋Βͬͯࣗ࡞ΩʔϘʔυΛ

    ΍Δ͜ͱʹͳͬͯ͠·ͬͨ

    View Slide

  13. ͑Β͍ਓʮόζΒ͍ͤͨʯ
    Զʮ͡Ό͋ΧϦΩϡϥϜ͸աܹʹʯ

    View Slide

  14. ݁Ռ

    View Slide

  15. w͸Μͩ෇͚͸΋ͪΖΜ΍Δ
    w؆୯ͳిࢠճ࿏΋΍Δ
    wϓϦϯτج൘ͷઃܭ΋΍Δ
    wϑΝʔϜ΢ΣΞ͸3VTUͰॻ͘

    View Slide

  16. ϑΝʔϜ΢ΣΞ͸

    3VTUͰॻ͘

    View Slide

  17. 1SP.JDSP
    https://www.switch-science.com/catalog/1623/
    ࣗ࡞ΩʔϘʔυͰ͸Ұൠత

    View Slide

  18. 1SP.JDSPͷੴ͸"5NFHB6
    "5NFHB6͸"73

    View Slide

  19. 3VTUͰ"73͸ͩΔ͍

    View Slide

  20. ૊ΈࠐΈ3VTU͓͢͢Ί͸
    $PSUFY.γϦʔζ "3.

    3*4$7͡Όͳͯ͘͝ΊΜͳ

    View Slide

  21. ௨শCMVFQJMM
    w 45.'$͕৐ͬͯΔ
    w 45.'$͸$PSUFY.
    w 3".,#
    w $16$MPDLVQUP.)[
    w 'MBTI,# ࣮ࡍ͸ͳ͔ͥ,#

    https://wiki.stm32duino.com/index.php?title=File:STM32_Blue_Pill_perspective.jpg

    View Slide

  22. ௨শCMVFQJMM
    ͓͍͘Βͩͱࢥ͍·͔͢


    https://wiki.stm32duino.com/index.php?title=File:STM32_Blue_Pill_perspective.jpg

    View Slide

  23. ௨শCMVFQJMM

    https://wiki.stm32duino.com/index.php?title=File:STM32_Blue_Pill_perspective.jpg

    View Slide

  24. ։ൃͷͨΊͷπʔϧ

    View Slide

  25. ͍͍ͩͨ

    5IF&NCFEEFE3VTU#PPL

    ʹॻ͍ͯ͋ΔͷͰলུ

    View Slide

  26. ͱ͘ʹศརͳ΋ͷΛ঺հ

    View Slide

  27. #MBDL.BHJD1SPCF
    w 1SPHSBNNFS%FCVHHFS
    w ιϑτ΢ΣΞ͸Φʔϓϯιʔε
    w ϋʔυ΢ΣΞ͸CMVFQJMMͳͲ͕࢖͑Δ
    w ࢲ͸CMBDLQJMMΛ࢖ͬͯ࡞ͬͨ
    w ϑϦεΫέʔεͰ͍͍ײ͡

    View Slide

  28. View Slide

  29. cargo runͰ͖Δ ຊ೔ೋ౓໨

    Demo

    View Slide

  30. HEC࢖͑Δ
    ϒϨʔΫϙΠϯτషΕΔ
    ϝϞϦμϯϓͰ͖Δ

    View Slide

  31. println!Ͱ͖Δ
    Demo

    View Slide

  32. cortex_m_semihosting

    View Slide

  33. ૊ΈࠐΈϓϩάϥϛϯάͰ

    ආ͚ΒΕͳ͍΋ͷ

    View Slide

  34. पลػثϖϦϑΣϥϧ

    View Slide

  35. ϖϦϑΣϥϧͷػೳݺͼग़͠

    ϨδελΞΫηε

    View Slide

  36. ΞηϯϒϦ
    /P

    View Slide

  37. JO$
    ϝʔΧʔ͕ϥΠϒϥϦΛఏڙ
    JO3VTU
    ศརΫϨʔτ͕͋Δ

    View Slide

  38. TWESVTU
    wΈΜͳ͍͖ͩ͢ίʔυδΣωϨʔλ
    wσόΠεఆٛϑΝΠϧTWE͔Β
    wϨδελΞΫηεؔ਺ͷίʔυΛు͘

    View Slide

  39. TUNG
    wTWESVTUͰు͔ΕͨίʔυΛ
    w͍͍ײ͡ʹௐ੔ͨ͠ΫϨʔτ
    wTUNGͰ࢖͑Δ

    View Slide

  40. -νΧͱ͔͸Ͱ͖Δ

    View Slide

  41. View Slide

  42. ͔͠͠ɺ

    View Slide

  43. ΩʔϘʔυͳͷͰ
    64#)*%Λ

    ͠Ό΂Βͳ͍ͱ͍͚ͳ͍

    View Slide

  44. ϨδελΛ਺ݸୟ͘͘Β͍Ͱ͸
    64#͸͠Ό΂Εͳ͍

    View Slide

  45. ෼ް͍64#ͷ࢓༷ॻͱ

    ΍΍ް͍64#)*%ͷ࢓༷ॻͱ

    Ϋι෼ް͍45.ͷ࢓༷ॻΛಡΜͰ
    ద੾ͳϨδελɾϝϞϦΛ

    ͨ͘͞ΜಡΈॻ͖͢ΔίʔυΛॻ͘ඞཁΞϦ

    View Slide

  46. ࣮૷͠·ͨ͠

    View Slide

  47. 64#)*%࣮૷΍Γ͔ͨ
    w 64#ͷ࢓༷ΛಡΉ
    w 64#)*%$MBTTͷ࢓༷ΛಡΉ
    w 45.'ͷϚχϡΞϧΛಡΉ
    w ͕ۭ݀͘΄ͲಡΉ
    w MJCPQFODNͷίʔυΛࢀߟʹ͢Δ
    w 3VTUͰॻ͘ˠϩδΞφͰݟΔˠ௚͢
    w ҎԼ܁Γฦ͠

    View Slide

  48. Զ͸Ӧۀ೔͘Β͍͔͔ͬͨ

    View Slide

  49. ͜͜ͰϩδΞφ
    Demo

    View Slide

  50. 3VTUؔ܎ͳ͍ؾ͕͢Δͳ

    View Slide

  51. ίʔυยΛͪΐͬͱ঺հ

    View Slide

  52. 64#ͷ௨৴Ͱ࢖͏όοϑΝ

    View Slide

  53. https://www.stmcu.jp/design/document/reference_manual/51428/
    IUUQTXXXTUNDVKQEFTJHOEPDVNFOUSFGFSFODF@NBOVBM

    View Slide

  54. ͜ΕΛ͍͍ײ͡ʹϞσϦϯά

    View Slide

  55. View Slide

  56. VolatileCell

    View Slide

  57. VolatileCell
    w ϝϞϦ΁ͷWPMBUJMFΞΫηεΛ
    w ͍͍ײ͡ʹ͢ΔϥΠϒϥϦ
    w std::ptr::read_volatileͱ͔͸unsafeͰࠔΔ

    View Slide

  58. MJCPQFODNΛ

    ࢀߟʹ͸͕ͨ͠ʜʜ

    View Slide

  59. 3VTUಛ༗ͷ೉͠͞
    w ϓϩτίϧͷ࣮૷͸εςʔτϚγϯʹͳΓ͕ͪ
    w εςʔτΛܕ҆શʹ͢Δͷ͸ͪΐͬͱίπ͕͍Δ
    w งғؾͰߏ଄࡞Δͱ్தͰ٧Ή
    w ݩͷ࣮૷ΛಡΜͰ
    $ͷࡶ͞ʹΩϨΔ

    View Slide

  60. View Slide

  61. View Slide

  62. ͠Γ͖ΕͱΜ΅

    View Slide