Slide 1

Slide 1 text

KOBA789 ࣌ͷྲྀΕ͕ڐͤͳ͍ ,FSOFM7.୳ݕୂ!๺཮1BSU

Slide 2

Slide 2 text

KOBA789 ప໷Ͱͭ͘͹͔ΒंͰདྷ·ͨ͠ʢ৸ෆ଍ʣ w ࢓ࣄͷ࿩͸͠·ͤΜ w ࢓ࣄͷ࿩͸͠·ͤΜʢʣ w ͏͔ͬΓձࣾͷ1$Λ͖࣋ͬͯͨͷͰ͍ͭ΋ͷࣗݾ঺հςϯϓϨʔτ͕ͳ͍

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ಈ͘Α͏ʹͳΓ·ͨ͠ ΫϦελϧͷཪ໘ʹ৴߸ઢ͕௨ͬͯͯΫϩοΫ͕๫Ε͍ͯͨͷ͕ݪҼ

Slide 5

Slide 5 text

࣌ͷྲྀΕ͕ڐͤͳ͍

Slide 6

Slide 6 text

Έͳ͞Μ΋ͦ͏Ͱ͢Ͷʁ

Slide 7

Slide 7 text

ࢲͩͬͯͦ͏ͩ

Slide 8

Slide 8 text

ͭͷϚΠίϯͰ࣌ࠁΛಉظ͍ͨ͠ ΈΜͳେ޷͖6"35ͰλΠϜελϯϓΛૹΔ .$6 # .$6 " lz

Slide 9

Slide 9 text

ͭͷϚΠίϯͰ࣌ࠁΛಉظ͍ͨ͠ ΈΜͳେ޷͖6"35ͰλΠϜελϯϓΛૹΔ #ͷ࣌ܭ͕ͪΐͬͱ͚ͩ஗ΕΔ .$6 # .$6 " lz

Slide 10

Slide 10 text

ͭͷϚΠίϯͰ࣌ࠁΛಉظ͍ͨ͠ ΈΜͳେ޷͖6"35ͰλΠϜελϯϓΛૹΔ #ͷ࣌ܭ͕ͪΐͬͱ͚ͩ஗ΕΔ .$6 # .$6 " lz ͳ͔ͥʁ

Slide 11

Slide 11 text

6"35ͷ࢓૊Έ CBVEͳΒ#ZUFૹΔͷʹ໿NT͔͔Δ https://vanhunteradams.com/Protocols/UART/UART.html    ˺ ੨͍෦෼͸KOBA789ʹΑΔՃච

Slide 12

Slide 12 text

6"35ͷ࢓૊Έ #ZUFͷ࣌ࠁΛૹͬͨΒ໿NT஗Ԇ͢Δ .$6# .$6" ໿NT #ͷ࣌ܭ͕NT஗ΕΔ   

Slide 13

Slide 13 text

6"35ͷ࢓૊Έ #ZUFͷ࣌ࠁΛૹͬͨΒ໿NT஗Ԇ͢Δ .$6# .$6" ໿NT #ͷ࣌ܭ͕NT஗ΕΔ    NT Ҿ͍ͨΒʁ

Slide 14

Slide 14 text

·͊஗Ԇ͕ίϯελϯτͳΒ ͦΕͰ͍͍ΜͰ͢Α

Slide 15

Slide 15 text

͕ͩࣄଶ͸ͦ͏୯७Ͱ͸ͳ͍

Slide 16

Slide 16 text

let time = gettimeofday(); send(time);

Slide 17

Slide 17 text

let time = gettimeofday(); send(time); ߦ໨͕࣮ߦ͞Ε͔ͯΒ ߦ໨͕࣮ߦ͞ΕΔ·Ͱͷ஗Ԇ͸ʁ

Slide 18

Slide 18 text

ߦ໨ͱߦ໨ͷؒʹ͋Δ஗Ԇ Α͋͘Γ͕ͪͳϚΠίϯͷ৔߹ w ී௨ʹ໋ྩ࣮ߦʹ͔͔ΔαΠΫϧ෼͚ͩ஗Ԇ͢Δ w ༏ઌ౓ͷߴׂ͍ΓࠐΈ͕ೖΕ͹஗Ԇ͢ΔʢཁΫϦςΟΧϧηΫγϣϯʣ w ࠷ۙͷϚΠίϯͰ͸ w $16͕଎͍͗ͯ͢Ζ͍Ζ͕૬ରతʹ஗͍ͷͰΩϟογϡ͕͋Δ w ΩϟογϡώοτPSOPUͰ஗Ԇ͕࣌ؒมԽʢඇܾఆ࿦తʣ w 5$.ͱ͔࢖͑͹Ϛγʹ͸ͳΔ͕ w 0VUPG0SEFS࣮ߦ͢Δ w ίʔυಡΉ͚ͩͰ͸஗Ԇ͕࣌ؒΘ͔Βͳ͍ʢࣄ্࣮ඇܾఆ࿦తʣ

Slide 19

Slide 19 text

let time = gettimeofday(); send(time);

Slide 20

Slide 20 text

let time = gettimeofday(); send(time); ͦ΋ͦ΋TFOE ͷ࣮૷͸ʁ

Slide 21

Slide 21 text

Α͋͘Δ6"35ૹ৴ϖϦϑΣϥϧʢงғؾʣ ૹ৴'*'0 5%3 ͕ϝϞϦϚοϓ͞Ε͍ۭͯͯʹͳΔͱׂΓࠐΈ͕ೖΔ 4IJGU SFHJTUFS EFQUI '*'0 59 %"5" όε $16 %"5" '*'0&NQUZ *OUFSSVQU 5%3

Slide 22

Slide 22 text

5%3ʹ஋Λॻ͖ࠐΉͱૹ৴͞ΕΔ ͨͱ͑͹5%3ͷΞυϨεΛY@ͱ͢Δ *(uint32_t*)0x400001000 = 'A'; core::ptr::write_volatile(0x400001000 as *mut u8, b'A');

Slide 23

Slide 23 text

5%3ʹ஋Λॻ͖ࠐΉͱૹ৴͞ΕΔ EFQUI'*'0ͳΒจࣈ·Ͱ͸Ұؾʹॻ͚Δ͕ɺӽ͑ΔͱᷓΕΔ core::ptr::write_volatile(0x40000100 as *mut u8, b'0'); core::ptr::write_volatile(0x40000100 as *mut u8, b'1'); core::ptr::write_volatile(0x40000100 as *mut u8, b'2'); core::ptr::write_volatile(0x40000100 as *mut u8, b'3'); core::ptr::write_volatile(0x40000100 as *mut u8, b'4'); core::ptr::write_volatile(0x40000100 as *mut u8, b'5'); core::ptr::write_volatile(0x40000100 as *mut u8, b'6'); core::ptr::write_volatile(0x40000100 as *mut u8, b'7'); core::ptr::write_volatile(0x40000100 as *mut u8, b'8'); core::ptr::write_volatile(0x40000100 as *mut u8, b'9'); core::ptr::write_volatile(0x40000100 as *mut u8, b'A'); core::ptr::write_volatile(0x40000100 as *mut u8, b'B'); core::ptr::write_volatile(0x40000100 as *mut u8, b'C'); core::ptr::write_volatile(0x40000100 as *mut u8, b'D'); core::ptr::write_volatile(0x40000100 as *mut u8, b'E'); core::ptr::write_volatile(0x40000100 as *mut u8, b’F'); // ͔͜͜Βઌ͸ᷓΕΔ

Slide 24

Slide 24 text

Α͋͘Δ6"35υϥΠόʢงғؾʣ %."ͷ͜ͱ͸Ұ୴๨Ε͍ͯͩ͘͞ w TFOE  w ·ͣ'*'0ͷۭ͖༰ྔ෼͚ͩॻ͘ w ᷓΕͨ෼͸ιϑτ΢ΣΞόοϑΝʹॻ͘ w &NQUZ'*'0ׂΓࠐΈ w '*'0ͷۭ͖༰ྔ෼͚ͩιϑτ΢ΣΞόοϑΝ͔ΒҠ͢

Slide 25

Slide 25 text

΋͏͓෼͔ΓͰ͢Ͷʁ

Slide 26

Slide 26 text

όοϑΝɾ'*'0͕ ٧·ͬͯͨΒ ଈ࠲ʹ͸ૹ৴͞Εͳ͍ ʢͦΕ͸ͦ͏ʣ

Slide 27

Slide 27 text

ͯ͞

Slide 28

Slide 28 text

Α͋͘Δ6"35ड৴ϖϦϑΣϥϧʢงғؾʣ ड৴'*'0 3%3 ͕ϝϞϦϚοϓ͞Ε͍ͯͯ஋͕དྷΔͱׂΓࠐΈ͕ೖΔ 4IJGU SFHJTUFS EFQUI '*'0 39 %"5" όε $16 %"5" '*'0/PO&NQUZ *OUFSSVQU 3%3

Slide 29

Slide 29 text

3%3͔Β஋ΛಡΉͱ'*'0͔ΒQPQ͞ΕΔ ͨͱ͑͹3%3ͷΞυϨεΛY@ͱ͢Δ uint8_t r = *(uint32_t*)0x40000200; // r == 'A' let r = core::ptr::read_volatile(0x40000100 as *const u8); // r == b’A'

Slide 30

Slide 30 text

Α͋͘Δ6"35υϥΠόʢงғؾʣ %."ͷ͜ͱ͸Ұ୴๨Ε͍ͯͩ͘͞ʢʣ w /POFNQUZ'*'0ׂΓࠐΈ w '*'0ͷ಺༰Λιϑτ΢ΣΞόοϑΝʹҠ͢ w ͜ΕΛ͠ͳ͍ͱ'*'0͸༰қʹᷓΕΔ w SFDW  w ιϑτ΢ΣΞόοϑΝ͔ΒಡΈग़͢

Slide 31

Slide 31 text

ड৴σʔλͷಡΈऔΓ͸͍͘ΒͰ΋஗Ԇ͢Δ ΋͏͓Θ͔ΓͰ͢Ͷʢʣ w ΞϓϦέʔγϣϯ͕ιϑτ΢ΣΞόοϑΝΛ͍ͭಡΉ͔͸ࣗ༝ w ׂΓࠐΈϋϯυϥ͕ݺ͹ΕΔλΠϛϯά͸ʜʜʁ w ΞςʹͳΒͳ͍ w ผͷΫϦςΟΧϧηΫγϣϯͰεϐϯϩοΫͯͨ͠Β஗ΕΔ w $PSUFY.Ͱ͸ׂΓࠐΈͷԣऔΓͱ͔ͰϨΠςϯγ͕ζϨΔ

Slide 32

Slide 32 text

ࠔΔ

Slide 33

Slide 33 text

ࠔΔͷͰɺΑ͋͘Δํ๏ʢ6"35 114ʣ ඵ͝ͱʹύϧεΛೖྗ͠ɺͦΕΛϋʔυ΢ΣΞͰΩϟϓνϟ͢Δ .$6 # .$6 " lz ʮࠓͰ͢ʂʯ

Slide 34

Slide 34 text

*OQVU$BQUVSF0VUQVU$PNQBSF ΠέͯΔϚΠίϯͷλΠϚʹ͸͍͍ͩͨ͋Δ w *OQVU$BQUVSF w ύϧεೖྗΛτϦΨʔʹͯ͠ɺΧ΢ϯλͷ஋ΛϨδελʹΩϟϓνϟ w ιϑτ΢ΣΞͷλΠϛϯάʹґଘͤͣਖ਼֬ͳλΠϛϯά͕औΕΔ w (1*0ׂΓࠐΈͱ͸શ͘ผͷػೳ w 0VUQVU$PNQBSF w Χ΢ϯλͷ஋ΛτϦΨʔʹͯ͠ɺύϧεΛग़ྗ w ιϑτ΢ΣΞͷλΠϛϯάʹґଘͤͣʢSZ

Slide 35

Slide 35 text

ΊͰͨ͠ΊͰͨ͠ʢʁʣ

Slide 36

Slide 36 text

ݪཧతʹ͸੒ཱ͍ͯ͠Δ͕ݱ࣮తʹ͸ࠔΔ 6"35͸࣌ࠁ഑৴ઐ༻Ͱ͸ͳ͍ɻଞͷίϚϯυ΋ૹΓ͍ͨ .$6 # .$6 " lz ʮࠓͰ͢ʂʯ $.%@%0@40.&5)*/( ࠞͬͯ͟͠·͏

Slide 37

Slide 37 text

6"35ʹྲྀΕΔσʔλΛ෼ผ͍ͨ͠ ͜ͷ΁ΜͷεϥΠυ͕Ͱ͖ͯͳ͍ w σʔλΛ෼ผ͢Δʹ͸ϔομΛ෇͚Δͷ͕ৗ౟खஈ w ϔομΛ෇͚Δʹ͸ύέοτࢦ޲͡Όͳ͍ͱ͍͚ͳ͍ w ͱ͜ΖͰ6"35͸ͨͩͷ੾Ε໨ͷͳ͍όΠτετϦʔϜ w ύέοτʹ͢Δʹ͸ϓϩτίϧ͕ඞཁ w ͔͠΋ඪ४Խ͞Εͯͳ͍ͱඍਖ΋خ͘͠ͳ͍

Slide 38

Slide 38 text

͜ͷ΁ΜͷεϥΠυ͕Ͱ͖ͯͳ͍

Slide 39

Slide 39 text

΋͏݁࿦ߦͧ͘

Slide 40

Slide 40 text

151 1SFDJTJPO5JNF1SPUPDPM &UIFSOFU্Ͱ/51ΑΓਫ਼ີͳ࣌ࠁಉظΛ͢Δϓϩτίϧ w ൃ૝ͱͯ͠͸/51ͱಉ͡ʢԟ෮ͰϨΠςϯγΛଌΔʣ w େ͖ͳҧ͍͸ϋʔυ΢ΣΞλΠϜελϯϓͷαϙʔτ w &UIFSOFUϑϨʔϜͷ4'%͕1):Λ௨աͨ͠ॠؒͷΧ΢ϯλͷ஋Λ ϋʔυ΢ΣΞͰΩϟϓνϟ͢Δ w ΑΓਫ਼ີʹϨΠςϯγ͕ଌΕΔͷͰVTʙOTΦʔμʔͷਫ਼౓͕ૂ͑Δ w ࣮ࡍʹ͸΋ͬͱ͍Ζ͍Ζ͋Δ͕ɺ͜͜ʹॻ͘ʹ͸४උ͕࣌ؒ଍Βͳ͗͢͞Δ

Slide 41

Slide 41 text

151 1SFDJTJPO5JNF1SPUPDPM &UIFSOFU্Ͱ/51ΑΓਫ਼ີͳ࣌ࠁಉظΛ͢Δϓϩτίϧ .$6 # .$6 "

Slide 42

Slide 42 text

31J$.ͱळ݄ͷ(14ϞδϡʔϧͰ࡞ΕΔ ͜ͷهࣄಡΜͩΒ؆୯ʹ࡞ΕΔͱࢥ͏ https://www.je ff geerling.com/blog/2022/ptp-and-ieee-1588-hardware-timestamping-on-raspberry-pi-cm4

Slide 43

Slide 43 text

/VDMFP 45. Ͱ΋΍Ε͹ಈ͘ ୭΋151ͳΜͯ࢖ͬͯͳ͍ͷͰؾ߹ೖΕ࣮ͯ૷͢Δඞཁ͸͋Δ

Slide 44

Slide 44 text

ͱͳΔͱؾʹͳΔ͜ͱ͕ ͋Γ·͢Ͷʁ

Slide 45

Slide 45 text

Ϣʔβʔϥϯυͷ"1* Ͳ͏ͳͬͯΜͩ

Slide 46

Slide 46 text

#4%TPDLFUʹ λΠϜελϯϓऔΔ"1*͸ͳ͍

Slide 47

Slide 47 text

·ͣ͸TFUTPDLPQUͰઃఆ͢Δ https://docs.kernel.org/networking/timestamping.html#so-timestamping-also-so-timestamping-old-and-so-timestamping-new

Slide 48

Slide 48 text

·ͣ͸TFUTPDLPQUͰઃఆ͢Δ https://docs.kernel.org/networking/timestamping.html#so-timestamping-also-so-timestamping-old-and-so-timestamping-new

Slide 49

Slide 49 text

·ͣ͸TFUTPDLPQUͰઃఆ͢Δ https://docs.kernel.org/networking/timestamping.html#so-timestamping-also-so-timestamping-old-and-so-timestamping-new ΤϥʔΩϡʔʹ ใࠂ͞ΕΔ

Slide 50

Slide 50 text

·ͣ͸TFUTPDLPQUͰઃఆ͢Δ https://docs.kernel.org/networking/timestamping.html#so-timestamping-also-so-timestamping-old-and-so-timestamping-new ͸ʁʁʁ

Slide 51

Slide 51 text

λΠϜελϯϓ͸ ΠϯλʔϑΣʔεΛ ഁյͯͭ͠Β͍ ʢਫ਼౓ӠʑΑΓͦΕ͕ͭΒ͍ʣ