問題タブ [contiki]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - contikiの例sky-shellのビルドでromのオーバーフローと参照の欠落
サンプルのスカイシェルを構築しようとしましたが、失敗しています。contiki-2.6 と contiki-2.7 で試しました。おそらくコンパイラ自体が非効率的か何かだと思っていたので、contiki-2.7で試したときに、必ずmsp430-4.5.3、4.6.3、および4.7.0を試してみました(このフォーラムの質問への回答を使用してmspgccバージョンを切り替えます: https://askubuntu.com/questions/187253/how-to-update-a-package-from-command-line-gcc-compiler )。これはどれも役に立たないようでした。また、「SMALL=0」でコンパイルしようとしましたが、これはオーバーフローを増やすだけのようでした。
次に、sky-upload.c のコード (shell_netfile_init()、shell_rim_init()、shell_rim_netcmd_init() など) をコメントアウトしてみました。これにより、コンパイルのオーバーフローを回避できるようにコンパイルが十分に短縮されたように見えましたが、関数 vuprintf で __udivmodsi4 への参照が欠落していると表示されます。この問題を調査してみましたが、コンパイルの一部で、現在考えているものとは異なるバージョンの gcc を使用しているようです (フォーラムの投稿はこちら: http://sourceforge.net/p/mspgcc/mailman/mspgcc- users/thread/D45E6EE7-2771-41EC-9999-F773C6B22AA4@imag.fr/ )
上記の init() 呼び出しがコメントアウトされていなくても、この例は機能するはずだと思います。また、最終的に例を意図したとおりに動作させる (つまり、ELF ファイルを無線でモートに送信してからロードする) ようにするには、上記の init() 呼び出しをコメント化することはできず、さらに多くのコードが必要になる場合があります。例で提供されているものの上部。
ここには 2 つの主な質問があり、通常、投稿は一度に 1 つしか扱わないことを認識していますが、それらがごちゃ混ぜになっているため、両方の問題 (オーバーフローと参照の欠落) を投稿するのが最善だと考えました。
ここで何がうまくいかないのか誰か知っていますか?私はすべてのコンティキに関して初心者なので、可能な限り追加の説明を追加してください:)。
ありがとう
c - MSP430 printf 関数の実行が遅すぎる
Sky mote (MSP430 F1611 + CC2420) を使用して、100Hz のサンプリング周波数で I2C センサーからデータを読み取り、そのデータをシリアル ポート (USB) に書き込もうとしています。いくつかのテストを試したところ、合計出力データのサンプリング周波数が 78Hz であることがわかりました。rtimer を使用してサンプリング コードと印刷コードのプロファイリングを行ったところ、印刷機能によってプロセス全体が遅くなることがわかりました。プロファイリング出力の一部を次に示します。
rtimer には、1 秒間に 4098*8 ティックがあります。ここでは、印刷に約 560 ティック (17ms) かかることがはっきりとわかります。サンプリング周波数が 100Hz の場合、印刷関数は 10ms (327 ティック) 以内に完了する必要があります。
私が使用している組み込みシステムは Contiki OS で、ボー レートは 115200 (最大ボー レート) です。センサー サンプルには、112 バイトの signed int が含まれています。
これが私のコードです:
printf や UART 全般の最適化に関する以前の経験を持つ人が、いくつかの提案を提供してくれることを願っています。
ありがとう!
networking - 外部 DNS サーバーが使用されている場合、uIP DNS clinet が失敗する
uIP スタックを使用して、センサー データを含むリモート Web サーバーに HTTP 投稿を送信しました。DNS クライアントとして resolv.c (uIP の一部として含まれている) を使用して、リモート Web サーバーのドメイン名を IP アドレスに解決しています。ルーター (192.168.1.1) を DNS サーバー アドレスとして使用する限り、すべて正常に機能します。しかし、外部 DNS サーバー アドレス (Google のパブリック DNS サーバー 8.8.8.8 など) を使用しようとすると、解決に失敗します。ネットワーク設定が手動で構成されているコンピューターで同じ外部DNSサーバーを使用しようとしたため、ルーターのファイアウォールは除外され、問題なく動作します。私は長い間この問題に悩まされており、誰かがこの問題を解決するのを手伝ってくれるとありがたいです!
私のプラットフォームでは、RDB1768 (LPC1768 ベース) + LPCxpresso を使用しています。さらに情報が必要な場合はお知らせください。
networking - Contiki または Thingsquare での IPv6 マルチキャスト
私はいくつかの stm32 モートと Contiki を実行するボーダー ルーターを含むプロジェクトに取り組んでいます (しかし、すぐに ThingSquare に切り替える予定です)。境界ルーターは tunslip6 を介してコンピューターに接続され、サーバーはコンピューター上で実行されています。モートがサーバーと通信できるようにします。問題は、これらのモートがサーバーのアドレスを認識せず、自動的に検出することになっていることです。1 つの解決策は、モートがマルチキャスト要求を送信し、サーバーがこの要求に応答することです。ただし、私の理解では、ボーダー ルーターはマルチキャスト アドレス指定の要求を転送できません。本当ですか?このマルチキャスト メッセージを、ローカル LAN 内にとどまり、境界ルーターを通過して伝搬させるにはどうすればよいですか? これを行っている Contiki または Thingsquare プロジェクトはありますか?
ipv6 - contiki にモートの IPv6 アドレスを表示する機能
コンティキ内のモートのIPv6アドレスを出力するために、次のように書きました。
私の方法
は-を出力aaaa 0000 0000 0000 1202 0174 0100 0101
しますが、coojaによって表示されるIPアドレスは-aaaa::212:7401:1:101
です。
0000 0000 0000
それは同じだと理解してい::
ますが、残りの部分が「文字化け」しているのはなぜですか? ここで何が間違っているのでしょうか?
c - contikiで実装するCプログラミングでプロセス平均を計算する
夏のインターンシップで contiki を使い始め、C プログラミングを学び始めています。冷蔵庫の電力の進行中のプロセスの平均を計算する必要があります。私はこのようなコードを作りました
電力の値を取得する方法は既に処理されています。1 秒ごとに消費電力が表示されます (get_instant_power())。サンプル番号の開始と終了の方法がわかりません。1から始めたら、それまではどうすればいいですか? また、パワーをアレイに格納して蓄積することは可能ですか?