-
Notifications
You must be signed in to change notification settings - Fork 1
FreeRTOSについて
freertos.org のDownload Source
でダウンロードページに飛び、Download Source Code and Projects
をクリックするとダウンロードが始まる。
ただし、こちらでは直接自己解凍形式のExeファイルにリンクされるようなのでZipでほしい場合は ここ からダウンロード。
ここ によるとVisual Studio Community 2015なら特に何もせずにシミュレータが動く模様。実際にFreeRTOS/Demo/WIN32-MSVCをビルドしてコマンドプロンプトにて動作しているのを確認した。
Linux向けシミュレータについては ここ を参照。 ただし、現状Macだとmqueueを自前で用意する必要があり、Ubuntu(14.04 TLS)ではmqueue系の関数のリンクに失敗している。
FreeRTOS+TCP にて入手できる。基本的にFreeRTOSのソースコードに追加する形で利用するようだ。Embedded_Ethernet_PortingによればxNetworkInterfaceInitialise()
とxNetworkInterfaceOutput()
をポーティングすればソケットなどが利用できる模様。
特につまるところもなく、SimpleLink上で実行できた。
通信先APの設定がアプリ内でもできるはずだが、そもそもデフォルト(コード埋め込みのcc3200demo
)につなぎにいくと一切進まない(タイムアウトしない)のでコードを書き換える必要があり、common.h
のSSID_NAMEなどを変更した。
通信相手として自分のPCを指定する際にiperfが必要となるので別途ダウンロード。iperf起動(-tオプションは使えなかった。起動コマンド:iperf3.exe -s -i 1)後、そのポート番号とPCのIPアドレスをアプリ内で設定しSend TCP packets.
を行うとiperf側に反応があり(ただしWarningが出ている)、SimpleLink側で送信成功のメッセージが出た。
TIのEclipseベースのIDE。ホームページ。 16KBまでのバイナリサイズ制限のある無償ライセンスと90日分の評価用フル機能ライセンスがある模様。
TeraTermを使用している場合、COMポートをTeraTermで使用しているとCCSからCC3200へのバイナリ転送が失敗する。バイナリ転送が終わるまで(mainの始めでブレイクするまで)はTeraTermのCOMポートを別のものにして、ブレイク再開する前にCC3200のCOMポートに戻すひと手間が実行のたびに必要だった。
-
GT202
Alljoynのドキュメント によるとGT2020へFreeRTOS上のArduino環境で走るAlljoynアプリをインストールし実行するための環境構築の話があった。 ここのQCA4002 Based ModulesによるとGT202にSTMicroelectronics Nucleo F411RE
ボードをつけるとFreeRTOS用の構成にできるようだ。 -
Raspberry-Pi
RaspberryPi-FreeRTOSにてFreeRTOSのラズベリーパイ向けのPortが存在する。ただし、最終更新日やコード内容からWifiモジュールのあるPi3には対応していない可能性があり、Pi、Pi2にUSB-Wifiモジュールを指し、自前でドライブさせないと(自前でドライバコードを用意する)いけないかもしれない。 -
CC3200
[CC3200のサイト](http://www.tij.co.jp/tool/jp/cc3200sdk#Technical Documents)の技術資料のプログラミングガイドによるとexampleフォルダ内にFreeRTOSのデモアプリが存在し、FreeRTOS v8.0.1をサポートしている。CC3200SDKのダウンロードには登録が必要。また登録後のダウンロード時にある種の誓約(犯罪などに使わないなどの宣言)があるので注意。FreeRTOSでタスク周りの管理は行えるようだが、通信周り(ソケット)はsl_socket(CC3200SDK内に定義済み)を使用している。FreeRTOS_socketにするには一段ラッパーをかませる必要がありそうだ。 FreeRTOS+TCPの通信周りのポートはソケットより低レベルでのポートを行う必要があるので、FreeRTOS_socketでsl_socketをラップするのは無理な模様。FreeRTOS+TCPを使う場合CC3200用ポートをゼロから作る必要がある。(CC3200用のソケットライブラリがあるため、そもそもポートされていないみたい。) またはThingSDKのソケットCB部分で使い分けるような方法を取るべきか。 -
FRDM K22F
FRDM-K22Fにドキュメントなどが一式ある。 IDEはKinetis Design Studio(EclipseベースのIDE)を使用する。ダウンロードの際に登録が必要。
今はまだメモ書き
cc3200-sdk/example下にfreertos_thingsdk_demoを配置 freertos_thingsdk_demo下でthing-if-ThingSDKを同名フォルダでclone thing-if-ThingSDK/kii/TI/CC3200/wlan_station/kii下のREADME.mdの注意書きの通りに編集、あとkii_json.cでEINVAL関連のエラーが出るのでsocket.hをインクルードした。 これでIARではビルド自体は出来た。
no definition for "__write" [referenced from putchar.o(dl7M_tln.a)] 実際にThingSDKのAPIを利用したら上記エラーが出た。 これはIARの環境だとwrite.c(IAR Workbenchをインストールした所にある)を直接ワークスペースに含めて対処するとIARの公式見解があった。(詳しくはWikiに記述)
KII_JSON_FIXED_TOKEN_NUMについては前述のREADME.mdの値(20)では足らなくなっていた。今のRestAPIの応答では最低27いる模様。安全マージンで30に変更した。 MQTT越しにコマンドを扱う際は30では足らなかったので40へ増量。
KIIPUSH_TASK_STK_SIZEが2048だとaction_handler内で足らなくなるので4096まで増やすっ必要があった。 また、kii_thing_if.c内のprv_update_statusタスクを作成する際のスタックサイズが8バイトと圧倒的に少ないのでこれを1024バイトへ変更した。(3ヶ所あるのですべて変更) IAR環境なら1024で十分だったがCCS環境だとそれでは足りないので2048まで変更した。