Upgrade to Pro — share decks privately, control downloads, hide ads and more …

低予算電子工作 ARMマイコンを使えるようにする

Fadis
May 09, 2015

低予算電子工作 ARMマイコンを使えるようにする

LPC1114FN28を使ってmbedで書いたコードを実行できるようにするところまでを解説します

Fadis

May 09, 2015
Tweet

More Decks by Fadis

Other Decks in Technology

Transcript

  1. ௿༧ࢉిࢠ޻࡞
    "3.ϚΠίϯΛ࢖͑ΔΑ͏ʹ͢Δ
    Naomasa Matsubayashi

    View Slide

  2. mbed
    ϒϥ΢β্Ͱಈ͘ARMϚΠίϯͷ౷߹։ൃ؀ڥ
    https://developer.mbed.org/

    View Slide

  3. mbed
    mbedͰॻ͍ͨίʔυΛ
    ग़དྷΔ͚ͩ௿༧ࢉͰ࣮ߦ͢ΔࣄΛ໨ࢦ͢

    View Slide

  4. mbedͱ͍͑͹͜͏͍͏ϋʔυ΢ΣΞ͕༗໊͚ͩͲߴ͍
    NCFE-1$
    ௨শ੨͍NCFE
    NCFE-1$6
    ௨শԫ৭͍NCFE
    ԁ͔Β
    ԁ͘Β͍
    ԁ͔Β
    ԁ͘Β͍

    View Slide

  5. mbed LPC1114FN28ͳΒͪΐͬͱ͍҆
    mbed LPC1114FN28
    ԁ͔Β
    ԁ͘Β͍

    View Slide

  6. ͭ͡͸্ʹࡌͬͯΔϚΠίϯ͚ͩͩͱ200ԁఔ
    ͜͜ʹࡌͬͯΔ
    DIPͷϚΠίϯ
    LPC1114FN28
    ͚ͩ
    ϚϧπͰ220ԁ
    ڞཱͰ200ԁ
    ळ݄Ͱ140ԁ

    View Slide

  7. ॻ͖ࠐΈ͑͞Կͱ͔͢Ε͹ϚΠίϯ͸200ԁఔͰࡁΉ
    Լʹ͍͍ͭͯΔͷ͸
    64#͔Β؆୯ʹ
    ॻ͖ࠐΉͨΊͷϋʔυ΢ΣΞ

    View Slide

  8. LPC1114FN28
    ARM Cortex-M0ϚΠίϯ
    ࠷େ48MHz(ΫϩοΫ಺ଂ)
    ಺ଂϑϥογϡ32KB
    (࣮ߦՄೳόΠφϦͷαΠζ͸32KB·Ͱ)
    ಺ଂRAM4KB
    (࣮ߦதʹ࢖͑ΔϝϞϦ͸4KB·Ͱ)
    3.3VͰಈ͘
    ϒϨουϘʔυʹͤ͞Δ
    UART͔Βॻ͖ࠐΊΔ

    View Slide

  9. LPC1114FN28
    ੨͍mbedͷΑ͏ͳ
    USBϗετ΍Ethernet͸ແ͍͕
    I2C SPI PWM ADC UART౳
    ϚΠίϯͰΑ͘࢖ΘΕΔI/O͸༗Δ

    View Slide

  10. ༻ҙ͢Δ΋ͷ

    View Slide

  11. ༻ҙ͢Δ΋ͷ
    7ిݯ෇͖ϒϨουϘʔυ
    -1$'/
    ԁ ॳճԁ

    ԁ
    ηοτ͋ͨΓԁ
    අ༻ͷΊ΍͢
    ෦඼
    ॳճʹඞཁͳඅ༻ԁ
    ॳճԁ
    δϟϯύϫΠϠຊ ԁ
    7༻64#γϦΞϧίϯόʔλ
    λΫτεΠον ԁ

    View Slide

  12. ಈ࡞֬ೝʹඞཁͳ΋ͷ

    View Slide

  13. ಈ࡞֬ೝʹඞཁͳ΋ͷ
    ఆ֨N"ͷ-&%
    ఍߅Њ
    ݸͰԁ
    ݸͰԁ
    ߹ܭ ηοτลΓԁ
    අ༻ͷΊ΍͢
    ෦඼
    ॳճʹඞཁͳඅ༻ԁ
    δϟϯύϫΠϠຊ ԁ

    View Slide

  14. C͔ΒHʹ-1$'/Λ઀ଓ
    ύοέʔδʹԜΈ͕͋Δํ͕ߦ໨ʹདྷΔΑ͏ʹ͢Δ

    View Slide

  15. ϦηοτϘλϯ༻ͷλΫτεΠονΛ෇͚Δ
    ಈ࡞֬ೝ࣌ʹ෇͚Δ-&%౳ͱͿ͔ͭΒͳ͍ߦ໨Ҏ͕߱Φεεϝ

    View Slide

  16. λΫτεΠονͷ୺ࢠͷҰํΛIʹ઀ଓ
    ΋͏ҰํΛͷిݯϨʔϯʹ઀ଓ

    View Slide

  17. J͔ΒͷిݯϨʔϯʹδϟϯύϫΠϠΛ઀ଓ
    ಺ଂϑϥογϡॻ͖ࠐΈϞʔυʹೖΔҝͷઃఆ

    View Slide

  18. K͔ΒͷిݯϨʔϯʹ઀ଓ
    ϚΠίϯͷ(/%

    View Slide

  19. I͔ΒͷిݯϨʔϯʹ઀ଓ
    ϚΠίϯͷిݯ

    View Slide

  20. 64#γϦΞϧίϯόʔλͷ(/%ͱ5Y%ͱ3Y%ʹ
    δϟϯύϫΠϠΛ઀ଓ

    View Slide

  21. 64#γϦΞϧίϯόʔλͷ(/%ΛͷిݯϨʔϯʹ઀ଓ
    γϦΞϧίϯόʔλͱϒϨουϘʔυͷج४ిҐΛҰகͤ͞Δ

    View Slide

  22. Jʹ64#γϦΞϧίϯόʔλͷ5Y%Λ઀ଓ

    View Slide

  23. Kʹ64#γϦΞϧίϯόʔλͷ3Y%Λ઀ଓ

    View Slide

  24. LPC1114FN28ʹॻ͖ࠐΉํ๏
    σόοΨͰॻ͖ࠐΉ γϦΞϧͰॻ͖ࠐΉ
    σόοΨ͕ཁΔ 64#γϦΞϧίϯόʔλ౳͕ཁΔ
    ࠓճ͸ͬͪ͜
    γϦΞϧ͔Βॻ͖ࠐΉҝͷ࢓૊Έ͸
    σʔλγʔτͰ͸*O4ZTUFN1SPHSBNNJOH *41
    ͱݺ͹ΕΔ

    View Slide

  25. lpc21isp
    FlashMagic
    8JOEPXT༻ͷ(6*ΞϓϦέʔγϣϯ
    /*9޲͚ͷίϚϯυϥΠϯπʔϧ
    ॻ͖ࠐΈʹ࢖͏ιϑτ΢ΣΞ
    ࠓճ͸ͬͪ͜
    8JOEPXTϢʔβͰ'MBTI.BHJDͰॻ͖͍ͨ৔߹͸͜ͷ΁Μࢀর
    IUUQXXXOYQMQDDPNEFWFMPQNFOUIUNM

    View Slide

  26. lpc21isp
    *41ͷϓϩτίϧΛ஻ΔίϚϯυϥΠϯπʔϧ
    ͜ΕΛ࢖ͬͯॻ͖ࠐΉ
    IUUQTHJUIVCDPNDBQJNBOMQDJTQ

    View Slide

  27. # LANG=C emerge -av lpc21isp!
    --- Invalid atom in /etc/portage/package.use/kde: kde-base/pykde4-4.10.5!
    !
    * IMPORTANT: 28 news items need reading for repository 'gentoo'.!
    * Use eselect news to read news items.!
    !
    * Last emerge --sync was 52d 2h 23m 42s ago.!
    !
    These are the packages that would be merged, in order:!
    !
    Calculating dependencies... done!!
    [ebuild N ~] dev-embedded/lpc21isp-1.85 54 KiB!
    !
    Total: 1 package (1 new), Size of downloads: 54 KiB!
    !
    Would you like to merge these packages? [Yes/No] Yes!
    !
    >>> Verifying ebuild manifests!
    !
    >>> Emerging (1 of 1) dev-embedded/lpc21isp-1.85::gentoo!
    >>> Downloading 'http://ftp.iij.ad.jp/pub/linux/gentoo/distfiles/lpc21isp_185.tar.gz'!
    --2015-05-02 22:29:39-- http://ftp.iij.ad.jp/pub/linux/gentoo/distfiles/lpc21isp_185.tar.gz!
    Resolving ftp.iij.ad.jp... 2001:240:bb8f:200::1:170, 202.232.140.170!
    Connecting to ftp.iij.ad.jp|2001:240:bb8f:200::1:170|:80... connected.!
    HTTP request sent, awaiting response... 200 OK!
    Length: 54735 (53K) [application/x-gzip]!
    Saving to: '/usr/portage/distfiles/lpc21isp_185.tar.gz'!
    !
    /usr/portage/distfi 100%[=====================>] 53.45K --.-KB/s in 0.1s !
    !
    2015-05-02 22:29:39 (385 KB/s) - '/usr/portage/distfiles/lpc21isp_185.tar.gz' saved [54735/54735]!
    ͍͚ͯΔ-JOVYσΟετϦϏϡʔγϣϯͩͱ
    ύοέʔδ͕༻ҙ͞Ε͍ͯΔࣄ΋͋Δ

    View Slide

  28. ઌఔ૊ΈཱͯͨϘʔυʹి஑ΛೖΕͯ
    ϦηοτϘλϯΛԡ͢
    MQDJTQͰσόΠεΛ୳͢
    # lpc21isp -detectonly /dev/ttyUSB0 115200 48000!
    lpc21isp version 1.85!
    Synchronizing (ESC to abort). OK!
    Read bootcode version: 1!
    7!
    Read part ID: LPC1114.../102, 32 kiB ROM / 4 kiB SRAM (0x1A40902B)
    ϦηοτϘλϯ
    ͜͜ͷσόΠε໊͸
    ؀ڥʹΑͬͯҟͳΔ
    Մೳੑ͕͋Δ

    View Slide

  29. # lpc21isp -detectonly /dev/ttyUSB0 115200 48000!
    lpc21isp version 1.85!
    Synchronizing (ESC to abort). OK!
    Read bootcode version: 1!
    7!
    Read part ID: LPC1114.../102, 32 kiB ROM / 4 kiB SRAM (0x1A40902B)
    νοϓͷछྨ
    -1$ ུ

    ϑϥογϡϝϞϦ
    ,J#
    3".
    ,J#
    ͜Μͳ෩ʹνοϓͷ৘ใ͕දࣔ͞ΕͨΒ੒ޭ
    ग़ͳ͍৔߹͸૊Έཱͯํ͕߹͍ͬͯΔ͔΋͏Ұ౓֬ೝ͠Α͏

    View Slide

  30. ಈ࡞֬ೝ

    View Slide

  31. mbedͷLED఺໓αϯϓϧΛಈ͔ͯ֬͠ೝ͢Δ
    https://developer.mbed.org/users/ytsuboi/notebook/getting-started-with-mbed-lpc1114/
    ϓϩάϥϜ͕LED1ͷ࢖༻Λཁٻͨ࣌͠
    mbed͸LPC1114FN28ͷ͜ͷϐϯʹ
    LED͕͍͍ͭͯΔ͜ͱΛظ଴͢Δ

    View Slide

  32. ൪ϐϯ ϒϨουϘʔυͷB
    ʹЊͷ఍߅Λ઀ଓ
    -&%ͷిྲ੍ྀݶ༻

    View Slide

  33. ఍߅ʹ-&%ͷΞϊʔυଆ ଍͕௕͍ํ
    Λ઀ଓ
    ͜ͷճ࿏͸ఆ֨N"ͷ-&%Λ૝ఆ͍ͯ͠Δ

    View Slide

  34. -&%ͷΧιʔυଆΛͷిݯϨʔϯʹ઀ଓ

    View Slide

  35. mbedʹϢʔβొ࿥
    https://developer.mbed.org/account/signup/?next=%2F

    View Slide

  36. mbedʹϩάΠϯͨ͠ΒCompilerΛબ୒
    https://developer.mbed.org/
    ͜Ε

    View Slide

  37. mbed LPC1114FN28ʹͳ͍ͬͯΔ͜ͱΛ֬ೝ
    ͜Ε
    ΋͠ผͷϚΠίϯʹͳ͍ͬͯͨΒ
    ΫϦοΫͯ͠LPC1114FN28ʹมߋ

    View Slide

  38. NewΛԡͯ͠৽͍͠ϓϩάϥϜΛ࡞੒
    ͜Ε

    View Slide

  39. Platform͕mbed LPC1114FN28ʹͳ͍ͬͯΔ͜ͱΛ֬ೝ
    ͜Ε
    NCFE-1$'/͕Ϧετʹແ͍৔߹͸μΠΞϩάΛ
    Ұ౓ดͯ͡ӈ্ͷϓϥοτϑΥʔϜબ୒͔Β௥Ճ͠Α͏
    ϓϥοτϑΥʔϜબ୒

    View Slide

  40. Template͕Blinky LED Hello Worldʹͳ͍ͬͯΔࣄΛ֬ೝ
    ͜Ε
    ͍ΘΏΔLνΧΛ͢ΔͨΊͷίʔυ͕࠷ॳ͔Β༻ҙ͞Ε͍ͯΔ

    View Slide

  41. CompileΛΫϦοΫ͢Δ
    Ϗϧυ͕׬ྃ͢Δͱग़དྷ্͕ͬͨόΠφϦ͕μ΢ϯϩʔυ͞ΕΔ
    ͜Ε

    View Slide

  42. # lpc21isp -bin mbed_blinky_LPC1114.bin /dev/ttyUSB0 115200 48000!
    lpc21isp version 1.85!
    File mbed_blinky_LPC1114.bin:!
    ! loaded...!
    ! image size : 10540!
    Image size : 10540!
    Synchronizing (ESC to abort). OK!
    Read bootcode version: 1!
    7!
    Read part ID: LPC1114.../102, 32 kiB ROM / 4 kiB SRAM (0x1A40902B)!
    Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum
    is written last.!
    Erasing sector 0 first, to invalidate checksum. OK !
    Sector
    1: ...........................|.........................|.........................|...............
    ..........!
    Sector 2: ...........................|.........................|.........!
    Sector
    0: ..........................|.........................|.........................|................
    .........!
    Download Finished... taking 2 seconds!
    Now launching the brand new code
    μ΢ϯϩʔυͨ͠όΠφϦ
    ॻ͖ࠐΈ
    *41͕ಉظͰ͖Δͷ͸Ϧηοτޙճ͚ͩͳͷͰ
    ্ख͍͔͘ͳ͍ͱ͖͸
    ϦηοτϘλϯΛԡ͔ͯ͠Β΋͏Ұ౓ࢼͯ͠ΈΑ͏

    View Slide

  43. J͔ΒͷిݯϨʔϯʹܨ͕͍ͬͯΔδϟϯύϫΠϠΛ֎͢
    ಺ଂϑϥογϡॻ͖ࠐΈϞʔυʹೖΒͳ͍Α͏ʹ͢Δ

    View Slide

  44. ϦηοτϘλϯΛԡͯ͠-&%͕఺໓࢝͠ΊͨΒ੒ޭ

    View Slide

  45. ·ͱΊ
    200ԁͷϚΠίϯͱγϦΞϧॻ͖ࠐΈͰ
    mbedͰ࡞ͬͨόΠφϦΛ࣮ߦͰ͖Δ

    View Slide