Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RustのHAL(avr-hal)でLeafonyを動かした件
Search
k-abe
October 24, 2021
Programming
1
110
RustのHAL(avr-hal)でLeafonyを動かした件
2021/10/24 TOPPERS開発者会議 LT発表資料
k-abe
October 24, 2021
Tweet
Share
More Decks by k-abe
See All by k-abe
μT-Kernel×AIの学習環境
kabe
0
25
【連続講座3】デザインパターンを学び、ソフトウェア設計に生かそう(Facade・Observer・State)
kabe
0
130
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
84
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
76
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
120
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
530
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
890
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
520
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
120
Other Decks in Programming
See All in Programming
Data-Centric Kaggle
isax1015
2
780
組織で育むオブザーバビリティ
ryota_hnk
0
180
CSC307 Lecture 09
javiergs
PRO
1
840
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
770
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
460
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
170
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
410
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Speed Design
sergeychernyshev
33
1.5k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Making Projects Easy
brettharned
120
6.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Skip the Path - Find Your Career Trail
mkilby
0
57
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
The Cult of Friendly URLs
andyhume
79
6.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Everyday Curiosity
cassininazir
0
130
Transcript
2021.10.24 ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ Ѩ෦ߞೋ
[email protected]
RustͷHAL(avr-hal)ͰLeafonyΛಈ͔ͨ݅͠ TOPPERS։ൃऀձٞ2021
• ࣗݾհ • ͓͢Δ͜ͱ • ༻ޠઆ໌ • ։ൃڥ • ۩ମత࡞ۀ
• ݁Ռ • ՝ ࣍
• ໊લɿѨ෦ɹߞೋ(͋ɹ͜͏͡) • ύʔιϧςΫϊϩδʔελοϑגࣜձࣾɹϝʔϧɿ
[email protected]
• ҩྍػث։ൃɻ • ࠐΈιϑτΣΞ։ൃɻCݴޠɺOSͳ͠(ϕΞϝλϧ)ͷ։ൃۀܦݧ͕΄ͱΜͲɻ • twitter:
@juraruming • ϒϩά: https://k-abe.hatenablog.com/ ࣗݾհ
• Leafonyͱ͍͏খܕج൘ͷCιʔεαϯϓϧΛRustʹҠ২ͨ͠ɻ ɹϋʔυΣΞґଘ෦ͷҠ২ɻHAL(avr-hal)ͰରԠ͍ͯ͠ͳ͍ϋʔ υΣΞʹରԠͤͨ͞ɻ • ಈ࡞֬ೝͰ͖֤ͨछϖϦϑΣϥϧ ɹgpioͰLνΧɺuartɺi2cɺdelay ͓͢Δ͜ͱ
1.Leafony 2.avr-hal ༻ޠઆ໌
1.Leafony ɾখܕͷج൘ɻৄͪ͘͜͠ΒΛࢀরɻ https://docs.leafony.com/docs/overview/ ɾArduino UNOͱಉ͡AVRϚΠίϯ(Atmega328P)͕ࡌ͞Ε͍ͯΔ ɾArduino UNOͱͷҧ͍ΫϩοΫ(UNO =16MHz, Leafony =
8MHz) ɾࠓճʲBasic Kitʳ͕ରɻ https://docs.leafony.com/docs/products/basic/ ༻ޠઆ໌
2, avr-hal ɾArduino͚ͷHALɻ https://github.com/Rahix/avr-hal ɾHALͷબࢶͱͯ͠avr-rustͱavr-hal͕͋ͬͨ ͕avr-halΛબ(avr-rustڥߏஙͰ͖ͣஅ೦)ɻ ɾavr-halӈਤͷ֤छArduinoγϦʔζΛαϙʔ τɻ ༻ޠઆ໌
։ൃڥ No ߲ όʔδϣϯ උߟ 1 ϗετPC MacBook macOS Big
Sur όʔδϣϯ11.6 2 λʔήοτϋʔυΣΞ Leafony Basic Kit 3 Rust ίϯύΠϥ ɾnightly-2021-01-07 ɾrustc 1.51.0-nightly avr-halͰόʔδϣϯࢦఆͷͨΊ 4 avr-hal 2021/10/15ݱࡏ࠷৽ͷ ίϛοτ: 8ad1be ίϛοτ࣌: 2021/9/17
1. ։ൃڥߏஙํ๏ 2. C⇛RustҠ২ 3. ίϯύΠϧ 4. ॻ͖ࠐΈ ※ࠓճͷιʔείʔυˣ https://github.com/grace2riku/avr-hal/tree/add_leafony_211015
۩ମత࡞ۀ
1. ։ൃڥߏஙํ๏ • avr-halͷखॱͷ௨Γ https://github.com/Rahix/avr-hal README.md -> Quickstart ※ίϯύΠϥstableͰͳ͘ɺnightlyΛ͏ͱ͜Ζ͕ҙɻ ۩ମత࡞ۀ
2, C⇛RustҠ২ • Ҡ২͢ΔCαϯϓϧιʔε͜Εɻ όοςϦిѹಡΈऔΓ https://docs.leafony.com/docs/examples/beginner/1_p/basic/read_battery/ ɹ⇛i2cͰόοςϦిѹಡΈग़͠⇛uartૹ৴⇛LEDτάϧ⇛1ඵdelayͷ܁Γฦ͠ • avr-halͷArduino UNOαϯϓϧίʔυΛϕʔεʹLeafony͚ʹվ͍ͯ͘͠ɻ
ɹexamples/arduino-uno/src/bin σΟϨΫτϦҎԼʹαϯϓϧίʔυ͕͋Δɻ • ΫϩοΫઃఆมߋɹ˞࣮ʹ՝͋Γɻ༰ޙड़ɻ ɹArduino UNO16MHz, Leafony8MHzɻ ɹarduino-hal/src/clock.rsͷpub type DefaultClock = avr_hal_generic::clock::MHz16;Λpub type DefaultClock = avr_hal_generic::clock::MHz8;ʹมߋɻ ۩ମత࡞ۀ
3, ίϯύΠϧ avr-halͷखॱͷ௨Γ https://github.com/Rahix/avr-hal README.md -> Quickstart cd examples/arduino-uno #
Build and run it on a connected board cargo run --bin uno-blink ɹ⇛͜ͷ1ίϚϯυͰίϯύΠϧɺॻ͖ࠐΈ·Ͱ࣮ߦͯ͘͠ΕΔɻʲuno-blinkʳʹίϯύΠϧ͍ͨ͠ ιʔείʔυΛࢦఆ͢Δɻ ۩ମత࡞ۀ
3, ίϯύΠϧ Leafonyͷ߹ɺʲcargo run --bin uno-blinkʳͰॻ͖ࠐΈ͕ࣦഊ͢ ΔɻίϯύΠϧɾॻ͖ࠐΈΛͦΕͧΕͷίϚϯυͰ࣮ࢪͨ͠ɻ ʲίϯύΠϧʳ cargo build
--bin battery_voltage ※battery_voltage͕ࠓճՃͨ͠ιʔείʔυͷ໊শ ۩ମత࡞ۀ
4, ॻ͖ࠐΈ ॻ͖ࠐΈ༻ͷπʔϧʲavrdudeʳΛࣄલʹΠϯετʔϧ͠ɺelfͱಉ ͡֊Ͱ࣍ͷίϚϯυ࣮ߦɻɹ avrdude -patmega328p -carduino -P/dev/cu.usbserial-AH07FVYA -b 57600
-D -U flash:w:battery_voltage.elf:e ۩ମత࡞ۀ
• ίϯύΠϧɺॻ͖ࠐΈ͕ऴΘͬͨΒλʔϛφϧͰ࣍ͷίϚϯυͰଓ͢ΔɻࠓճλʔϛφϧʹminicomΛ༻ɻ minicom -D /dev/cu.usbserial-AH07FVYA -b 57600 • ଓͰ͖Δͱ࣍ͷϝοηʔδ͕λʔϛφϧʹදࣔ͞ΕΔɻ [0]=0,
[1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=0, [1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=0, [1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=7, [1]=64, [2]=255, [3]=255 // ӈਤͷϦʔϑ(ج൘)ͷεΠονΛಈ͔͢ͱίΠϯిͷిѹΛऔಘͰ͖Δɻ Batt[V] = 2990 // ϦʔϑͷεΠονΛมԽͤ͞ΔͱόοςϦిѹ͕ಡΈग़͍ͤͯΔɻ [0]=7, [1]=80, [2]=255, [3]=255 Batt[V] = 3016 [0]=7, [1]=64, [2]=255, [3]=255 ݁Ռ
• Leafony͚ʹΫϩοΫͷมߋ(16MHz⇛8MHz)Λߦͬͨɻ ɹݱঢ়ͷରԠͩͱLeafonyҎ֎ͷArduinoͷΫϩοΫઃఆ͕1/2ʹ ͳͬͯ͠·͏ͨΊظ௨Γʹಈ͔ͳ͍ɻLeafonyͷϏϧυߏΛ Ճ͢ΕଞͷArduinoͱڞଘͰ͖Δɻ • cargo run --bin uno-blinkͷ1ίϚϯυͰॻ͖ࠐΈ·ͰΓ͍ͨɻ
• warning͕Ͱ͍ͯΔ͕ແࢹ͍ͯ͠ΔͷͰରԠɻ ՝
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ऴΘΓ