QuickLogic FeatherはSensiML ToolkitのData Capture Labと「QuickFeather Simple Streaming」プロトコルで接続します。
Quickfeather development kitのファームウェアは、QuickFeather Simple StreamingでData Capture Labと接続する「Quickfeather Simple Streaming Interface AI Application Project」を使用します。ファームウェアの書き込みについては「Quickfeather development kitの開発環境の構築」を参照してください。
なお、次のコマンドでQuickfeather development kitのファームウェアを書き換えます。
$ qfprog --port /dev/ttyACM0 --m4app output/bin/qf_ssi_ai_app.bin --mode m4
Quickfeather development kitとパソコンとの接続
パソコンとQuickfeather development kitとは、次のように「USB to TTL 」シリアルアダプタで接続します。
信号名 | ピン番号 |
---|---|
RXD | J3のPin 2 |
TXD | J3のPin 3 |
GND | J3のPin 1 |
通信速度:460800
Quickfeather development kitと「USB to TTL 」シリアルアダプタとの接続画像を次に示します。なおシリアルアダプタは「FT232RL」を使用します。
Quickfeather development kitのファームウェアの実行
Quickfeather development kitのファームウェアを実行すると、「USB to TTL 」シリアルアダプタ経由でパソコンにつぎのメッセージが転送されます。
{"sample_rate":100,"samples_per_packet":6,"column_location":{ "AccelerometerX":0, "AccelerometerY":1, "AccelerometerZ":2}} {"sample_rate":100,"samples_per_packet":6,"column_location":{ "AccelerometerX":0, "AccelerometerY":1, "AccelerometerZ":2}} {"sample_rate":100,"samples_per_packet":6,"column_location":{ "AccelerometerX":0, "AccelerometerY":1, "AccelerometerZ":2}} {"sample_rate":100,"samples_per_packet":6,"column_location":{ "AccelerometerX":0, "AccelerometerY":1, "AccelerometerZ":2}} {"sample_rate":100,"samples_per_packet":6,"column_location":{ "AccelerometerX":0, "AccelerometerY":1, "AccelerometerZ":2}}
SensiML ToolkitのData Capture Labでは接続時に、文字列「connect」をQuickfeather development kitに送信することで、Simple Streamingプロトコルを開始します。通信はバイナリシリアル転送で、ディフォルトではmCube MC3635 accelerometerの加速度データを次のように送信します。「送-> <63><6f><6e><6e><65><63><74>」が文字列「connect」、「->受 <34>
Quickfeather development kitのUSBデバック機能の追加
Quickfeather development kitのUSBデバッグ機能を追加するために、ファームウェアのソースコードを次のように変更します。
Fw_global_config.h
#define FEATURE_USBSERIAL 1 // USBSERIAL port is present #define DEBUG_UART UART_ID_USBSERIAL // Write data to USB serial port
main.c
HAL_usbserial_init2(false, false, 0x6141); // Start USB serial not using interrupts
デバッグ機能はUbuntu 上で「kermit」コマンドにより確認します。
########################## Quicklogic QuickFeather SensiML AI Data Collection/Recognition App SW Version: qorc-sdk/qf_apps/qf_ssi_app Jan 13 2021 06:10:35 ########################## Hello world!! Sample rate: 400 Sample resolution : 14 Sample range : 0 Sample rate : 400 Sample rate: 14 Datablock processor task name: SENSOR_SSSS_DBP_THREAD inQ : 0x2002a1f8
「kermit」コマンドのパラメータを次に示します。
set line /dev/ttyUSB0 set line /dev/ttyACM0 set speed 115200 set speed 460800 set flow-control none connect
kermit起動時に初期値として読み込む「.kermrc」を次に示します。
.kermrc
set line /dev/ttyACM0 set carrier-watch off set speed 115200 set parity none set flow-control none port
ファームウェアでは次のデバッグ関数が提供されています。
- dbg_ch(CH)
- output a ch
- dbg_int(VALUE)
- print integer
- dbg_str(VALUE)
- print string
- dbg_hex8(VALUE)
- print 8bit value as hex
- dbg_hex16(VALUE)
- print 16bit value as hex
- dbg_hex32(VALUE)
- print 32bit value as hex
- dbg_str_int( PTR, VALUE )
- equal to: printf(“%s: %d\n”, s, v )
- dbg_str_str( PTR, VALUE )
- equal to: printf(“%s: %d\n”, s, v )
- dbg_str_hex16( PTR, VALUE )
- equal to: printf(“%s: 0x%04x\n”, s, v )
- dbg_str_hex8( PTR, VALUE )
- equal to: printf(“%s: 0x%02x\n”, s, v )
- dbg_str_hex32( PTR, VALUE )
- simular to: printf(“%s: %08x\n”, s, u32 )
- dbg_str_ptr( PTR, VP )
- print pointer
- dbg_str_now()
- print now as a timestamp
- dbg_memdump32( ADDR, DATA, COUNT )
- print hex dump of memory as 32bit values
- dbgmemdump8( ADDR, DATA, COUNT )
- print hex dump of memory as 8bit values