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
2017.01.28 MicroZedとSDSoCでオシロスコープを作る
Search
muojp
January 28, 2017
Programming
0
1.5k
2017.01.28 MicroZedとSDSoCでオシロスコープを作る
SDSoCでLinuxアプリの拡張モジュールを書く話
SDSoC勉強会
muojp
January 28, 2017
Tweet
Share
More Decks by muojp
See All by muojp
16.09.25 Chisel+FIRRTL/自作HDLの試作
muojp
1
4.1k
Other Decks in Programming
See All in Programming
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
2
1.7k
Devvox Belgium - Agentic AI Patterns
kdubois
1
150
CSC509 Lecture 07
javiergs
PRO
0
250
Devoxx BE - Local Development in the AI Era
kdubois
0
150
What's new in Spring Modulith?
olivergierke
1
180
KoogではじめるAIエージェント開発
hiroaki404
1
150
三者三様 宣言的UI
kkagurazaka
0
280
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
200
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
9.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
670
NIKKEI Tech Talk#38
cipepser
0
310
理論と実務のギャップを超える
eycjur
0
200
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
329
39k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Side Projects
sachag
455
43k
The Pragmatic Product Professional
lauravandoore
36
7k
Agile that works and the tools we love
rasmusluckow
331
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
A better future with KSS
kneath
239
18k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
BBQ
matthewcrist
89
9.9k
Transcript
MicroZedͱ SDSoCͰ ΦγϩείʔϓΛ࡞Δ ෭: SDSoCͰLinuxΞϓϦͷ ɹɹɹ֦ுϞδϡʔϧΛॻ͘ @muo_jp 2017/01/28 SDSoCษڧձ
ࣗݾհ(@muo_jp) ຊۀ: ϞόΠϧήʔϜͷձࣾͰιϑτΣΞ։ൃ FPGAझຯར༻ 2016ͷίϛέͰΦϦδφϧͷήʔϜ&Υoν ෩ήʔϜػ։ൃʹࢀՃ ͤͬͤͱҰൠྲྀ௨ͷগͳ͍νοϓͷϒϨʔΫΞτ ϘʔυΛ࡞ͬͯখنͳճ࿏ΛΜͩΓͯ͠·͢
ιϑτΣΞܥͷݪߘॻ͖ ׂͱೖ͚ͷࡶࢽʹͪΐ͍ ͪΐ͍ͱهࣄΛॻ͍͍ͯ·͢ ۙ.NET CoreͷهࣄΛ ॻ͖·ͨ͠
ࣗݾհ(@muo_jp) ࠷ۙ࡞ͬͨͷ microUSBέʔϒϧΛૠͤΔ҆ՁͳίωΫλ microUSBΛిݯͱͯ͠͏༻ͷͷ microUSBίωΫλΛ΄ͲΑ͘2.54mmϐονʹม͢Δ ط: http://akizukidenshi.com/catalog/g/gK-10972/ (130ԁ͙Β͍͢Δ) 10ԁ͙Β͍Ͱ࡞Γ͍ͨ 8pinoͱ͍͏Arduinoޓػ͔ΒͷΠϯεύΠΞ
None
None
None
࡞͍ͬͯΔͷ: Φγϩείʔϓ
Φγϩείʔϓͷཁ݅ ͍ΘΏΔϙʔλϒϧΦγϩ http://akizukidenshi.com/catalog/g/gM-09281/ Πϝʔδతʹळ݄ͰചΒΕ͍ͯΔDSO Nano v3ʹ͍ۙ 5VϞόΠϧόοςϦʔͰಈ࡞͢Δ HDMIग़ྗͷϞχλ(5Vۦಈ)Λ͚ͬͭͯ͘ɺUSB͔ΒిݯΛҾͬுͬͯ͏ MicroZedΛϝΠϯϘʔυͱ͢Δ Ұ୴ɺΞφϩάଳҬ1MHzͰ10MspsఔऔಘͰ͖Δঢ়ଶΛࢦ͢
MicroZedΛ ϝΠϯϘʔυʹ͢Δ? MicroZedΛબΜͩཧ༝ ͳΜ͔৭ʑແ͍ঢ়ଶ͔Β࡞Γ͔ͨͬͨ ϝϞϦ͕ZedboardΑΓଟ͘ɺ1GBࡌͬͯΔͷͰ׆͔͍ͨ͠ 2013ͷ8݄ʹจͯ͠10݄ೖखɺͦΕ͔Βࡉ͔ͳ࣮ݧʹͬ ͍͚ͯͨΕͲ ͦΖͦΖϑϧηοτ͍ͨ͠ͷΛ࡞ͬͯΈ͍ͨ ͍ͨ͠Β҆৺ͯ͠MPSoC࣌ͷධՁϘʔυΛങ͑Δؾ͕͢Δ
Ϟχλ ૾ਤ ADC֦ுϘʔυ ৴߸ݯ⚡ MicroZed
ਐߦ্ͷറΓ ެࣜൢചͷ֦ுΧʔυങΘͣʹࣗ࡞ͰΓΔ PLଆʹҾ͖͜Βͣɺ͔ͤͬ͘ZynqͳΜ͔ͩΒɺ LinuxଆʹޙஈͷϦονͳͷ͕ἧ͍ͬͯΔͳΒͳΔ ͦ͘ΕΒΛ͍͍ͨ
MicroZedͰΦγϩείʔϓɺ ΞʔΩςΫνϟΛߟ͑Δ
Πϝʔδ͔Βॱʹ ۷͍ͬͯ͘ ܗදࣔͱΠϯλϑΣʔε ిѹใͷιϑτΣΞతͳऔಘ Ξφϩά෦͔ΒಡΈऔͬͨిѹΛSDSoCଆϞ δϡʔϧҾ͖͢ ADC(ిѹͷಡΈग़͠)
ܗදࣔͱΠϯλϑΣʔε Sigrok+PulseView(Qtϕʔε)Λར༻͢Δ
ిѹใͷιϑτΣΞత ͳऔಘ Sigrok༻ͷυϥΠόΛॻ͍ͯϝΠϯϝϞϦ্ʹஔ͔Ε ͨ࠷৽σʔλΛಡΈऔΔ Sigrok༻υϥΠόSDSoCͰ࡞ΒΕͨڞ༗ϥΠϒϥ ϦΛհͯ͠PLͱͷ௨৴Λ͓͜ͳ͏ ͕͜͜ࠓͷຊ
Ξφϩά෦͔ΒಡΈऔͬͨిѹ ΛSDSoCଆϞδϡʔϧҾ͖͢ AXI4-Lite + AXI4-Stream ࠓճҰ୴10MspsఔಡΈऔΕΕok τϦΨʔઃఆϨϯδΓସ͑ɺ৴߸Ωϟϓνϟͷ ։࢝/ఀࢭAXI4-Liteܦ༝Ͱ͓͜ͳ͏ ADC͔ΒಡΈऔͬͨΛAXI4-StreamʹแΜͰSDSoC ଆϞδϡʔϧྲྀ͢·ͰVerilog
HDLͰߏங͢Δ
ADC(ిѹͷಡΈग़͠) ෦ADC(XADC)ͰؤுΔ? 5-6bit·͋ग़ΔͬΆ͍ ֎෦ADCΛ͏? SPIͰಡΈग़ͤΔADC AD7665ͱ͔(͕͢͞ʹ͍)ɺAD7671ͱ͔ΞϦͦ͏ AD9283(80Msps, 8bit ADC)Λ͏ ←
ࠓճ͜ΕͰ
ݱঢ়
Sigrok༻υϥΠό http://sigrok.org/ ͜ΕͷϘʔυ֦ுυϥΠόΛॻ͘ https://github.com/anatol/libsigrok/blob/master/include/ libsigrok/libsigrok.h#L994-L1062 ݱߦίʔυΑΓͪΐͬͱݹ͍ ࠷ۙsigrok.org͕ௐࢠѱ͍ͷͰ࠷৽ίʔυΛरͬͯ͘Δ ͷʹগʑّ͢Δ
Sigrokͷ৴߸Ωϟϓνϟॲཧ ϥΠϑαΠΫϧ int (*dev_open) (struct sr_dev_inst *sdi); int (*dev_close) (struct
sr_dev_inst *sdi); int (*dev_acquisition_start) (const struct sr_dev_inst *sdi, void *cb_data); int (*dev_acquisition_stop) (struct sr_dev_inst *sdi, void *cb_data);
Sigrok(PS্Ͱ݁ͯ͠ಈ࡞)༻υϥΠό͔Β PLΛୟ͘?? PS PL Ξφϩά ΠϯλϑΣʔε(ADC) Sigrok SigrokυϥΠό SDSoCͰΜͩAXI4 ΠϯλϑΣʔε(.so)
ADCΠϯλϑΣʔε (Verilog HDL)
Sigrok(PS্Ͱ݁ͯ͠ಈ࡞)༻υϥΠό͔Β PLΛୟ͘?? PS PL Ξφϩά ΠϯλϑΣʔε(ADC) Sigrok SigrokυϥΠό SDSoCͰΜͩAXI4 ΠϯλϑΣʔε(.so)
ADCΠϯλϑΣʔε (Verilog HDL)
Sigrok(PS্Ͱ݁ͯ͠ಈ࡞)༻υϥΠό͔Β PLΛୟ͘?? PS PL Ξφϩά ΠϯλϑΣʔε(ADC) Sigrok SigrokυϥΠό SDSoCͰΜͩAXI4 ΠϯλϑΣʔε(.so)
ADCΠϯλϑΣʔε (Verilog HDL) ී௨ͷLinuxΞϓϦͷϢʔβϞʔυυϥΠό͔Β SDSoCͰΜͩڞ༗ϥΠϒϥϦΛݺͼग़͍ͨ͠
։ൃϑϩʔ্ͷཁٻ Ϙʔυʹసૹͯ͠ಈ࡞֬ೝ͢ΔසΛԼ͍͛ͨ PL෦ʹґଘ͠ͳ͍ιϑτ։ൃ(ۀՄೳੑ) SigrokͷZynq༻όΠφϦੜͱ PulseViewυϥΠόྨͷࢼߦࡨޡΛΓ͚͍ͨ Ϙʔυ্Ͱಈ࡞ͤ͞Δࡍʹ͖ͪΜͱPLΛ͏ ϥΠϒϥϦΛݺͼग़͢ ιϑτଆͰ݁ͯ͠CI(Continuous Integration)ྲྀ͍ͨ͠
ʮSDSoCͰLinuxΞϓϦͷ ֦ுϞδϡʔϧΛॻ͘ʯ
TL; DR UG1027ͷ ୈ10ষʹ ॻ͍ͯ͋Γ·͢ɻ
SDSoCͷαϯϓϧ SDSoC୯ମΞϓϦέʔγϣϯͰ݁ͤͣ͞ɺՌ ΛϥΠϒϥϦͱͯ͠ར༻͢Δྫ͕2छྨ͋Δ samples/fir_lib samples/libmatrix
samples/fir_lib sdslib -lib libfir.a \ fir fir.c \ fir_reload fir_reload.c
\ fir_config fir_config.c \ -vlnv xilinx.com:ip:fir_compiler:7.2 \ -ip-map fir_compiler.fcnmap.xml \ -ip-params fir_compiler.params.xml
samples/fir_lib sdslibίϚϯυΛར༻ͯ͠੩తϥΠϒϥϦΛ࡞Δύ λʔϯ ࡞ͬͨϥΠϒϥϦSDSoCڥʹดͯ͡͏લఏ ͜ΕΛΰϦΰϦͱޙՃͯ͠ڞ༗ϥΠϒϥϦΛ࡞Ε ྑ͍...?
XilinxͷϖʔδΛ୳͠ճΔ ΞϓϦέʔγϣϯΛϥΠϒϥϦͱͯ͠ΤΫεϙʔτ (ུ)ʙͭ·Γɺಉ͡ϋʔυΣΞ γεςϜΛλʔήο τͯ͠ sdscc Ͱੜ͞ΕͨϒʔτڥΛ༻͠ͳ͕ ΒɺҙͷιϑτΣΞ։ൃڥͰ GNU πʔϧ
νΣʔϯΛ༻ͯ͠ιϑτΣΞΛ։ൃͰ͖·͢ɻ ͜Ε!!
ࢦఆ͞Εͨαϯϓϧ͕ 2016.2/3ʹଘࡏ͠ͳ͍
αϯϓϧσΟϨΫτϦʹΔͱ libmatrixͱ͍͏ͷ͕͋Δ
samples/libmatrix ߦྻܭࢉΛSDSoCܦ༝ͰPL͢ҰࣜΛ੩తϥΠϒ ϥϦɾڞ༗ϥΠϒϥϦͱͯ͠ग़ྗ͢Δαϯϓϧ libmatrix/build/static/Makefile ←.a libmatrix/build/shared/Makefile ←.so ͱ͔ͯΓ͍͢αϯϓϧ
੩తϥΠϒϥϦੜ sds++͔ΒϏϧυͨ͠*_accelܥͷΦϒδΣΫτϑΝΠϧΛؚΉ ੩తϥΠϒϥϦʹݺͼग़͠ଆ(ΠϯλϑΣʔεؔ)ΛՃ͢Δͱ ͍͏Ճ matrix.linked: mmult_accel.o madd_accel.o matrix.o ${CC} $^
-nostartfiles -o $@ ${LIBRARY}: matrix.linked cp _sds/swstubs/${LIBRARY} . arm-linux-gnueabihf-ar rcs ${LIBRARY} _sds/ swstubs/matrix.o
ڞ༗ϥΠϒϥϦੜ ֤ΦϒδΣΫτϑΝΠϧੜ࣌ʹ-fPICΛ͚ͭͯίϯύΠϧ ϥΠϒϥϦੜखॱͪ͜Βͷ΄͏͕ૉͰɺsds++͔Β -shared ΦϓγϣϯͰ.soΛ࡞͍ͬͯΔ ${LIBRARY}: mmult_accel.o madd_accel.o matrix.o
${CC} -shared $^ -o $@
͋ͱී௨ʹLinuxͷจ຺Ͱ ར༻͢Δ
Α͘ݟΔͱɺUG1027ͷୈ10ষʹ͋ͬͨ
શ෦ͪΌΜͱॻ͍ͯ·ͨ͠ (વ)ϚϧνεϨουݺͼग़͠αϙʔτ͠ͳ͍ͷͰɺ ݺͼग़͠ͷલஈͰ໘ΛݟΔඞཁ͕͋ΔɺͳͲҙॻ͖ࠐΈͰɻ
SDSoC 2016.2ͱSDx 2016.3ͱ MicroZed
SDSoC 2016.2ͱMicroZed settings64.batͰڥઃఆޙʹαϯϓϧ͍Ζ͍Ζmake PLATFORM=microzedΛࢦఆͯ͠make ͜ͱ͝ͱࣦ͘ഊ͢Δ LUTෆͱDSPෆͷ͋Θٕͤ PLATFORM=zybo௨ΔɻMicroZed(Z-7010)ͱ ZYBO(Z-7010)ɺͲ͜Ͱ͕͍ࠩͭͨͷ͔…
SDx 2016.3ͱMicroZed 2016.2Ͱશવ௨Βͳ͔ͬͨmmult_addͷαϯϓϧ ͕ɺ௨ͬͨ(ߦྻαΠζΛখͨ͘͞͠) SDxͷIDE͔ΒMicroZed༻ʹςϯϓϨʔτ͔ΒϓϩδΣ ΫτΛੜͯ͠ɺಉ༷ʹ௨Δ MicroZed͚ͷSDSoC͚BSP͕2016.2→3Ͱվળ? SDSoC GUIͷςϯϓϨʔτ͔ΒϓϩδΣΫτ࡞͢Δ ͱɺMicroZedͰͦͦarea
reduced൛͔͠ग़ͳ͍
ҎԼɺSDSoCҎ֎ͷ
࠷ऴతʹQtSigrokΛؚΊͨ rootfs͕ඞཁ PetaLinuxܦ༝ͰYoctoΛѻ͏ͷ͕దͦ͏ MicroZedͰ৽͠ΊͷPetaLinuxΛѻ͏Λݟ͔͚ͳ͔ͬ ͨͷͰɺblogʹ·ͱΊͨ http://www.muo.jp/2017/01/petalinux-microzed.html PetaLinuxͰखܰʹZynq(MicroZed)༻ΧελϜLinuxΛ ࡞Δ PetaLinux SDK
2016.2→2016.3Ͱ͔ͳΓYoctoͬΆ͕͞ ্͕͍ͬͯΔ͚ΕͲɺMicroZed2016.2Ͳ·Γɻɻɻ
Ξφϩά෦ʙ֎෦Πϯλ ϑΣʔεͷݱঢ়
None
None
None
ArduinoͰൃੜͤͨ͞ ύϧεΛADC͔ΒಡΈऔΓ
֎ງ͔ΒຒΊͯΔঢ়ଶ
Zedboardͱൺֱ͢Δͱ͔ͳ Γελʔτ͕ޙํ Δ͜ͱͷൣғ͕ͱʹ͔͍͘ MicroZedͷ֦ுϙʔτ DVI/HDMIͰͷϞχλग़ྗ
MicroZedͷ֦ுϙʔτ ඪ४࣮ϙʔτZedboardΑΓ͔ͳΓগͳ͍ 12ϐϯͷPmodͻͱͭ+LED1+λΫτεΠον1ͷΈ ཪ໘ʹ100ϐϯͷFMCεϩοτ͕2ͭੜ͍͑ͯΔ ࢀর: MicroZed_HW_UG_v1_4.pdf େҙ: ࣗͰ͖ʹిݯΛڙڅͯ͠(ϝΠϯϘʔυ͔Β ڙڅ͠ͳ͍Α)ɺ͖ʹͬͯͶ
None
None
DVI/HDMIͰͷϞχλग़ྗ దʹϑϨʔϜόοϑΝ͔Βग़ྗΛಘͯϞχλʹ ग़ͦ͏ͱ͢Δ →/dev/fb0͕ͦͦੜ͍͑ͯͳͯ͘ࠔΔ ADV7511༻VDMAϕʔεͷυϥΠόADI͕ग़ͯ͠Δ ࢀߟใ: TIͷਓͷεϥΠυ(fb_deferred_ioΛར༻͢Δ) ࢦఆִؒͰߋ৽͞ΕͨϖʔδϦετ͕ͬͯ͘Δ https://github.com/Freescale/linux-module-virtfb ←Ϋϥογϡ
FPGAͷ֎ଆ 100ϐϯx2ͷϝβχϯΧʔυࣗ࡞͢Δ ίωΫλҰࡢೖΕͯ͋Δ ΞφϩάϑϩϯτΤϯυͷཧղ͕͍͍ͭͯͳ͍ͷͰ ؤுΔ mhz100q ( mhz100q.sourceforge.net ) Marmaladeຊx2
(߲࣍)
Marmaladeຊ (Έ͔ΜϓϩδΣΫτץ) ίϛέͰച͍ٕͬͯͨज़ಉਓࢽ FPGAͰΦγϩΛ࡞Δ WindowsΞϓϦʹసૹɾදࣔ mhz100qͱಉ༷ɺAD9283Λར༻ Ξφϩά෦ͷղઆ͕͋Γ͕͍ͨ
·ͱΊ ͬͺΓϚΠφʔͳϘʔυݫ͕͋͠͞Δ UGͪΌΜͱಡ͏ ઌ͍͚ΕͲ͍ͬͯ͘