• Save
Debianを用いたCortex-M3マイコン開発事例のご紹介
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Debianを用いたCortex-M3マイコン開発事例のご紹介

  • 994 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
994
On Slideshare
990
From Embeds
4
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 4

https://twitter.com 4

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Debianを用いたCortex-M3マイコン 開発事例のご紹介 Debianを用いたCortex-M3マイコン 開発事例のご紹介 Debianを用いたCortex-M3マイコン 開発事例のご紹介 Debianを用いたCortex-M3マイコン 開発事例のご紹介 Debianを用いたCortex-M3マイコン 開発事例のご紹介 Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
  • 2. 私は誰?私は誰?私は誰?私は誰?私は誰? ☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q ☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務 ☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた ☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます ☆ OSSに興味のある{エンジニア,インターン} 募集中です! ☆ OSSに興味のある{エンジニア,インターン} 募集中です! ☆ OSSに興味のある{エンジニア,インターン} 募集中です! ☆ OSSに興味のある{エンジニア,インターン} 募集中です! ☆ OSSに興味のある{エンジニア,インターン} 募集中です!
  • 3. Cortex-M3マイコン知ってますか?Cortex-M3マイコン知ってますか?Cortex-M3マイコン知ってますか?Cortex-M3マイコン知ってますか?Cortex-M3マイコン知ってますか? ☆ ARM社が開発した32bitマイコン☆ ARM社が開発した32bitマイコン☆ ARM社が開発した32bitマイコン☆ ARM社が開発した32bitマイコン☆ ARM社が開発した32bitマイコン ☆ 各社から数千円で開発ボードが出てる☆ 各社から数千円で開発ボードが出てる☆ 各社から数千円で開発ボードが出てる☆ 各社から数千円で開発ボードが出てる☆ 各社から数千円で開発ボードが出てる
  • 4. メーカー製のツールが使いにくいメーカー製のツールが使いにくいメーカー製のツールが使いにくいメーカー製のツールが使いにくいメーカー製のツールが使いにくい ☆ Eclipseよくわからない☆ Eclipseよくわからない☆ Eclipseよくわからない☆ Eclipseよくわからない☆ Eclipseよくわからない ☆ プログラムサイズに制限があったり☆ プログラムサイズに制限があったり☆ プログラムサイズに制限があったり☆ プログラムサイズに制限があったり☆ プログラムサイズに制限があったり ☆ 素直なGCCとGDBが使いたい...☆ 素直なGCCとGDBが使いたい...☆ 素直なGCCとGDBが使いたい...☆ 素直なGCCとGDBが使いたい...☆ 素直なGCCとGDBが使いたい...
  • 5. Debianでもマイコン開発したい!Debianでもマイコン開発したい!Debianでもマイコン開発したい!Debianでもマイコン開発したい!Debianでもマイコン開発したい! ☆ 今回はSTマイクロ社に焦点をしぼります☆ 今回はSTマイクロ社に焦点をしぼります☆ 今回はSTマイクロ社に焦点をしぼります☆ 今回はSTマイクロ社に焦点をしぼります☆ 今回はSTマイクロ社に焦点をしぼります ☆ ボード: STM32F3DISCOVERY☆ ボード: STM32F3DISCOVERY☆ ボード: STM32F3DISCOVERY☆ ボード: STM32F3DISCOVERY☆ ボード: STM32F3DISCOVERY ☆ ROM: 256kB☆ ROM: 256kB☆ ROM: 256kB☆ ROM: 256kB☆ ROM: 256kB ☆ RAM: 48kB☆ RAM: 48kB☆ RAM: 48kB☆ RAM: 48kB☆ RAM: 48kB ☆ 価格: 950円 <= 殺人的安さ☆ 価格: 950円 <= 殺人的安さ☆ 価格: 950円 <= 殺人的安さ☆ 価格: 950円 <= 殺人的安さ☆ 価格: 950円 <= 殺人的安さ ☆ 備考: デバッガ用のST-LINKチップ搭載☆ 備考: デバッガ用のST-LINKチップ搭載☆ 備考: デバッガ用のST-LINKチップ搭載☆ 備考: デバッガ用のST-LINKチップ搭載☆ 備考: デバッガ用のST-LINKチップ搭載
  • 6. 開発全体の流れ開発全体の流れ開発全体の流れ開発全体の流れ開発全体の流れ
  • 7. ソースコードテンプレートソースコードテンプレートソースコードテンプレートソースコードテンプレートソースコードテンプレート ☆ テンプレを使えば楽にスタートできる☆ テンプレを使えば楽にスタートできる☆ テンプレを使えば楽にスタートできる☆ テンプレを使えば楽にスタートできる☆ テンプレを使えば楽にスタートできる $ git clone https://github.com/mblythe86/stm32f3-discovery-basic- template.git $ cd stm32f3-discovery-basic-template $ vi src/main.c $ git clone https://github.com/mblythe86/stm32f3-discovery-basic- template.git $ cd stm32f3-discovery-basic-template $ vi src/main.c $ git clone https://github.com/mblythe86/stm32f3-discovery-basic- template.git $ cd stm32f3-discovery-basic-template $ vi src/main.c $ git clone https://github.com/mblythe86/stm32f3-discovery-basic- template.git $ cd stm32f3-discovery-basic-template $ vi src/main.c $ git clone https://github.com/mblythe86/stm32f3-discovery-basic- template.git $ cd stm32f3-discovery-basic-template $ vi src/main.c int main(void) { // --snip-- while (1) { STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED6); // --snip-- Delay(50); /*500ms - half second*/ STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED6); // --snip-- Delay(50); /*500ms - half second*/ } int main(void) { // --snip-- while (1) { STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED6); // --snip-- Delay(50); /*500ms - half second*/ STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED6); // --snip-- Delay(50); /*500ms - half second*/ } int main(void) { // --snip-- while (1) { STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED6); // --snip-- Delay(50); /*500ms - half second*/ STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED6); // --snip-- Delay(50); /*500ms - half second*/ } int main(void) { // --snip-- while (1) { STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED6); // --snip-- Delay(50); /*500ms - half second*/ STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED6); // --snip-- Delay(50); /*500ms - half second*/ } int main(void) { // --snip-- while (1) { STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED6); // --snip-- Delay(50); /*500ms - half second*/ STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED6); // --snip-- Delay(50); /*500ms - half second*/ }
  • 8. クロスコンパイルクロスコンパイルクロスコンパイルクロスコンパイルクロスコンパイル ☆ クロスコンパイラのインストール☆ クロスコンパイラのインストール☆ クロスコンパイラのインストール☆ クロスコンパイラのインストール☆ クロスコンパイラのインストール $ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev git zlib1g-dev python-yaml $ git clone git://github.com/esden/summon-arm-toolchain.git $ cd summon-arm-toolchain $ ./summon-arm-toolchain $ export PATH=$HOME/sat/bin:$PATH $ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev git zlib1g-dev python-yaml $ git clone git://github.com/esden/summon-arm-toolchain.git $ cd summon-arm-toolchain $ ./summon-arm-toolchain $ export PATH=$HOME/sat/bin:$PATH $ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev git zlib1g-dev python-yaml $ git clone git://github.com/esden/summon-arm-toolchain.git $ cd summon-arm-toolchain $ ./summon-arm-toolchain $ export PATH=$HOME/sat/bin:$PATH $ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev git zlib1g-dev python-yaml $ git clone git://github.com/esden/summon-arm-toolchain.git $ cd summon-arm-toolchain $ ./summon-arm-toolchain $ export PATH=$HOME/sat/bin:$PATH $ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev git zlib1g-dev python-yaml $ git clone git://github.com/esden/summon-arm-toolchain.git $ cd summon-arm-toolchain $ ./summon-arm-toolchain $ export PATH=$HOME/sat/bin:$PATH ☆ さっきのテンプレをクロスコンパイル☆ さっきのテンプレをクロスコンパイル☆ さっきのテンプレをクロスコンパイル☆ さっきのテンプレをクロスコンパイル☆ さっきのテンプレをクロスコンパイル $ cd stm32f3-discovery-basic-template $ make $ file main.elf main.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped $ cd stm32f3-discovery-basic-template $ make $ file main.elf main.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped $ cd stm32f3-discovery-basic-template $ make $ file main.elf main.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped $ cd stm32f3-discovery-basic-template $ make $ file main.elf main.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped $ cd stm32f3-discovery-basic-template $ make $ file main.elf main.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped
  • 9. ファーム書き込みの準備ファーム書き込みの準備ファーム書き込みの準備ファーム書き込みの準備ファーム書き込みの準備 ☆ st-utilコマンドが便利☆ st-utilコマンドが便利☆ st-utilコマンドが便利☆ st-utilコマンドが便利☆ st-utilコマンドが便利 $ sudo apt-get install libsgutils2-dev libusb-1.0-0-dev $ git clone git://github.com/texane/stlink.git $ cd stlink $ ./autogen.sh && ./configure && make $ sudo make install $ sudo apt-get install libsgutils2-dev libusb-1.0-0-dev $ git clone git://github.com/texane/stlink.git $ cd stlink $ ./autogen.sh && ./configure && make $ sudo make install $ sudo apt-get install libsgutils2-dev libusb-1.0-0-dev $ git clone git://github.com/texane/stlink.git $ cd stlink $ ./autogen.sh && ./configure && make $ sudo make install $ sudo apt-get install libsgutils2-dev libusb-1.0-0-dev $ git clone git://github.com/texane/stlink.git $ cd stlink $ ./autogen.sh && ./configure && make $ sudo make install $ sudo apt-get install libsgutils2-dev libusb-1.0-0-dev $ git clone git://github.com/texane/stlink.git $ cd stlink $ ./autogen.sh && ./configure && make $ sudo make install ☆ テンプレのMakefileを修正☆ テンプレのMakefileを修正☆ テンプレのMakefileを修正☆ テンプレのMakefileを修正☆ テンプレのMakefileを修正 $ cd stm32f3-discovery-basic-template $ cat > gdbwrite.boot tar ext localhost:4242 load main.elf $ cat >> Makefile gdbwrite: all $(GDB) -x gdbwrite.boot $(PROJ_NAME).elf $ cd stm32f3-discovery-basic-template $ cat > gdbwrite.boot tar ext localhost:4242 load main.elf $ cat >> Makefile gdbwrite: all $(GDB) -x gdbwrite.boot $(PROJ_NAME).elf $ cd stm32f3-discovery-basic-template $ cat > gdbwrite.boot tar ext localhost:4242 load main.elf $ cat >> Makefile gdbwrite: all $(GDB) -x gdbwrite.boot $(PROJ_NAME).elf $ cd stm32f3-discovery-basic-template $ cat > gdbwrite.boot tar ext localhost:4242 load main.elf $ cat >> Makefile gdbwrite: all $(GDB) -x gdbwrite.boot $(PROJ_NAME).elf $ cd stm32f3-discovery-basic-template $ cat > gdbwrite.boot tar ext localhost:4242 load main.elf $ cat >> Makefile gdbwrite: all $(GDB) -x gdbwrite.boot $(PROJ_NAME).elf
  • 10. ファーム書き込み/デバッグファーム書き込み/デバッグファーム書き込み/デバッグファーム書き込み/デバッグファーム書き込み/デバッグ ☆ まずst-utilを起動しておく☆ まずst-utilを起動しておく☆ まずst-utilを起動しておく☆ まずst-utilを起動しておく☆ まずst-utilを起動しておく $ sudo st-util$ sudo st-util$ sudo st-util$ sudo st-util$ sudo st-util ☆ 別のコンソールを開いてgdbを起動する☆ 別のコンソールを開いてgdbを起動する☆ 別のコンソールを開いてgdbを起動する☆ 別のコンソールを開いてgdbを起動する☆ 別のコンソールを開いてgdbを起動する $ cd stm32f3-discovery-basic-template $ make gdbwrite --snip-- Start address 0x8000db5, load size 3744 Transfer rate: 7 KB/sec, 1248 bytes/write. (gdb) c ### プログラム実行開始 / C-cを押下するとプロンプトに戻る ### (gdb) bt #0 Delay (nTime=nTime@entry=50) at src/main.c:82 #1 0x08000bdc in main () at src/main.c:58 $ cd stm32f3-discovery-basic-template $ make gdbwrite --snip-- Start address 0x8000db5, load size 3744 Transfer rate: 7 KB/sec, 1248 bytes/write. (gdb) c ### プログラム実行開始 / C-cを押下するとプロンプトに戻る ### (gdb) bt #0 Delay (nTime=nTime@entry=50) at src/main.c:82 #1 0x08000bdc in main () at src/main.c:58 $ cd stm32f3-discovery-basic-template $ make gdbwrite --snip-- Start address 0x8000db5, load size 3744 Transfer rate: 7 KB/sec, 1248 bytes/write. (gdb) c ### プログラム実行開始 / C-cを押下するとプロンプトに戻る ### (gdb) bt #0 Delay (nTime=nTime@entry=50) at src/main.c:82 #1 0x08000bdc in main () at src/main.c:58 $ cd stm32f3-discovery-basic-template $ make gdbwrite --snip-- Start address 0x8000db5, load size 3744 Transfer rate: 7 KB/sec, 1248 bytes/write. (gdb) c ### プログラム実行開始 / C-cを押下するとプロンプトに戻る ### (gdb) bt #0 Delay (nTime=nTime@entry=50) at src/main.c:82 #1 0x08000bdc in main () at src/main.c:58 $ cd stm32f3-discovery-basic-template $ make gdbwrite --snip-- Start address 0x8000db5, load size 3744 Transfer rate: 7 KB/sec, 1248 bytes/write. (gdb) c ### プログラム実行開始 / C-cを押下するとプロンプトに戻る ### (gdb) bt #0 Delay (nTime=nTime@entry=50) at src/main.c:82 #1 0x08000bdc in main () at src/main.c:58 これで思うぞんぶんデバッグできるよ!これで思うぞんぶんデバッグできるよ!これで思うぞんぶんデバッグできるよ!これで思うぞんぶんデバッグできるよ!これで思うぞんぶんデバッグできるよ!
  • 11. HaskellマイコンプログラミングHaskellマイコンプログラミングHaskellマイコンプログラミングHaskellマイコンプログラミングHaskellマイコンプログラミング ☆ Ajhc - http://ajhc.metasepi.org/☆ Ajhc - http://ajhc.metasepi.org/☆ Ajhc - http://ajhc.metasepi.org/☆ Ajhc - http://ajhc.metasepi.org/☆ Ajhc - http://ajhc.metasepi.org/
  • 12. 宣伝: コミケに同人誌を出します宣伝: コミケに同人誌を出します宣伝: コミケに同人誌を出します宣伝: コミケに同人誌を出します宣伝: コミケに同人誌を出します ☆ コミックマーケット84☆ コミックマーケット84☆ コミックマーケット84☆ コミックマーケット84☆ コミックマーケット84 ☆ 3日目 東地区 ペ-06a☆ 3日目 東地区 ペ-06a☆ 3日目 東地区 ペ-06a☆ 3日目 東地区 ペ-06a☆ 3日目 東地区 ペ-06a ☆ サークル名: 参照透明な海を守る会☆ サークル名: 参照透明な海を守る会☆ サークル名: 参照透明な海を守る会☆ サークル名: 参照透明な海を守る会☆ サークル名: 参照透明な海を守る会 ☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/ ☆ 関数型言語の同人誌☆ 関数型言語の同人誌☆ 関数型言語の同人誌☆ 関数型言語の同人誌☆ 関数型言語の同人誌 ☆ 今回のCortex-M3の話も掲載☆ 今回のCortex-M3の話も掲載☆ 今回のCortex-M3の話も掲載☆ 今回のCortex-M3の話も掲載☆ 今回のCortex-M3の話も掲載 ☆ 来て見て買ってね!☆ 来て見て買ってね!☆ 来て見て買ってね!☆ 来て見て買ってね!☆ 来て見て買ってね!