リモートアイロンデバッグ



WishBoardにインストールされたデバッグデモボード



自由時間の海があった幸せな学生時代を覚えています。 退屈なカップルがプログラムを書いたり、役に立つ本を読んだりできるゴールデンタイム。 または、はんだごてを使って、または深デバッグで1日、その場で眠らずに座ってください。

クレイジーな創造性のこれらの素晴らしい時代は、卒業証書とフルタイムの仕事を得たときに終わりました。 その後、栄光のフリーランスは終わり、厳しい日常生活が始まりました。 私は誰かが私の人生から11時間(2時間の旅行、1時間の昼食、8時間の仕事)を盗まれたと強く感じていました。 最も悲しかったのは、仕事中に疲れ果てて夜の徹夜のことすら考えられなかったことです。私は来て、夕食を取り、寝ました。さもなければ明日は野菜です。 結局、この状況は私に合わなくなり、私は何をすべきか考え始めました。

趣味では、エレクトロニクスをやって、主にマイクロコントローラーでデバイスを作ります。 原則として、デバッグスキームのアセンブリは十分に高速であり、時間の大部分はコントローラー用のプログラムの作成とデバッグです。 職場では、時間(昼食など)や高速インターネットなどのリソースがあります。 これによると、プログラムだけでなくハードウェアも含めたリモートデバッグのアイデアは、そのシンプルさにおいて素晴らしいものでした。





コンセプト





メインのオペレーティングシステムとして、自宅にLinuxをインストールしています。 これは大きな利点でもあり、欠点でもあります。

Linuxが好きなのは、その完全な汎用性です。 システムは箱から出してすぐに、完全な幸福のために必要なものすべてがすぐにあります:コンパイラー、オフィス、特定の開発環境、必要なドライバーのパッケージ。 巨大なプラス-コンソールからの便利な作業、個々のウィンドウの迅速な転送。

主な欠点は、その普及率が比較的低いことです。また、gccで作成されたコントローラーのプログラムは、同じKeilのものよりはるかに少ないです。 また、長い間、Linux用の通常のAVRプログラマーがいませんでした。 優秀なプログラマーはWindowsでのみ働き、Vineではなんとなく曲がって斜めに働きました。 AVRを放棄し、ブートローダーを備えたワークステーションに切り替えたとき、すべてが根本的に変わりました。

それで、何が必要ですか:

1.グラフィカルモードでさまざまなプログラムを表示できるリモートアクセス。

2.ファイルをコピーして、リアルタイムで変更する機能。

3.目視検査。

4.リモートファームウェアの可能性

5.キーストロークまたはその他の外部イベントのリモートエミュレーション。



さらに、追加のオプションがありました:



6.コンピューターをリモートでオンにする機能。



実装





2番目の点では、かなり明確な方法を使用しますが、最良のソリューションではありません-Dropbox。 最適ではありません。作成するプログラムのバージョンを制御できないためです。 自分自身に繰り返す人への私の推奨-ソフトウェアにSVNを使用します。 それははるかに便利で、将来の頭痛を和らげます。

3番目のポイントでは、UARTを使用してフラッシュできるLPC2103マイクロコントローラー(最初の図を参照)を選択しました。 また、Make-fileに単純に登録された既製のコンソールプログラムがLinuxにあり、1つの簡単なコマンドでフラッシュされます。



プログラムを作る



リモートインクルージョン




画像

忠実な戦闘ルーター



しかし、私と私の愛する人にとって最も重要で主要なことは、私の不在時には、デフォルトでコンピュータの電源を切るべきだということでした。 したがって、Wake-on-lanの実装が優先事項でした。 私のコンピューターは、Asus WL-520 GUルーターの後ろにあります。 このルーターについては、記事habrahabr.ru/blogs/easyelectronics/109395ですでに書いています。 Olegovファームウェアには、ether-wakeと呼ばれるデフォルトのプログラムがあります。 ネットワークカードのMACアドレスがパラメーターとして置き換えられ、コンピューターの電源が入ります。 電源を入れた後、コンピューターにpingを実行して起動時間とSSH経由でコンピューターに接続できる時間を設定する小さなスクリプトを作成しました。 スクリプトは次のようになります



エーテルウェイク00:1f:d0:0b:0b:75

ping 192.168.1.109



これで、コンピューターの電源を入れるには、たとえばルーターにPuttyを使用して接続し、スクリプトを実行してpingが送信されるのを待つだけで十分です。



[dlinyj @ WL-001E8C505364ルート] $ ./wakeup.sh

PING 192.168.1.109(192.168.1.109):56データバイト

192.168.1.109から84バイト:icmp_seq = 0 ttl = 64 time = 1.0 ms

192.168.1.109から84バイト:icmp_seq = 1 ttl = 64 time = 0.8 ms



リモートワーク




自宅ではLinuxを使用していますが、職場では論理的であり、多くの状況のた​​めにWindows XPを使用していることに注意してください。 Linuxでウィンドウを転送するには、次のコマンドをリモートマシンに接続するだけで十分です。



sshユーザー@ホスト–X



Windowsでのそれはそれほど単純な解決策ではなく、Puttyだけではここではできません。 何らかの方法で使用するいくつかのオプションがあります。 最初のオプションであり、最も残忍なのは、動作中のマシンにもLinuxをインストールすることです。 しかし、ネットワークサービスとMS Office形式の強力なワークフローを非常に開発しているという事実のため、それをWindowsに戻す必要がありました。 2番目の解決策は、最初の解決策に似ていますが、ハードドライブに多くのスペースが必要なため、仮想マシンにLinuxをインストールします。

最も簡単なのは、Xmingプログラムを使用することです。現在、このオプションを使用しています。 これを行う方法の説明は、 www.openkazan.info / Linux_Desktop_from_Microsoft_Windows-Xming-SSHにあります。



これで、構文を強調表示するgeditなどのグラフィカルモードをすばやく起動できるようになりました(コンソールアプリケーションはコンソールを占有するため、使用しません)。 または、たとえば、ブラウザで最後に開いたタブ、最も一般的で必要な現象を確認できます。 通常は夜に必要なプログラミング素材を探し、朝は新鮮な心で仕事をしてから、それを処理するのが良いでしょう。 しかし、これは最も重要なことでもあることがわかりました。 今、視覚制御の可能性があります!



目視検査




同意します。機会があるときに特別な関心が表示されます。鉄片がLEDでどのように点滅し、必要なすべてを実行します。 そして、リモートモードではそのような可能性があります。 プログラムのウィンドウを転送できる場合、ウェブカメラからの画像を表示するウィンドウを転送できるのは論理的です。 画像を転送するために、チーズプログラムを使用しました。 ボード上にウェブカメラを置くのが便利になるように、テーブルランプに取り付けました。



画像

ウェブカメラ



もちろんビデオの速度は大幅に低下し、遠くの送信はリアルタイムではありませんが、点滅するLEDを見ることができます



画像

チーズプログラムの結果



私は、日光の光の中で、ダイオードの輝きが完全に見えないというニュアンスに注意したい。 したがって、私はボードの前に大きな段ボールのシートまたは本を置いて、それらが影を作るようにしました。



押しボタン




電子機器に携わる人は、コントローラーの主な機能の1つが環境イベントの処理であることを知っています。 そして、これらのイベントをデバッグするには-それらを作成する必要があります。 多くの実装オプションがあります-2番目のコントローラーやアナログセンサーなどを掛けます。 外部割り込みハンドラープログラムを実行するには、短いパルスを処理する必要がありました。 このために、私は外部リレーの古いブロックを取りました。



画像

リレーブロック



このことは私の最初の仕事から残っています。 仮想COMポート、Attiny2313コントローラー、3つのリレーのブロックとして定義されるFT232BMチップがあります。 これはすべて、ターミナルプログラムを介して制御されます。 大文字の「A」は最初のリレーをオンにし、「B」は2番目のリレーをオンにします。これに応じて、小文字はオフになります。 あるいは、いくつかのマスターキットキットを見つけることも、自分で行うこともできます。



おわりに





私の投稿は概念です。 それを究極の真実と考える価値はありません。 Linuxの代わりに、Windowsを使用できます。 Dropboxの代わりに、SVNを使用できます。 強力なリレーユニットの代わりに、クリックをエミュレートする2番目のマイクロコントローラーを使用できます。 より賢い人は、Olegファームウェアを搭載したルーターでもカメラをピックアップできると提案しています。 一般的に、実験することを恐れないでください。あなたがオフィスラットであり、シャイタンデバイスを職場に持ち込んですべての従業員をロジンで中毒にすることができない場合、これは職場でプログラミングや電子機器を実行できないという意味ではありません。



PS GCCでは、LPC2103コントローラー上の外部割り込みの処理をデバッグできませんでした。 誰かがlpc21 **コントローラー用のgccで書いた場合、私はまだ可能な例を見つけることができず、私を助けることができる人がいないので、すべての可能な助けに感謝します。



All Articles