貧乏人でもmbed OSしたい

この記事はmbed Advent Calendar 2015 - Adventarの18日目の記事です。

はじめに

みなさま、申し訳ございません!先日、mbed Advent Calendar 2015 - Adventarの13日目の記事としてLinux on CortexM3(ARMv7M)というものを書かせていただいたのですが、私が間違っておりました! どうやら、mbedのエロい人の話によるとmbedなOSとは、mbed OSのことのようです。

そこで、今度こそ、mbed OSについて書かせてもらえればと思います。

はじめに

ということで、さっそくmbed OSを動かしてみようと思います。で、対応ボードを調べてみました。

mbed OS supported board list とのこと。 さらに、mbed用のスーパーバイザーであるmbed OS uVisorを利用するには、Cortex-M4が載っているものが必須のようです。そのため、実質的に選択可能なボードは下記の二種類となるようです。

  • Freescale FRDM-K64F
  • STMicorelectronics STM32F429I-DISCO

ということで、これらのボードを手に入れないといけないのですが、STM32F7-DISCOボードを購入したばかりの貧乏人に追加購入はきついです。。。 さてどうしたものかと考えていたところ、

(謎の王妃)「リアルボードが買えないなら、エミュレーターでやればいいじゃない」

との天啓を受けましたので、エミュレーター(QEmu)でmbed OSを楽しむことが出来るか試してみました!

Build mbed OS

天啓によりターゲットボードは、

https://mbed-media.mbed.com/STM32F429ZI-DISCO_512.jpg

とします。

An Official Manual

環境構築やビルドの方法は、"Running your first mbed OS application"を参考にしていますので、必要に応じて参照してください。※ここの手順を追いかけているだけなので、準拠しているところは省きます。

1, Create working directory

command line

$ mkdir blinky
$ cd blinky

2, Initialize of yotta

command line

$ yotta init
Enter the module name: <blinky> 
Enter the initial version: <0.0.0> 1.0.0
Is this an executable (instead of a re-usable library module)? <no> yes
Short description: My blinky example program
Author: Noritsuna Imamura
What is the license for this project (Apache-2.0, ISC, MIT etc.)?  <Apache-2.0> 

3, Setup a target board

Our Target Board:

  • stm32f429i-disco-gcc

command line

$ yotta target stm32f429i-disco-gcc

4, Install mbed driver

command line

$ yotta install mbed-drivers

5, Make a sample application

"./source"ディレクトリに、"app.cpp"というファイルを下記の内容で作成します:

Sample App:source/app.cpp

#include "mbed-drivers/mbed.h"

static void blinky(void) {
    static DigitalOut led1(LED1);
    static DigitalOut led2(LED2);
    led1 = 1;
    led2 = 1;
}

void app_start(int, char**) {
    while(1) {
        blinky();
    }
}

6, Build mbed OS

command line

$ yotta build
info: generate for target: stm32f429i-disco-gcc 0.0.17 at /home/noritsuna/mbedos/blinky/yotta_targets/stm32f429i-disco-gcc
GCC version is: 4.9.3
suppressing warnings from mbed-hal-st-stm32cubef4
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /home/noritsuna/mbedos/blinky/build/stm32f429i-disco-gcc
[159/159] Linking CXX executable source/blinky

7, Directory of output binary

command line

$ build/stm32f429i-disco-gcc/source/blinky.bin

これで、Lチカ mbed OSのビルドが終了し、バイナリが出来ました。

Setup the Emulator(QEmu)

今回、エミュレータは、"The GNU ARM Eclipse QEMU"を利用します。

Download the Emulator(QEmu)

下記よりダウンロードしてください: QEmu for Cortex-M

ダウンロード後、解凍してください。

Run the Emulator(QEmu)

これで、エミュレータの準備が出来ましたので、Lチカ mbed OSのバイナリを起動します。

command line

$ ./qemu/2.4.50-201510290935-dev/bin/qemu-system-gnuarmeclipse -board STM32F429I-Discovery -mcu STM32F429ZI -image ./blinky/build/stm32f429i-disco-gcc/source/blinky.bin

Options:

  • -board STM32F429I-Discovery
  • -mcu STM32F429ZI
  • -image ./blinky/build/stm32f429i-disco-gcc/source/blinky.bin

これで、下記のようなものが表示されればOKです!!!エミュレータ上でmbed OSです!!!無料でmbed OSです!!!貧乏な俺たちでもmbed OS出来るんです!!!

/media/uploads/noritsuna/mbedos_emu_stm32.png

  • みなさん、お気づきかもしれませんが、ソースを追いかけたところ、このエミュレータ、Timer(Scheduler)非対応です・・・絶望しか感じませんが、貧乏人だからしょうがないよね!!!


Please log in to post comments.