Slide 1

Slide 1 text

"QSJM 3VCZ,BJHJ :VIFJ0LB[BLJ !:@VVV Porting PicoRuby to Another Microcontroller: ESP32

Slide 2

Slide 2 text

self.inspect w :VIFJ0LB[BLJ w !:@VVV 9 !ZVVVOFU #MVF4LZ  w !ZVVV (JU)VC  w *P5$MPVE&OHJOFFSBU'VTJD$P -UE w .FOUFSBU'KPSE#PPU$BNQ 2

Slide 3

Slide 3 text

PicoRuby 3

Slide 4

Slide 4 text

PicoRuby w 5IFTNBMMFTU3VCZJNQMFNFOUBUJPOEFTJHOFEUPSVOPO NJDSPDPOUSPMMFST w &OBCMFTSVOOJOH3VCZPONJDSPDPOUSPMMFSCPBSETTVDIBTUIF 3BTQCFSSZ1J1JDP 4

Slide 5

Slide 5 text

Raspberry Pi Pico w "NJDSPDPOUSPMMFSCPBSE EFWFMPQFECZUIF3BTQCFSSZ 1J'PVOEBUJPO w $BOCFQSPHSBNNFEVTJOH 1ZUIPO .JDSP1ZUIPO BOE$ $  5

Slide 6

Slide 6 text

R2P2 (Ruby Rapid Portable Platform) w "TIFMMTZTUFNXJUI1JDP3VCZFNCFEEFEUIBUSVOTPO NJDSPDPOUSPMMFST w 8PSLTPOUIF3BTQCFSSZ1J1JDP 6

Slide 7

Slide 7 text

Question: Do we need a Raspberry Pi Pico to try PicoRuby? 7

Slide 8

Slide 8 text

Question: Do we need a Raspberry Pi Pico to try PicoRuby? w /PUOFDFTTBSJMZ 8

Slide 9

Slide 9 text

PicoRuby is portable w *UJTCVJMUUPTVQQPSUPQFSBUJPOPOEJ ff FSFOUNJDSPDPOUSPMMFST w 'JMFTBOEEJSFDUPSJFTBSFFYQMJDJUMZTFQBSBUFEUPIBOEMF NJDSPDPOUSPMMFSTQFDJ fi DEJ ff FSFODFT w &BTZQPSUJOHBMMPXTUIFFYJTUJOHFDPTZTUFNUPCFMFWFSBHFEBDSPTT EJ ff FSFOUNJDSPDPOUSPMMFST 9

Slide 10

Slide 10 text

Porting PicoRuby is still a work in progress w 5IFSFBSFOPUNBOZ NJDSPDPOUSPMMFSTUIBUDBO FBTJMZSVO1JDP3VCZ w 5IFDSFBUPSPG1JDP3VCZJT BMTPFBHFSUPTFFNPSFQPSUT 10 IUUQTQJDPSVCZHJUIVCJPDPOUSJCVUJPOIUNM

Slide 11

Slide 11 text

Porting PicoRuby is still a work in progress w 5IFSFBSFOPUNBOZ NJDSPDPOUSPMMFSTUIBUDBO FBTJMZSVO1JDP3VCZ w 5IFDSFBUPSPG1JDP3VCZJT BMTPFBHFSUPTFFNPSFQPSUT 11 1PSUJOH "TPG 1JDP3VCZTVQQPSUTPOMZUIF31 3BTQCFSSZ1J1JDP *U XPVMECFBTJHOJ fi DBOUVOEFSUBLJOHUPQPSUJUUPPUIFS.$6TMJLFUIF O3' 45. BOE&41*GZPVBSFJOUFSFTUFEJODPOUSJCVUJOHUPB QPSUJOH QMFBTFWJTJUUIFSFQPTJUPSZ IUUQTQJDPSVCZHJUIVCJPDPOUSJCVUJPOIUNM

Slide 12

Slide 12 text

ESP32 12

Slide 13

Slide 13 text

ESP32 w "MPXDPTU MPXQPXFS NJDSPDPOUSPMMFSNPEVMF EFWFMPQFECZ&TQSFTTJG 4ZTUFNT w 8JEFMZVTFEJOWBSJPVT EFWJDFT JODMVEJOH.4UBDL w 4VQQPSUTXJSFMFTT DPNNVOJDBUJPOTVDIBT8J'J BOE#MVFUPPUI 13

Slide 14

Slide 14 text

My device1: M5Stamp C3 Mate w &RVJQQFEXJUI&41$  POFPGUIF&41TFSJFT NJDSPDPOUSPMMFSNPEVMFT w #BTFEPO3*4$7 BSDIJUFDUVSF w &YUSFNFMZTNBMMBOE B ff PSEBCMF 14

Slide 15

Slide 15 text

My device2: ESP32-DevKitC w &41EFWFMPQNFOUCPBSE EFWFMPQFEBOENBSLFUFECZ &TQSFTTJG4ZTUFNT w #BTFEPO9UFOTB BSDIJUFDUVSF 15

Slide 16

Slide 16 text

Let's start porting!

Slide 17

Slide 17 text

Steps for Porting πŸ“  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 17

Slide 18

Slide 18 text

Steps for Porting πŸ“  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 18 /FYU6Q

Slide 19

Slide 19 text

Introduction to Compilation, Linking, and Archiving 19

Slide 20

Slide 20 text

Introduction to Compilation, Linking, and Archiving 20 $PNQJMF

Slide 21

Slide 21 text

Introduction to Compilation, Linking, and Archiving 21 -JOL

Slide 22

Slide 22 text

Introduction to Compilation, Linking, and Archiving 22 "SDIJWF

Slide 23

Slide 23 text

Introduction to Cross-Compilation 23 'PSY 'PSY 'PSY 'PSY 'PSY 'PSY

Slide 24

Slide 24 text

Introduction to Cross-Compilation 24 'PS9UFOTB3*4$7 'PS9UFOTB3*4$7 'PS9UFOTB3*4$7 'PS9UFOTB3*4$7 'PS9UFOTB3*4$7 'PS9UFOTB3*4$7

Slide 25

Slide 25 text

File Structure of PicoRuby/R2P2 25

Slide 26

Slide 26 text

File Structure of PicoRuby/R2P2 26

Slide 27

Slide 27 text

File Structure of PicoRuby/R2P2 27

Slide 28

Slide 28 text

File Structure of PicoRuby/R2P2 28

Slide 29

Slide 29 text

File Structure of PicoRuby/R2P2 29

Slide 30

Slide 30 text

File Structure of PicoRuby/R2P2 30

Slide 31

Slide 31 text

File Structure of PicoRuby/R2P2 31 -FU`TDSFBUFUIJT fi MF

Slide 32

Slide 32 text

ESP-IDF w &41*%'JTBEFWFMPQNFOU GSBNFXPSLGPS&41  QVCMJTIFECZ&TQSFTTJG 4ZTUFNT w #ZGPMMPXJOHUIFP ff i DJBM EPDVNFOUBUJPOGPSTFUVQ ZPV DBOVTFDPNQJMFST MJOLFST  BOEBSDIJWFSTGPSCPUI3*4$ 7BOE9UFOTB 32 IUUQTEPDTFTQSFTTJGDPNQSPKFDUTFTQJEGFOW FTQHFUTUBSUFEMJOVYNBDPTTFUVQIUNM

Slide 33

Slide 33 text

Writing build_config w 5IFCVJME@DPO fi HEJSFDUPSZJO 1JDP3VCZDPOUBJOT fi MFTGPS CVJMEJOHPOWBSJPVT NJDSPDPOUSPMMFSTBOE FOWJSPONFOUT w 5IFTF fi MFTBSFBMTPXSJUUFOJO 3VCZ 33 TLJQQFEʜ

Slide 34

Slide 34 text

Writing build_config 34 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc DPOGUPPMDIBJO HDD  DPOGDDDPNNBOEYUFOTBFTQFMGHDD DPOGMJOLFSDPNNBOEYUFOTBFTQFMGME DPOGBSDIJWFSDPNNBOEYUFOTBFTQFMGBS DPOGDDIPTU@DPNNBOEHDD DPOGQJDPSVCZ BMMPD@MJCDGBMTF  FOE QJDPSVCZCVJME@DPO fi HYUFOTBFTQSC 4FUUJOH6Q$PNQJMFS -JOLFS BOE "SDIJWFS$PNNBOETGPS9UFOTB "EE$POTUBOUTBOE0UIFS0QUJPOT BT/FFEFE

Slide 35

Slide 35 text

Writing build_config 35 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc DPOGUPPMDIBJO HDD  DPOGDDDPNNBOESJTDWFTQFMGHDD DPOGMJOLFSDPNNBOESJTDWFTQFMGME DPOGBSDIJWFSDPNNBOESJTDWFTQFMGBS DPOGDDIPTU@DPNNBOEHDD DPOGQJDPSVCZ BMMPD@MJCDGBMTF  FOE QJDPSVCZCVJME@DPO fi HSJTDWFTQSC

Slide 36

Slide 36 text

rake w 4QFDJGZUIFCVJME@DPO fi HOBNFVTJOHUIF.36#:@$0/'*( FOWJSPONFOUWBSJBCMF w #VJMEVTJOHUIFSBLFDPNNBOE 36 GPS9UFOTB .36#:@$0/'*(YUFOTBFTQSBLF GPS3*4$7 .36#:@$0/'*(SJTDWFTQSBLF

Slide 37

Slide 37 text

rake w 8FDBOTFFUIBUMJCNSVCZBIBTCFFOHFOFSBUFE 37 MTCVJMEFTQMJC MJCNSVCZBMJCNSVCZ@DPSFB

Slide 38

Slide 38 text

Steps for Porting πŸ“  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 38 +VTU5BMLFE

Slide 39

Slide 39 text

Steps for Porting πŸ“  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 39 /FYU6Q

Slide 40

Slide 40 text

File Structure of PicoRuby/R2P2 40 $SFBUFE

Slide 41

Slide 41 text

File Structure of PicoRuby/R2P2 41 "OEDSFBUFUIJT fi MF -FU`TDSFBUFUIJTQSPKFDU

Slide 42

Slide 42 text

Creating an ESP-IDF Project w 'PMMPXTUIFTBNFQSPDFEVSF BTEFWFMPQJOHXJUI$ w *OBNFEUIJTQSPKFDU31 &41 42 IUUQTEPDTFTQSFTTJGDPNQSPKFDUTFTQJEGFOWFTQ HFUTUBSUFEMJOVYNBDPTTFUVQIUNMTUBSUBQSPKFDU

Slide 43

Slide 43 text

Writing main.c 43 JODMVEFNSCNBJO@UBTLD ʜ 5IJTGVODUJPOJTUIFFOUSZQPJOU WPJEBQQ@NBJO WPJE  \ NSCD@JOJU IFBQ@QPPM )&"1@4*;&  NSCD@UDC NBJO@UDCNSCD@DSFBUF@UBTL NBJO@UBTL   NSCD@TFU@UBTL@OBNF NBJO@UDC NBJO@UBTL  NSCD@SVO  ^ 31&41NBJONBJOD *OJUJBMJ[BUJPO 1BTTJOHUIF)FBQ .FNPSZ"SFB  3VOUIF7. $SFBUFBOFYFDVUJPODPOUFYU DBMMFEBUBTL

Slide 44

Slide 44 text

Writing main.c 44 JODMVEFNSCNBJO@UBTLD ʜ 5IJTGVODUJPOJTUIFFOUSZQPJOU WPJEBQQ@NBJO WPJE  \ NSCD@JOJU IFBQ@QPPM )&"1@4*;&  NSCD@UDC NBJO@UDCNSCD@DSFBUF@UBTL NBJO@UBTL   NSCD@TFU@UBTL@OBNF NBJO@UDC NBJO@UBTL  NSCD@SVO  ^ 31&41NBJONBJOD 8IBUEPUIFTFDPEFTEP 

Slide 45

Slide 45 text

Binary for the PicoRuby VM 45 QVUT)FMMPXPSME NSCMJCNBJO@UBTLSC JODMVEFTUEJOUI JGEFG@@DQMVTQMVT FYUFSO FOEJG DPOTUVJOU@UNBJO@UBTL<>\ Y Y Y Y Y Y Y Y Y Y Y YE Y Y YE YC  ʜ ^ NSCNBJO@UBTLD QJDPSCD#NBJO@UBTLPNSCNBJO@UBTLDMJCNBJO@UBTLSC *OQVU 0VUQVU

Slide 46

Slide 46 text

Writing CMakeLists.txt 46 TFU 1*$036#:@%*3\$0.10/&/5@%*3^QJDPSVCZ  TFU -*#.36#:@'*-&\1*$036#:@%*3^CVJMEFTQMJCMJCNSVCZB  BEE@QSFCVJMU@MJCSBSZ MJCNSVCZ\-*#.36#:@'*-&^3&26*3&4\$0.10/&/5@/".&^  UBSHFU@MJOL@MJCSBSJFT \$0.10/&/5@-*#^13*7"5&MJCNSVCZ  UBSHFU@JODMVEF@EJSFDUPSJFT  \$0.10/&/5@-*#^ 13*7"5& \$0.10/&/5@%*3^QJDPSVCZCVJMESFQPTFTQNSVCZDPNQJMFSJODMVEF \$0.10/&/5@%*3^QJDPSVCZCVJMESFQPTFTQNSVCZDPNQJMFSMJCQSJTNJODMVEF \$0.10/&/5@%*3^QJDPSVCZCVJMEFTQNSCHFNT 31&41DPNQPOFOUTQJDPSVCZFTQ$.BLF-JTUTUYU 3FGFSFODJOHMJCNSVCZB "EEMJCSBSJFTUPMJOL

Slide 47

Slide 47 text

Build with idf.py 47 JEGQZCVJME 1SPKFDUCVJMEDPNQMFUF5P fl BTI SVO JEGQZ fl BTI PS JEGQZQ1035 fl BTI PS QZUIPONFTQUPPMDIJQFTQCCFGPSFEFGBVMU@SFTFUBGUFSIBSE@SFTFUXSJUF@ fl BTI fl BTI@NPEFEJP  fl BTI@TJ[F.# fl BTI@GSFRNYCVJMECPPUMPBEFSCPPUMPBEFSCJOYCVJMEQBSUJUJPO@UBCMFQBSUJUJPO UBCMFCJOYCVJME31&41CJOYCVJMETUPSBHFCJO PSGSPNUIF6TFSTZVIFJHIRHJUIVCDPNQJDPSVCZ31&41CVJMEEJSFDUPSZ QZUIPONFTQUPPMDIJQFTQCCFGPSFEFGBVMU@SFTFUBGUFSIBSE@SFTFUXSJUF@ fl BTI! fl BTI@BSHT $PNQMFUF

Slide 48

Slide 48 text

Steps for Porting πŸ“  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 48 +VTU5BMLFE

Slide 49

Slide 49 text

Steps for Porting πŸ“  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 49 /FYU6Q

Slide 50

Slide 50 text

w 5SBDFUIF1JDP3VCZTPVSDFDPEFTUBSUJOHGSPNUIFQVUTNFUIPE BWBJMBCMFJO3VCZ w &WFOUVBMMZ JUMFBETUPUIFQJDPSVCZNBDIJOFNSCHFN 50 Exploring the Call Tree

Slide 51

Slide 51 text

w 5SBDFUIF1JDP3VCZTPVSDFDPEFTUBSUJOHGSPNUIFQVUTNFUIPE BWBJMBCMFJO3VCZ w &WFOUVBMMZ JUMFBETUPUIFQJDPSVCZNBDIJOFNSCHFN 51 Exploring the Call Tree

Slide 52

Slide 52 text

Modifying build_config w *O1JDP3VCZ NSCHFNTBSF BEEFEUISPVHICVJME@DPO fi H w "EEQJDPSVCZNBDIJOF 52 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc  DPOGHFNDPSFlQJDPSVCZNBDIJOF DPOGQJDPSVCZ BMMPD@MJCDGBMTF  FOE QJDPSVCZCVJME@DPO fi HYUFOTBFTQSC BOESJTDWFTQSC

Slide 53

Slide 53 text

File Structure of PicoRuby/R2P2 53

Slide 54

Slide 54 text

File Structure of PicoRuby/R2P2 54

Slide 55

Slide 55 text

File Structure of PicoRuby/R2P2 55

Slide 56

Slide 56 text

File Structure of PicoRuby/R2P2 56 'PS3BTQCFSSZ1J1JDP

Slide 57

Slide 57 text

File Structure of PicoRuby/R2P2 57 'PS3BTQCFSSZ1J1JDP

Slide 58

Slide 58 text

File Structure of PicoRuby/R2P2 58 4IPVMEDSFBUFUIJT fi MFBOE TXJUDIUIFDPNQJMFUBSHFU 'PS&41

Slide 59

Slide 59 text

Example implementation of hal_write in machine.c 59 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ UVE@DED@XSJUF CVG OCZUFT  JOUMFOUVE@DED@XSJUF@ fl VTI  SFUVSOMFO ^ QJDPSVCZNBDIJOFQPSUTSQNBDIJOFD JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ TIPVMEXSJUFDPEFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD w 5BLFTUIFGPMMPXJOHBSHVNFOUT w 0VUQVU fi MFEFTDSJQUPS w 0VUQVUEBUB w /VNCFSPGCZUFTUPXSJUF w .VTUSFUVSOUIFOVNCFSPG CZUFTXSJUUFO w )PXTIPVMEJUCFJNQMFNFOUFE

Slide 60

Slide 60 text

Example implementation of hal_write in machine.c 60 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ UVE@DED@XSJUF CVG OCZUFT  JOUMFOUVE@DED@XSJUF@ fl VTI  SFUVSOMFO ^ QJDPSVCZNBDIJOFQPSUTSQNBDIJOFD JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ TIPVMEXSJUFDPEFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD w UVE@DED@XSJUF JTBGVODUJPO QSPWJEFECZ5JOZ64# w *UJTOPUJODMVEFEJO&41*%' CZEFGBVMU w *O&41*%' TUEJPIDBOCF VTFE BOETUBOEBSEPVUQVUJT EJSFDUFEUPTFSJBM DPNNVOJDBUJPO

Slide 61

Slide 61 text

JODMVEFTUEJPI JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ GPS JOUJJOCZUFTJ \ QVUDIBS DIBS CVG  ^  ffl VTI TUEPVU  SFUVSOOCZUFT ^ Example implementation of hal_write in machine.c 61 QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD w 6MUJNBUFMZ JUXBT JNQMFNFOUFEBTTIPXOJOUIF DPEFPOUIFSJHIU w )PXFWFS *FODPVOUFSFE TFWFSBMGBJMVSFTBMPOHUIF XBZ w *XJMMFYQMBJOUIFNMBUFS

Slide 62

Slide 62 text

w 3FXSJUFPUIFSGVODUJPOTVTJOH UIFTBNFBQQSPBDIBTCFGPSF w .PTUPG1JDP3VCZ`TQPSUJOH XPSLDPOTJTUTPGUIJTQSPDFTT w 0ODFNBDIJOFDJTDPNQMFUF  TUBOEBSEJOQVUBOEPVUQVU XJMMCFBWBJMBCMF 62 Porting other functions TUS D QSJOU1MFBTFFOUFSTPNFUFYUaO XIJMFDaO TUS D*0HFUDI  QSJOUD FOE QVUTTUS NSCMJCNBJO@UBTLSC 1MFBTFFOUFSTPNFUFYU )FMMP 3VCZ,BJHJ )FMMP 3VCZ,BJHJ

Slide 63

Slide 63 text

Steps for Porting  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 63 +VTU5BMLFE

Slide 64

Slide 64 text

Steps for Porting  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 64 /FYU6Q

Slide 65

Slide 65 text

w &OBCMFUIFFDIPDPNNBOEJOUIFTIFMM w "EENSCHFNTPUIFSUIBOQJDPSVCZNBDIJOF 65 My Goal for This Task

Slide 66

Slide 66 text

Writing main_task.rb w 1SFQBSJOHB3VCZQSPHSBNUP MBVODIUIFTIFMM w &YUSBDUPOMZUIFOFDFTTBSZ DPEFGSPNUIF31QSPHSBN 66 SFRVJSFTIFMM SFRVJSFbNBDIJOF 45%*/*0 45%065*0 CFHJO 45%*/FDIPGBMTF TIFMM4IFMMOFX DMFBOUSVF  QVUT4UBSUJOHTIFMMaOaO TIFMMTIPX@MPHP TIFMMTUBSU SFTDVFF QVUT/PUBWBJMBCMF QVUT\FNFTTBHF^ \FDMBTT^  FOE NSCMJCNBJO@UBTLSC

Slide 67

Slide 67 text

w NSCHFNTOFFEFEUPFYFDVUFUIFFDIPDPNNBOEJOUIFTIFMM 67 Listing required mrbgems QJDPSVCZTIFMM QJDPSVCZFEJUPS QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU QJDPSVCZWGT QJDPSVCZNFUBQSPH QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF

Slide 68

Slide 68 text

w 4PNFNSCHFNTDPOUBJOPOMZ3VCZ fi MFT OPQPSUJOHOFFEFE 68 Listing required mrbgems βœ…QJDPSVCZTIFMM βœ…QJDPSVCZFEJUPS QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU βœ…QJDPSVCZWGT QJDPSVCZNFUBQSPH QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF

Slide 69

Slide 69 text

w 4PNFNSCHFNTEPOPUIBWFBQPSUEJSFDUPSZ OPQPSUJOHOFFEFE 69 Listing required mrbgems βœ…QJDPSVCZTIFMM βœ…QJDPSVCZFEJUPS βœ…QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU βœ…QJDPSVCZWGT βœ…QJDPSVCZNFUBQSPH βœ…QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF

Slide 70

Slide 70 text

w *IBWFBMSFBEZDPNQMFUFEQPSUJOHQJDPSVCZNBDIJOF w 70 Listing required mrbgems βœ…QJDPSVCZTIFMM βœ…QJDPSVCZFEJUPS βœ…QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU βœ…QJDPSVCZWGT βœ…QJDPSVCZNFUBQSPH βœ…QJDPSVCZUJNFDMBTT βœ…QJDPSVCZNBDIJOF

Slide 71

Slide 71 text

w 5IFSFGPSF NSCHFNTTUJMMOFFEUPCFQPSUFE 71 Listing required mrbgems βœ…QJDPSVCZTIFMM βœ…QJDPSVCZFEJUPS βœ…QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU βœ…QJDPSVCZWGT βœ…QJDPSVCZNFUBQSPH βœ…QJDPSVCZUJNFDMBTT βœ…QJDPSVCZNBDIJOF

Slide 72

Slide 72 text

picoruby-env and picoruby-io-console w 5IFTFNSCHFNTSBOPO&41XJUIPVUNPEJ fi DBUJPO VTJOHUIF FYJTUJOH31DPEF w 5IFSFGPSF UIF fi MFTXFSFSFVTFE 72 $PQZEJSFDUPSJFTBOE fi MFT

Slide 73

Slide 73 text

picoruby-filesystem-fat w -JLFQJDPSVCZNBDIJOF JUXPVMEOPSNBMMZSFRVJSFQPSUJOH w )PXFWFS GPSSVOOJOHUIFFDIPDPNNBOE UIFDPEFJTOPU OFDFTTBSZ 73

Slide 74

Slide 74 text

picoruby-filesystem-fat w .JTTJOHGVODUJPOTDBVTF MJOLFSFSSPST w 5PQSFWFOUUIJT EF fi OFFNQUZ GVODUJPOTPOMZGPSUIPTF SFGFSFODFECZPUIFSDPEF 74 JODMVEFMJC ff CTPVSDF ff I 50%0*NQMFNFOUUIJTGVODUJPOMPHJD WPJE '*-&@QIZTJDBM@BEESFTT '*- GQ VJOU@U BEES  \ ^ 50%0*NQMFNFOUUIJTGVODUJPOMPHJD JOU '*-&@TFDUPS@TJ[F WPJE  \ SFUVSO ^ QJDPSVCZ fi MFTZTUFNGBUQPSUTFTQ fl BTI@EJTLD

Slide 75

Slide 75 text

w "MMNSCHFNTBSFSFBEZπŸ‘ 75 Listing required mrbgems βœ…QJDPSVCZTIFMM βœ…QJDPSVCZFEJUPS βœ…QJDPSVCZTBOECPY βœ…QJDPSVCZFOW βœ…QJDPSVCZJPDPOTPMF βœ…QJDPSVCZ fi MFTZTUFNGBU βœ…QJDPSVCZWGT βœ…QJDPSVCZNFUBQSPH βœ…QJDPSVCZUJNFDMBTT βœ…QJDPSVCZNBDIJOF

Slide 76

Slide 76 text

Steps for Porting  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 76 +VTU5BMLFE

Slide 77

Slide 77 text

Steps for Porting β†’ Completed πŸŽ‰  #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB  -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT  *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU  1PSUBEEJUJPOBMNSCHFNT 77

Slide 78

Slide 78 text

Did Porting Seem Easy? w :FT JUTTJNQMFJGZPVLOPXUIFDPSSFDUTUFQT w "TMPOHBTOPUIJOHHPFTXSPOH😏 78

Slide 79

Slide 79 text

Troubleshooting collection

Slide 80

Slide 80 text

case1: Watchdog Timer Error w 5IFGPMMPXJOHFSSPSPDDVSSFEPOUIFEFWJDF 80 &  UBTL@XEU5BTLXBUDIEPHHPUUSJHHFSFE5IFGPMMPXJOHUBTLTVTFSTEJEOPUSFTFUUIFXBUDIEPHJOUJNF &  UBTL@XEU*%-& $16  &  UBTL@XEU5BTLTDVSSFOUMZSVOOJOH &  UBTL@XEU$16NBJO &  UBTL@XEU$16*%-& &  UBTL@XEU1SJOU$16 DVSSFOUDPSF CBDLUSBDF

Slide 81

Slide 81 text

case1: Watchdog Timer Error w "UJNFSVTFEUPEFUFDUJGBQSPHSBNIBTDSBTIFEPSGSP[FO w "GFBUVSFQSPWJEFECZ'SFF3504 UIFSFBMUJNF04SVOOJOHPO &41 81

Slide 82

Slide 82 text

case1: Watchdog Timer Error w 8IZ8BTUIF8BUDIEPH5JNFS5SJHHFSFE  w 1JDP3VCZIBTJUTPXONFDIBOJTNGPSDPOUFYUTXJUDIJOHXJUIJO UIF7. 5$#  w 5IJTBMMPXTDPOUFYUTXJUDIJOHSFHBSEMFTTPGUIF04UZQFPS XIFUIFSBO04JTQSFTFOUPOUIFNJDSPDPOUSPMMFS 82

Slide 83

Slide 83 text

case1: Watchdog Timer Error w 6OMFTTUIF3VCZQSPHSBNFYQMJDJUMZJODMVEFTTMFFQ UIF$16 SFNBJOTDPOUJOVPVTMZBDUJWF w "TBSFTVMU 'SFF3504JOUFSQSFUTUIJTBTBSVOBXBZQSPHSBNTJODF UIF$16JTOPUJEMJOH 83

Slide 84

Slide 84 text

case1: Watchdog Timer Error w %FDJEFEUPEJTBCMFUIF 8BUDIEPH5JNFSBTB DPVOUFSNFBTVSF w $POUFYUTXJUDIJOHJT IBOEMFECZ5$# w 5IFPSJHJOBM31QSPKFDUIBT BEPQUFEUIFTBNFBQQSPBDI 84 JODMVEFNSCNBJO@UBTLD  WPJEQJDPSVCZ@FTQ WPJE  \ %JTBCMF58%5 FTQ@UBTL@XEU@EFJOJU  NSCD@JOJU IFBQ@QPPM )&"1@4*;&   ^ 31&41NBJONBJOD TIPVMEDBMMJU

Slide 85

Slide 85 text

case 2: β€œrequire” Doesn't Work w 8IFOFYFDVUJOHlSFRVJSFzJOB3VCZQSPHSBN UIFGPMMPXJOHFSSPS PDDVST 85 &YDFQUJPO WN@JE VOEF fi OFEMPDBMWBSJBCMFPSNFUIPESFRVJSFGPS0CKFDU /P.FUIPE&SSPS

Slide 86

Slide 86 text

case 2: β€œrequire” Doesn't Work w QJDPSVCZTIFMMBOEQJDPSVCZ SFRVJSFHFOFSBUF$TPVSDF DPEFEVSJOHUIFCVJME QSPDFTT w 5IFJOJUJBMJ[BUJPOGVODUJPOT EF fi OFEJOUIFTFTPVSDF fi MFT NVTUCFDBMMFEGSPNUIFNBJO GVODUJPO 86 TUBUJDQJDPHFNTQSFCVJMU@HFNT<>\ \NBDIJOF NBDIJOF NSCD@NBDIJOF@JOJU GBMTF^  \FOW FOW NSCD@FOW@JOJU GBMTF^   \/6-- /6-- /6-- USVF^ TFOUJOFM  ^  WPJE QJDPSVCZ@JOJU@SFRVJSF NSCD@WN WN  \  ^ QJDPSVCZCVJMEFTQNSCHFNTQJDPHFN@JOJUD

Slide 87

Slide 87 text

case 2: β€œrequire” Doesn't Work w QJDPSVCZTIFMMBOEQJDPSVCZ SFRVJSFHFOFSBUF$TPVSDF DPEFEVSJOHUIFCVJME QSPDFTT w 5IFJOJUJBMJ[BUJPOGVODUJPOT EF fi OFEJOUIFTFTPVSDF fi MFT NVTUCFDBMMFEGSPNUIFNBJO GVODUJPO 87 JODMVEFNSCNBJO@UBTLD WPJEBQQ@NBJO WPJE  \ EJTBCMF8%5 FTQ@UBTL@XEU@EFJOJU  NSCD@JOJU IFBQ@QPPM )&"1@4*;&   QJDPSVCZ@JOJU@SFRVJSF WN  QJDPSVCZ@JOJU@FYFDVUBCMFT WN  NSCD@SVO  ^ 31&41NBJONBJOD 4IPVMEDBMMJU

Slide 88

Slide 88 text

case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 88 JSC JSCB    JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN  JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE

Slide 89

Slide 89 text

case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 89 JSC JSCB    JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN  JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE 0,

Slide 90

Slide 90 text

case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 90 JSC JSCB    JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN  JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE /(

Slide 91

Slide 91 text

case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 91 JSC JSCB    JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN  JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE

Slide 92

Slide 92 text

case 3: Stack overflow w 'SFF3504TUBSUTUIF BQQ@NBJOUBTLBUCPPU BOE 1JDP3VCZ7.SVOTXJUIJOUIJT UBTL w #ZEFGBVMU UIFBQQ@NBJOUBTL IBTBTUBDLTJ[FPG  CZUFTBMMPDBUFE 92

Slide 93

Slide 93 text

case 3: Stack overflow w 'VODUJPODBMMTBOEMPDBM BVUPNBUJD WBSJBCMFT DPOTVNFTUBDLNFNPSZ w *GVTBHFFYDFFET CZUFT  BTUBDLPWFS fl PXPDDVST 93

Slide 94

Slide 94 text

case 3: Stack overflow w *O&41*%' UIFTUBDLTJ[FPG UIFBQQ@NBJOUBTLDBOCF NPEJ fi FEWJBDPO fi HVSBUJPO w "EEUIFGPMMPXJOHFOUSZUP TELDPO fi HEFGBVMUTUPDIBOHF UIFTUBDLTJ[F 94 $0/'*(@&41@."*/@5"4,@45"$,@4*;& 31&41TELDPO fi HEFGBVMUT

Slide 95

Slide 95 text

case 4: CSI Command Not Working w 31DIFDLTUIFUFSNJOBM FNVMBUPSTUBUFBUTUBSUVQ w 4QFDJ fi DBMMZ JUVTFT$4* $POUSPM4FRVFODF *OUSPEVDFS %43 %FWJDF 4UBUVT3FQPSU GPSUIJT QVSQPTF 95 DMBTT*0  EFGTFMGXBJU@UFSNJOBM UJNFPVU  SFT 45%*/SFBE@OPOCMPDL   45%065QSJOUaF<O$4*%43  UJNFPVU  UP@JUJNFTEPcJc SFT45%*/SFBE@OPOCMPDL  UP@T CSFBLJJGSFTMFOHUI TMFFQ@NT FOE &/7<5&3.>SFTTUBSU@XJUI aF<O  BOTJ EVNC FOE QJDPSVCZJPDPOTPMFNSCMJCJPDPOTPMFSC

Slide 96

Slide 96 text

case 4: CSI Command Not Working w 31DIFDLTUIFUFSNJOBM FNVMBUPSTUBUFBUTUBSUVQ w 4QFDJ fi DBMMZ JUVTFT$4* $POUSPM4FRVFODF *OUSPEVDFS %43 %FWJDF 4UBUVT3FQPSU GPSUIJT QVSQPTF 96 DMBTT*0  EFGTFMGXBJU@UFSNJOBM UJNFPVU  SFT 45%*/SFBE@OPOCMPDL   45%065QSJOUaF<O$4*%43  UJNFPVU  UP@JUJNFTEPcJc SFT45%*/SFBE@OPOCMPDL  UP@T CSFBLJJGSFTMFOHUI TMFFQ@NT FOE &/7<5&3.>SFTTUBSU@XJUI aF<O  BOTJ EVNC FOE QJDPSVCZJPDPOTPMFNSCMJCJPDPOTPMFSC

Slide 97

Slide 97 text

case 4: CSI Command Not Working w *GUIFUFSNJOBMFNVMBUPSJT SFBEZ JUTIPVMESFDFJWF aF<OGSPNTUBOEBSEJOQVU w )PXFWFS BOJTTVFPDDVSSFE XIFSFUIJTJOQVUXBTOPU CFJOHSFBEQSPQFSMZ 97 DMBTT*0  EFGTFMGXBJU@UFSNJOBM UJNFPVU  SFT 45%*/SFBE@OPOCMPDL   45%065QSJOUaF<O$4*%43  UJNFPVU  UP@JUJNFTEPcJc SFT45%*/SFBE@OPOCMPDL  UP@T CSFBLJJGSFTMFOHUI TMFFQ@NT FOE &/7<5&3.>SFTTUBSU@XJUI aF<O  BOTJ EVNC FOE QJDPSVCZJPDPOTPMFNSCMJCJPDPOTPMFSC

Slide 98

Slide 98 text

case 4: CSI Command Not Working w *G$4*%43GBJMT UIFGBNJMJBS 1JDP3VCZMPHPEPFTOU BQQFBS w 5IJTJTBTFSJPVTJTTVF😱 98

Slide 99

Slide 99 text

case 4: CSI Command Not Working w 5IFDBVTFXBTUIFJOJUJBMMZ QPSUFEQJDPSVCZNBDIJOF w "U fi STU *IBEJNQMFNFOUFEJU MJLFUIJT 99 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ SFUVSOQSJOUG CVG  ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD

Slide 100

Slide 100 text

case 4: CSI Command Not Working w $BOZPVTQPUUIFEJ ff FSFODF 100 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ SFUVSOQSJOUG CVG  ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ GPS JOUJJOCZUFTJ \ QVUDIBS DIBS CVG  ^  ffl VTI TUEPVU  SFUVSOOCZUFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD #FGPSF "GUFS

Slide 101

Slide 101 text

case 4: CSI Command Not Working w 5IFDPEFCFGPSFUIF fi YIBE UXPJTTVFT  *UJHOPSFEOCZUFT UIF OVNCFSPGCZUFTUPXSJUF  *UEJEOPUDBMM ffl VTI TP UIF$4*DPNNBOENJHIU SFNBJOCV ff FSFEBOEOPU TFOUJNNFEJBUFMZ 101 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ SFUVSOQSJOUG CVG  ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD

Slide 102

Slide 102 text

case 4: CSI Command Not Working w "GUFS fi YJOHQJDPSVCZNBDIJOF UIF$4*DPNNBOETUBSUFEXPSLJOH QSPQFSMZ 102 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT  \ GPS JOUJJOCZUFTJ \ QVUDIBS DIBS CVG  ^  ffl VTI TUEPVU  SFUVSOOCZUFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD

Slide 103

Slide 103 text

Demo

Slide 104

Slide 104 text

104

Slide 105

Slide 105 text

Demo explanation 105

Slide 106

Slide 106 text

Demo explanation 106 $PNNVOJDBUJOH XJUIUIF.BUSJY -&%WJB41* QJDPSVCZTQJ

Slide 107

Slide 107 text

Demo explanation 107 3FBEJOHUIF9 BYJTUJMUGSPNUIF +PZTUJDLVTJOH "%$ QJDPSVCZBED

Slide 108

Slide 108 text

Demo explanation 108 (FOFSBUJOHTPVOE CZPVUQVUUJOH XBWFGPSNTWJB 18.UPUIFQJF[P FMFNFOU QJDPSVCZQXN

Slide 109

Slide 109 text

Conclusion

Slide 110

Slide 110 text

Summary w 5IJTTFTTJPODPWFSFEQPSUJOH1JDP3VCZUP&41 w 5IFQSPDFTTBQQMJFTUPPUIFSNJDSPDPOUSPMMFSTUPP w 1PSUJOHUP45.BOEO3'JTDPOTJEFSFE w "HSFBUDIBODFUPDPOUSJCVUFπŸš€ 110

Slide 111

Slide 111 text

Summary w 0GDPVSTF UIFSFBSFTUJMMNBOZXBZTUPDPOUSJCVUFUP&41 w *GZPVSFJOUFSFTUFE MFUTUBML w *CSPVHIUTPNFEFWJDFTUPTIBSF 111

Slide 112

Slide 112 text

Summary w 1MFBTFWJTJUUIFGPMMPXJOHSFQPTJUPSZ w IUUQTHJUIVCDPNQJDPSVCZ31&41 w IUUQTHJUIVCDPNQJDPSVCZQJDPSVCZ 112

Slide 113

Slide 113 text

end Thank you for coming!