mbedオンラインコンパイラがなくなるため、段階的にKeilStudioで作業するように変えていってますが、「ほとんど動かない」。というか、うごくんだけど、いろんなエラーが出て気持ち悪い。何をやってもすっきりしない状態が続いている。
やりたいことは、Nucleo-F411にUSBの配線を施し仮想シリアルを動かしたいのである。テストは下記
#include "mbed.h"
#include "USBSerial.h"
DigitalOut myled(LED1);
USBSerial serial;
int main() {
int a=0;
myled = 1; // LED is ON
while(1) {
wait(0.3); // 200 ms
myled = !myled; // LED is OFF
serial.printf("%04d-\n",a++);
}
}
NucleoにはUSBポートはデバッガ用しかついてないが、Targetボードを自作しているため、もともと端子として出ていたUSBの口をつけられるようにした。これによってIDE基板をつけなくてもシリアルからデータ出せるようになる。もちろん、mbedオンラインでは動作している。
os2のビルド
mbedオンラインからimportしたプロジェクトと、KeilStudioで新規作成したos2のプロジェクトのmbedビルドが異なる。
- 新規では、mbed.bldに記載は、https://os.mbed.com/users/mbed_official/code/mbed/builds/176b8275d35d となっていて、2017年2月のものでふるい。多分安定板なのだろうか。
- mbedオンラインからインポートすると、 https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 になっていて、os2最後のものと思われる。つまり最新。
importしたものは、ビルドできる
importすると、最新のmbedライブラリに置き換えられると何かに書いてあった。オンラインでできていたことをそのままやりたいので、最新にすることはいとしないことであるが、こちらとしては動けばよい。ビルドすると、なにやら黄色い文字で表示されるが成功しフラッシュすれば動作できる。しかし、Problemに下記の記載があり実際エディタでもガイドが表示されない。
main.cpp
Necleo_F411_test_2
'mbed.h' file not foundclang(pp_file_not_found)[1, 10]
Unknown type name 'DigitalOut'clang(unknown_typename)[4, 1]
Unknown type name 'LED1'clang(unknown_typename)[4, 18]
Unknown type name 'USBSerial'clang(unknown_typename)[5, 1]
Use of undeclared identifier 'wait'clang(undeclared_var_use)[13, 9]
エディタ上ではこのように表示され、実際赤くエラー表示されるものの、ビルドは成功し動作もする。
どうもエディタでパスが通ってないという感じである。mbed.hのところを、mbed/mbed.hに変えてやると、インクルードファイル名にアンダースコア(下線)が表示され、エディタ上ではエラーがなくなる。しかし、ビルドでエラーになり失敗する。ビルド時は、今度はmbed/mbed.hがないというのだ。
気持ち悪いし、エディタ上でヒントが出ないし、定義先が見つけられないから、いやなんだけど、あきらめるしかないのか。
新規作成では、USBDeviceをインポートできない
新規作成(mbed2-example-blinky)すると、そこに含まれるmbedビルドは古いが、example自体はビルド成功しフラッシュすれば動作する。そこで、USBDeviceをmbedライブラリからインストールする(ライブラリのURLを知っておく必要がある)と、プロジェクト上にUSBDeviceライブラリが出てくる。(オンラインコンパイラが使えなくなると探しに行かなければならないが、それは後で考えよう)
ここでビルドしてみると、エラーになる。
Build started
Using toolchain ARM_STD profile {'ENV': {'ARMLMD_LICENSE_FILE': '8224@10.10.100.161:8224@10.10.111.207'}, 'PATHS': {'ARMC6_PATH': '/opt/ARMCompiler6.15.13/bin/', 'ARM_PATH': '/opt/armcc5_06_u6/'}, 'common': ['-c', '--gnu', '-O3', '-Otime', '--split_sections', '--apcs=interwork'], 'cxx': ['--cpp', '--no_rtti'], 'COMPILE_C_AS_CPP': False, 'NEW_SCAN_RESOURCES': True}
scan /tmp/chroots/ch-c2a52e85-3da6-4310-80df-9fa2704279ab/src
scan /tmp/chroots/ch-c2a52e85-3da6-4310-80df-9fa2704279ab/extras/mbed
Configuration error: 'static_memory_defines' is not defined.
#5: cannot open source input file "mbed_toolchain.h": No such file or directory
"/src/USBDevice/USBDevice/USBHAL.h", line 24: Error: #5: cannot open source input file "mbed_toolchain.h": No such file or directory
#include "mbed_toolchain.h"
^
/src/USBDevice/USBAudio/USBAudio.cpp: 0 warnings, 1 error
Internal error.
Build failed
Build failed
compile USBDevice/USBAudio/USBAudio.cpp
"mbed_toolchain.h"が’ないとおっしゃっている。これ、os2ビルドが古いせいだと思われる。
mbed.bldにrevisionの新しいmbedビルドのアドレスを書くと、コンパイルは成功し動作もできる。
コメントを追加