STM32にプログラムをロードする
flashというのかな?
書いたプログラム, FreeRTOSはビルドする
SystemWorkbenchを使う方法
簡単だけどeclipseを起動せにゃならんのでアレ
st-flashを使う方法
OpenOCDを使う方法
reset haltでは timeout するので halt コマンドを使う
ihex
code:bash
$ telnet localhost 4444
...
reset
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
adapter speed: 480 kHz
halt
target halted due to debug-request, current mode: Handler HardFault
xPSR: 0x01000003 pc: 0xfffffffe msp: 0xffffffd8
flash write_image erase ../build/aws_demos.hex
auto erase enabled
Padding image section 0 with 56 bytes
target halted due to breakpoint, current mode: Handler HardFault
xPSR: 0x61000003 pc: 0x20000050 msp: 0xffffffd8
block write succeeded
wrote 319488 bytes from file ../build/aws_demos.hex in 13.774989s (22.650 KiB/s)
そのまま書き込めばデモが動く
code:minicom
https://gyazo.com/d0809a3330d307d8ca87c878b7a1a0b3
MQTTのコネクションの確立がうまくいってないっぽい
NETWORK ERRORのエラーコード
#define SOCKETS_ENOPROTOOPT ( -109 ) /*!< A bad option was specified . */
No Proto Option ということか?
実際ボード依存のコードではSOCKETS_SetSockOptでlOptionNameに何も指定されていないときにこれがセットされる
stm32l475_discovery/では SOCKETS_SO_SERVER_NAME_INDICATION SOCKETS_SO_TRUSTED_SERVER_CERTIFICATE SOCKETS_SO_REQUIRE_TLS SOCKETS_SO_SNDTIMEO SOCKETS_SO_RCVTIMEO SOCKETS_SO_NONBLOCK のいずれかがセット可能(case節からそのままbreakしているので)
SOCKETS_SetSockOptの実装を検索してみる
code:bash
sei0o@sei0oarch ~/D/s/l/amazon-freertos-201906.00_Major> rg 'case SOCKETS_SO_ALPN_PROTOCOLS'
libraries/abstractions/secure_sockets/lwip/aws_secure_sockets.c
738: case SOCKETS_SO_ALPN_PROTOCOLS:
libraries/abstractions/secure_sockets/freertos_plus_tcp/aws_secure_sockets.c
358: case SOCKETS_SO_ALPN_PROTOCOLS:
vendors/infineon/boards/xmc4800_iotkit/ports/secure_sockets/aws_secure_sockets.c
763: case SOCKETS_SO_ALPN_PROTOCOLS:
vendors/nxp/boards/lpc54018iotmodule/ports/secure_sockets/aws_secure_sockets.c
596: case SOCKETS_SO_ALPN_PROTOCOLS:
レベルをDEBUGにしてみる
iot_config.h
stのそれをいじるように注意する
code:minicom
18 8387 iot_thread 10 b5 01 00 04 4d 51 54 54 04 86 00 3c 00 15 53 19 8393 iot_thread 54 4d 33 32 44 4b 2d 6c 69 74 74 6c 65 2d 6d 69 20 8400 iot_thread 7a 75 6b 69 00 0c 69 6f 74 64 65 6d 6f 2f 77 69 21 8406 iot_thread 6c 6c 00 24 4d 51 54 54 20 64 65 6d 6f 20 75 6e 22 8413 iot_thread 65 78 70 65 63 74 65 64 6c 79 20 64 69 73 63 6f 23 8419 iot_thread 6e 6e 65 63 74 65 64 2e 00 5e 3f 53 44 4b 3d 41 24 8426 iot_thread 6d 61 7a 6f 6e 46 72 65 65 52 54 4f 53 26 56 65 25 8432 iot_thread 72 73 69 6f 6e 3d 34 2e 30 2e 30 26 50 6c 61 74 26 8439 iot_thread 66 6f 72 6d 3d 53 54 4d 33 32 4c 34 37 35 26 41 27 8446 iot_thread 46 52 44 65 76 49 44 3d 43 46 41 42 34 43 37 39 28 8452 iot_thread 42 43 41 46 30 33 41 43 35 33 41 43 39 35 46 33 30 8463 iot_thread INFO MQTT8463 (MQTT connection 0x10006258, CONNECT operation 0x100063e0) Waiting for operation completion. 32 8488 iot_thread DEBUGMQTT8488 (MQTT connection 0x10006258, CONNECT operation 0x100063e0) Job reference changed from 2 to 1. 33 13486 iot_thread INFO MQTT13486 (MQTT connection 0x10006258, CONNECT operation 0x100063e0) Wait complete with result TIMEOUT. 34 13498 iot_thread DEBUGMQTT13498 (MQTT connection 0x10006258, CONNECT operation 0x100063e0) Job reference changed from 1 to 0. 36 13521 iot_thread DEBUGMQTT13521 (MQTT connection 0x10006258, CONNECT operation 0x100063e0) Removed operation from connection lists. 39 13556 iot_thread DEBUGMQTT13556 (MQTT connection 0x10006258, CONNECT operation 0x100063e0) Operation record destroyed.