[lang:ja] ODIN-W2 を Windows10で使ってみる(ubuntu環境でWiFiテストまで)
.
ODIN-W2(Wifi 2.4G,5G/ BT / BLT)のモジュールの mbed 対応が mbed os 5.2 のリリースとともに発表されました。 ここでは、用意されているWiFiのテストコードまで実施してみたいと思います。実際に実行することは下記です。
- Windows10 Ubuntu 環境でのmbed-CLI 環境の構築 ..興味本位でできるかどうか試してみます。当然、普通のWindows環境でも、Mac環境でも、Linux環境でも、ODIN-W2を使用することは可能と思われます。
- ODIN-W2 コードのCompile (まずはLチカ) ..(blinkyコード実行、ファームのアップデートが必要で躓きました。)
- ODIN-W2 Wifi コードのテスト ..(wifiコード実行、最新のコードだと compile できず躓きました。)
参考にさせていただいたページはこちら
1. Windows10 Ubuntu 環境でのmbed-CLI 環境の構築
ここでは下記の確認~インストールを実施します。
- 1-1. Windows10 Ubuntu 環境構築条件の確認
- 1-2. Windows10 Ubuntu 環境インストール
- 1-3. mbed-CLI 環境のインストール
1-1. Windows10 Ubuntu 環境構築条件の確認
対応OS:Windows10 64bit (32bitのマシンは64bitへの入れ替えが必要です)
今回使用したマシンは下記です。
- モデル名 INSPIRON1510
- エディション Windows 10 Home 64bit
- バージョン 1607
- OSビルド 14393.223
- プロセッサ Intel(R)Core(TM)i3 CPU M330@2.13GHz
- 実装RAM 4.00GB(3.80GB使用可能)
OSはHOME でも問題なく Build できました。
1-2. Windows10 Ubuntu 環境インストール
windows10 で bash を使う。がよくまとまっているので、それに従ってインストールしてください。
- 下記のように最新の状態にアップデートしておきましょう。
sudo apt-get update sudo apt-get upgrade
1-3. mbed-CLI 環境のインストール
- python のインストール python 2.7 系と python のパッケージ管理システムの pip をインストール。
$ sudo apt-get install python2.7 python-pip
- mbed-cli を pip でインストール。
$ sudo pip install mbed-cli
- mercurial と git のインストール
$ sudo apt-get install mercurial git
- 組み込み用 ARM GCC のインストール
$ sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded <- これがないと最新のバージョンになりません。 $ sudo apt-get update $ sudo apt-get -f install gcc-arm-none-eabi
Linux と本当に同じですね。バージョンを確認しておきましょう。
$ python --version Python 2.7.6 $ pip --version pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7) $ mbed --version 0.9.10 $ arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977] Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2.ODIN-W2 コードのCompile (まずはLチカ)
ここでは、おなじみのLチカコードをblinkyコードを実行してみます。 サンプルのインポート ~ compile ~ 書き込み ~ 実行 までです。
2-1. Lチカコードをインポート
下記のようにLチカコードをインポートします。
$ mbed import mbed-os-example-blinky $ cd mbed-os-example-blinky $ sudo pip install -r mbed-os/requirements.txt
- ARM_GCC のパスを設定する。mbed_settings.py を編集
# GCC ARM #GCC_ARM_PATH = "" GCC_ARM_PATH = "/usr/bin" <--- 追加
2-2. Lチカコードをコンパイル
いよいよcompile します。
$ sudo mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2 [mbed] Auto-installing missing Python modules... Building project mbed-os-example-blinky (UBLOX_EVK_ODIN_W2, GCC_ARM) Scan: . ..........................中略................................. Link: mbed-os-example-blinky Elf2Bin: mbed-os-example-blinky +-----------------------+-------+-------+-------+ | Module | .text | .data | .bss | +-----------------------+-------+-------+-------+ | Fill | 73 | 0 | 5 | | Misc | 21070 | 2180 | 100 | | features/FEATURE_LWIP | 44 | 0 | 12536 | | hal | 538 | 0 | 8 | | platform | 1004 | 4 | 269 | | rtos | 38 | 4 | 4 | | rtos/rtx | 6089 | 20 | 6870 | | targets/TARGET_STM | 6670 | 4 | 752 | | Subtotals | 35526 | 2212 | 20544 | +-----------------------+-------+-------+-------+ Allocated Heap: unknown Allocated Stack: unknown Total Static RAM memory (data + bss): 22756 bytes Total RAM memory (data + bss + heap + stack): 22756 bytes Total Flash memory (text + data + misc): 37738 bytes Object file test_env.o is not unique! It could be made from: ./mbed-os/features/frameworks/greentea-client/source/test_env.cpp /mnt/c/Users/hiroa/mbed-os-example-blinky/mbed-os/features/unsupported/tests/mbed/env/test_env.cpp Image: ./BUILD/UBLOX_EVK_ODIN_W2/GCC_ARM/mbed-os-example-blinky.bin
出来上がった ./BUILD/UBLOX_EVK_ODIN_W2/GCC_ARM/mbed-os-example-blinky.bin を EVK-ODIN-W2 に書き込めば..... 書き込めないよ!
2-3. EVK-ODIN-W2 上のデバグ用チップのファームのアップデート
windows10 で書き込めるようにするには、ファームのバージョンアップが必要でした。 http:www.st.com/ja/development-tools/st-link-v2.htmlから STSW-LINK007をダウンロードし、ファームをバージョンアップしてください。 http:www.st.com/ja/development-tools/st-link-v2.html STSW-LINK007 が firm ですが、STSW-LINK009 のドライバーのインストールを先に済ませる必要があります。 アップデートの様子は下記です。
2-4. bin ファイルを転送しLチカ
出来上がった ./BUILD/UBLOX_EVK_ODIN_W2/GCC_ARM/mbed-os-example-blinky.bin を エキスプローラでmbedで見えているディスクに置いてあげれば、書き込み、実行されます。
Windows10 Ubuntu 環境でEVK-ODIN-W2 のLチカまでできましたね。 次はいよいよ Wifi のテストに挑戦です。
3.ODIN-W2 Wifi コードのテスト
ここでは、Wifiテスト用に用意されている(wifiコードを実行してみます。 サンプルのインポート ~ compile ~ 書き込み ~ 実行 までです。
3-1. Wifi テストコードをインポート
Lチカと同じように、Wifiテストコードをインポートします。
mbed import mbed-os-example-wifi cd mbed-os-example-wifi
3-2. Wifi環境に合わせて設定ファイルを修正
- mbed_app.json ファイルの下記の部分を自分の環境に合わせて変更
"config": { "wifi-ssid": { "help": "WiFi SSID", "value": "\"SSID\"" ←修正 }, "wifi-password": { "help": "WiFi Password", "value": "\"Password\"" ←修正 } },
3-3. Wifiテストコードをコンパイル
Lチカと同じようにコンパイルします。
$ sudo mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2 [mbed] Auto-installing missing Python modules... Building project mbed-os-example-blinky (UBLOX_EVK_ODIN_W2, GCC_ARM) Scan: . Compile [100.0%]: test_env.cpp Link: mbed-os-example-wifi ./mbed-os/targets/TARGET_STM/TARGET_STM32F4/TARGET_UBLOX_EVK_ODIN_W2/sdk/TOOLCHAIN_GCC_ARM/libublox-odin-w2-driver.a(OdinWiFiInterface.o):(.rodata._ZTV17OdinWiFiInterface+0x30): undefined reference to `NetworkInterface::gethostbyname(char const*, SocketAddress*)' collect2: error: ld returned 1 exit status [ERROR] ./mbed-os/targets/TARGET_STM/TARGET_STM32F4/TARGET_UBLOX_EVK_ODIN_W2/sdk/TOOLCHAIN_GCC_ARM/libublox-odin-w2-driver.a(OdinWiFiInterface.o):(.rodata._ZTV17OdinWiFiInterface+0x30): undefined reference to `NetworkInterface::gethostbyname(char const*, SocketAddress*)' collect2: error: ld returned 1 exit status [mbed] ERROR: "python" returned error code 1. [mbed] ERROR: Command "python -u /mnt/c/Users/hiroa/mbed-os-example-wifi/mbed-os/tools/make.py -t GCC_ARM -m UBLOX_EVK_ODIN_W2 --source . --build ./BUILD/UBLOX_EVK_ODIN_W2/GCC_ARM" in "/mnt/c/Users/hiroa/mbed-os-example-wifi"
コンパイルできないよ。なんで?
3-4. mbed-os コードを古いバージョンに戻す。
git checkout で mbed-os のバージョンを遡ってみました。大体7日前。
$ cd mbed-os $ git checkout 4198222c54fa9c127f7e9252a7ae576ddedc5551 $ cd ..
- 過去のバージョンに戻して、やっとコンパイルできました。 戻し方はGithub内の過去のバージョンを取得する方法参照。
- 再度 compile
hiroa@HIJIRI:/mnt/c/Users/hiroa/mbed-os-example-wifi$ sudo mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2 [mbed] Auto-installing missing Python modules... Building project mbed-os-example-wifi (UBLOX_EVK_ODIN_W2, GCC_ARM) Scan: . Scan: FEATURE_BLE Scan: FEATURE_COMMON_PAL Scan: FEATURE_LWIP Scan: FEATURE_UVISOR Scan: FEATURE_LOWPAN_BORDER_ROUTER Scan: FEATURE_LOWPAN_HOST Scan: FEATURE_LOWPAN_ROUTER Scan: FEATURE_NANOSTACK Scan: FEATURE_NANOSTACK_FULL Scan: FEATURE_THREAD_BORDER_ROUTER Scan: FEATURE_THREAD_END_DEVICE Scan: FEATURE_THREAD_ROUTER Scan: FEATURE_STORAGE Scan: mbed Scan: env Compile [ 32.7%]: ATParser.cpp ...中略... Compile [100.0%]: test_env.cpp Link: mbed-os-example-wifi Elf2Bin: mbed-os-example-wifi +-----------------------+--------+-------+-------+ | Module | .text | .data | .bss | +-----------------------+--------+-------+-------+ | Fill | 344 | 8 | 69 | | Misc | 221595 | 2320 | 17059 | | drivers | 537 | 0 | 0 | | events | 64 | 0 | 0 | | events/equeue | 1252 | 0 | 61 | | features/FEATURE_LWIP | 34788 | 87 | 46796 | | features/mbedtls | 21111 | 0 | 8748 | | features/netsocket | 4847 | 85 | 60 | | hal | 520 | 0 | 8 | | platform | 1407 | 4 | 269 | | rtos | 213 | 4 | 4 | | rtos/rtx | 7365 | 20 | 6870 | | targets/TARGET_STM | 13489 | 4 | 808 | | Subtotals | 307532 | 2532 | 80752 | +-----------------------+--------+-------+-------+ Allocated Heap: unknown Allocated Stack: unknown Total Static RAM memory (data + bss): 83284 bytes Total RAM memory (data + bss + heap + stack): 83284 bytes Total Flash memory (text + data + misc): 310064 bytes Object file test_env.o is not unique! It could be made from: ./mbed-os/features/frameworks/greentea-client/source/test_env.cpp /mnt/c/Users/hiroa/mbed-os-example-wifi/mbed-os/features/unsupported/tests/mbed/env/test_env.cpp Image: ./BUILD/UBLOX_EVK_ODIN_W2/GCC_ARM/mbed-os-example-wifi.bin
3-5.wifi テストコードを書き込んで実行
mbed に書き込んで実行すると下記のようになります。 Wifiをスキャンして、接続して、httpプロトコルで www.arm.com にアクセスしてテキストを拾ってきてます。
WiFi example Scan: Network: xxxxxx_xxxxX0-X secured: WEP BSSID: 8C:4C:DC:2c:5b:c7 RSSI: -81 Ch: 1 Network: XxxXxxx00000 secured: WPA2 BSSID: 0:A0:B0:f9:5f:4c RSSI: -62 Ch: 4 Network: XxxXxxx00000 secured: WPA2 BSSID: 0:A0:B0:f9:5f:4c RSSI: -62 Ch: 4 Network: Xxxx00000 secured: WEP BSSID: 2:A0:B0:f9:5f:4c RSSI: -61 Ch: 4 Network: Xxxx00000 secured: WEP BSSID: 2:A0:B0:f9:5f:4c RSSI: -60 Ch: 4 Network: XxxXxxx00000 secured: WPA2 BSSID: 0:A0:B0:f9:5f:4c RSSI: -57 Ch: 4 Network: XxxXxxx00000 secured: WPA2 BSSID: 0:A0:B0:f9:5f:4c RSSI: -62 Ch: 4 Network: Xxxx00000 secured: WEP BSSID: 2:A0:B0:f9:5f:4c RSSI: -61 Ch: 4 Network: XxxXxxx00000 secured: WPA2 BSSID: 0:A0:B0:f9:5f:4c RSSI: -61 Ch: 4 Network: XX0000-0000-xx secured: WPA/WPA2 BSSID: A4:C7:DE:59:38:d4 RSSI: -85 Ch: 6 Network: Xxxxxxx-X-00X0 secured: WPA/WPA2 BSSID: 74:3:BD:92:83:a8 RSSI: -79 Ch: 11 Network: Xxxxxxx-X-00X0 secured: WPA/WPA2 BSSID: 74:3:BD:92:83:a8 RSSI: -76 Ch: 11 Network: Xxxxxxx-X-00X0 secured: WPA/WPA2 BSSID: 74:3:BD:92:83:a8 RSSI: -78 Ch: 11 Network: Xxxxxxx-X-00X0 secured: WPA/WPA2 BSSID: 74:3:BD:92:83:a8 RSSI: -79 Ch: 11 Network: Xxxxxxx-X-00X08 secured: WPA/WPA2 BSSID: 74:3:BD:92:83:a8 RSSI: -78 Ch: 11 15 networks available. Connecting... Success MAC: d4:ca:6e:70:6e:dd IP: 192.168.0.4 Netmask: 255.255.255.0 Gateway: 192.168.0.1 RSSI: -63 Sending HTTP request to www.arm.com... sent 38 [GET / HTTP/1.1] recv 64 [HTTP/1.1 200 OK] Done
これでWifi のテストまで Windows10 のUbuntu 環境で、できました。それなりに躓きましたね。
以上、2016年11月3日現在の状況でした。
#ところで初めて書いてみたのですが、行番号をつけないで、code のように表示させるにはどうやるんでしょうか?
Please log in to post comments.