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

Porting PicoRuby to Another Microcontroller: ESP32

Avatar for Y_uuu Y_uuu
April 18, 2025

Porting PicoRuby to Another Microcontroller: ESP32

RubyKaigi 2025 Day.3
https://rubykaigi.org/2025/presentations/Y_uuu.html#day3

Avatar for Y_uuu

Y_uuu

April 18, 2025
Tweet

More Decks by Y_uuu

Other Decks in Technology

Transcript

  1. 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
  2. PicoRuby is portable w *UJTCVJMUUPTVQQPSUPQFSBUJPOPOEJ ff FSFOUNJDSPDPOUSPMMFST w 'JMFTBOEEJSFDUPSJFTBSFFYQMJDJUMZTFQBSBUFEUPIBOEMF NJDSPDPOUSPMMFSTQFDJ

    fi DEJ ff FSFODFT w &BTZQPSUJOHBMMPXTUIFFYJTUJOHFDPTZTUFNUPCFMFWFSBHFEBDSPTT EJ ff FSFOUNJDSPDPOUSPMMFST 9
  3. Porting PicoRuby is still a work in progress w 5IFSFBSFOPUNBOZ

    NJDSPDPOUSPMMFSTUIBUDBO FBTJMZSVO1JDP3VCZ w 5IFDSFBUPSPG1JDP3VCZJT BMTPFBHFSUPTFFNPSFQPSUT 10 IUUQTQJDPSVCZHJUIVCJPDPOUSJCVUJPOIUNM
  4. 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
  5. ESP32 w "MPXDPTU MPXQPXFS NJDSPDPOUSPMMFSNPEVMF EFWFMPQFECZ&TQSFTTJG 4ZTUFNT w 8JEFMZVTFEJOWBSJPVT EFWJDFT

    JODMVEJOH.4UBDL w 4VQQPSUTXJSFMFTT DPNNVOJDBUJPOTVDIBT8J'J BOE#MVFUPPUI 13
  6. My device1: M5Stamp C3 Mate w &RVJQQFEXJUI&41$ POFPGUIF&41TFSJFT NJDSPDPOUSPMMFSNPEVMFT

    w #BTFEPO3*4$7 BSDIJUFDUVSF w &YUSFNFMZTNBMMBOE B ff PSEBCMF 14
  7. 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
  8. Writing build_config w 5IFCVJME@DPO fi HEJSFDUPSZJO 1JDP3VCZDPOUBJOT fi MFTGPS CVJMEJOHPOWBSJPVT

    NJDSPDPOUSPMMFSTBOE FOWJSPONFOUT w 5IFTF fi MFTBSFBMTPXSJUUFOJO 3VCZ 33 TLJQQFEʜ
  9. 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
  10. Writing build_config 35 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc DPOGUPPMDIBJO HDD DPOGDDDPNNBOESJTDWFTQFMGHDD

    DPOGMJOLFSDPNNBOESJTDWFTQFMGME DPOGBSDIJWFSDPNNBOESJTDWFTQFMGBS DPOGDDIPTU@DPNNBOEHDD DPOGQJDPSVCZ BMMPD@MJCDGBMTF FOE QJDPSVCZCVJME@DPO fi HSJTDWFTQSC
  11. Creating an ESP-IDF Project w 'PMMPXTUIFTBNFQSPDFEVSF BTEFWFMPQJOHXJUI$ w *OBNFEUIJTQSPKFDU31 &41

    42 IUUQTEPDTFTQSFTTJGDPNQSPKFDUTFTQJEGFOWFTQ HFUTUBSUFEMJOVYNBDPTTFUVQIUNMTUBSUBQSPKFDU
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. JODMVEFTUEJPI JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ GPS

    JOUJJOCZUFTJ \ QVUDIBS DIBS CVG <J> ^ 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
  21. 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
  22. 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
  23. w NSCHFNTOFFEFEUPFYFDVUFUIFFDIPDPNNBOEJOUIFTIFMM 67 Listing required mrbgems QJDPSVCZTIFMM QJDPSVCZFEJUPS QJDPSVCZTBOECPY QJDPSVCZFOW

    QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU QJDPSVCZWGT QJDPSVCZNFUBQSPH QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF
  24. w 4PNFNSCHFNTDPOUBJOPOMZ3VCZ fi MFT OPQPSUJOHOFFEFE 68 Listing required mrbgems ✅QJDPSVCZTIFMM

    ✅QJDPSVCZFEJUPS QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT QJDPSVCZNFUBQSPH QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF
  25. w 4PNFNSCHFNTEPOPUIBWFBQPSUEJSFDUPSZ OPQPSUJOHOFFEFE 69 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY

    QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF
  26. w *IBWFBMSFBEZDPNQMFUFEQPSUJOHQJDPSVCZNBDIJOF w 70 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY

    QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT ✅QJDPSVCZNBDIJOF
  27. w 5IFSFGPSF NSCHFNTTUJMMOFFEUPCFQPSUFE 71 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY

    QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT ✅QJDPSVCZNBDIJOF
  28. 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
  29. w "MMNSCHFNTBSFSFBEZ👍 75 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY ✅QJDPSVCZFOW

    ✅QJDPSVCZJPDPOTPMF ✅QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT ✅QJDPSVCZNBDIJOF
  30. 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
  31. case1: Watchdog Timer Error w 8IZ8BTUIF8BUDIEPH5JNFS5SJHHFSFE w 1JDP3VCZIBTJUTPXONFDIBOJTNGPSDPOUFYUTXJUDIJOHXJUIJO UIF7.

    5$# w 5IJTBMMPXTDPOUFYUTXJUDIJOHSFHBSEMFTTPGUIF04UZQFPS XIFUIFSBO04JTQSFTFOUPOUIFNJDSPDPOUSPMMFS 82
  32. 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
  33. case 2: “require” Doesn't Work w 8IFOFYFDVUJOHlSFRVJSFzJOB3VCZQSPHSBN UIFGPMMPXJOHFSSPS PDDVST 85

    &YDFQUJPO WN@JE VOEF fi OFEMPDBMWBSJBCMFPSNFUIPESFRVJSFGPS0CKFDU /P.FUIPE&SSPS
  34. 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
  35. 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
  36. case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 88 JSC

    JSCB JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE
  37. 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,
  38. case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 90 JSC

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

    JSCB JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE
  40. case 3: Stack overflow w 'SFF3504TUBSUTUIF BQQ@NBJOUBTLBUCPPU BOE 1JDP3VCZ7.SVOTXJUIJOUIJT UBTL

    w #ZEFGBVMU UIFBQQ@NBJOUBTL IBTBTUBDLTJ[FPG CZUFTBMMPDBUFE 92
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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 <J> ^ ffl VTI TUEPVU SFUVSOOCZUFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD #FGPSF "GUFS
  47. 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
  48. 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 <J> ^ ffl VTI TUEPVU SFUVSOOCZUFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD
  49. 104