MCB1700評価ボードのプログラムを開発したい。PCのクライアントソフトがHDDから画像を読み込みます。次に、ソケット (イーサネット) を介して画像を MCB1700 評価ボードに送信します。MCB1700 のサーバーは、ソケット接続を介して PC から画像を受信し、LCD に表示します。
また、サーバーは次のタスクを実行する必要があります。
- 画像を USB スティックに保存するには;
- USB スティックから画像を読み取り、ソケットを介してクライアントに送信します。
- CAN経由で情報を送受信するには
- COM ロギング。
- 等
ソケット接続は、CMSIS および RL-ARM ライブラリを使用して実装できます。
しかし、私が理解している限り、どちらの場合も、ソフトウェアは着信 TCP 接続をリッスンし、ネットワークのイベントを無限ループで処理する必要があります。Keil のすべての例は、そのような原則に基づいています。
私はいつも、組み込みプログラミングで無限ループを使用するのは悪い方法だと思っていました。しかもこんな面白い発言を読んだ
「RTOS なしで (1 つまたは複数のタスクをループで実行することにより) リアルタイム プログラムを作成することは確かに可能です」
http://www.keil.com/support/man/docs/rlarm/rlarm_ar_artxarm.htm それで、私が理解したように、多くのタスクをループで実行するのは通常の習慣ですか?
while (1) { task1(); task2(); ... taskN(); }
全てのイベントを割り込みで処理した方が良いと思います。
CMSIS および RL-ARM ライブラリのソケット接続を使用し、割り込みを処理することによってすべてのソフトウェアを整理することは可能ですか? 私のサーバー (MCB1700 上) は、多くのタスクを実行する必要があります。ソフトウェアで RTOS RTX を使用する必要があると思います。そうじゃない?RTX なしでソフトウェアを実装した方が良いですか?