問題タブ [firmware]
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.
firmware - ファームウェアが電子デバイスと通信して操作を実行する方法は?
ほとんどすべての電子機器にはファームウェアが付属しています。ROM(読み取り専用メモリ)に保存されているため、不揮発性になります(RAMのように内容が消去されるのを防ぐために電源は必要ありません)
私が知りたいのは、「ファームウェアが電子デバイスと通信して操作を実行する方法」です。小さなローラーがあるとしましょう..ボタンを押すと、どのように動くのでしょうか? 誰かがそれを実現するために背後にあるものを説明してもらえますか..それを解くには少し簡単な説明が必要かもしれません..
また、ファームウェアのコーディングに使用される最も一般的な言語は何ですか?
embedded - PC上のオシロスコープを使用した正確なタイミング
組み込みソフトウェア(ファームウェア)の世界では、イベントの順序を観察し、タイミングを取り、プログラムを最適化するために、PIOラインを揺らし、オシロスコープでその動作をキャプチャするのが一般的です。
昔は、シリアルポートとパラレルポートのピンを切り替えて、PCベースのソフトウェアでほぼ同じことを実現することができました。これにより、ホストPCベースのソフトウェアイベントとファームウェアイベントを同じトレースでキャプチャし、ホストソフトウェアとファームウェアの相互作用を調べることが可能になりました。
今、私の新しいラップトップ...シリアルまたはパラレルポートはありません!これはますます当てはまります。それで、誰かが「現代の」PCから正確なタイミング信号を発することについて何か提案がありますか?すぐにプログラム可能なラグのない出力ピンが残っていないことに気づきました。
ソリューションはラップトップで実行する必要があるため、デスクトップにのみ接続するアドオンカードの使用は許可されていません。
linux-device-driver - inb() および outb() 経由で通信するためのデバイス ベース アドレスの検索
ドライブに関する特定の情報を見つけることができるように、inb()、inw()、outb()、および outw() コマンドを使用してディスク ドライブと通信しようとしています。ただし、これらのコマンドを使用するには、デバイスの正しい I/O ポートが必要です。正しい I/O ポートがあれば、探している情報を簡単に見つけることができますが、Linux でデバイスの I/O ポートのベース アドレスを見つける方法がわかりません。
DOS では、Hdat2 を使用してデバイスのベース アドレスを見つけることができますが、Linux でアドレスを見つけようとしています。Linux でどのデバイスがどの I/O ポートにマップされているかを調べる方法はありますか?
/proc には ioports というファイルがあり、いくつかの情報が含まれていますが、この情報を特定のデバイスに関連付ける方法はわかりません。
どんな助けでも大歓迎です。ありがとう!
mobile - 携帯電話のファームウェアを自由に変更することはできますか?
ファームウェアのプログラミングで携帯電話を少しいじってみたいと思います。それは私にとってまったく新しい分野です。
オリジナルの電話のファームウェアをカスタムのものに変更することはできますか? それを行う方法についての指針はありますか?
また、おすすめの携帯電話の機種を教えてください。
私は(現時点では)通話機能を維持することにまったく関心がありません。携帯電話をポータブル コンピューティング デバイスとして使用することだけです(謙虚かもしれませんが)。Android と OpenMoko が最適だと思いますが、代替案を知りたいです。
firmware - 永続的なDOS攻撃-知識のある人はいますか?
そのため、クラスに対する永続的なDOS攻撃を調査しており、具体的な例を思い付くのに苦労しています。Phlashing(用語を知らない人のために、デバイスをブリックするか、悪意のあるファームウェアをその場所に配置するためにファームウェアをフラッシュする)については多くの情報がありますが、より幅広い例を示したいと思います。
そうは言っても、ディスクアームを磨耗させるようなコードを書く方法が必要ですよね?ディスクがディスクの最後までシークし、次に前面に戻って、オンとオンを繰り返すもの。誰かがそれがどのように達成されるかの例を持っていますか?Cのディスクのどこを追跡するかを指定する方法はありますか(ファイル内の特定のポイントまでトラバースするのと同様ですが、HDD全体に対して!)?そうでない場合は、常にディスク上のファイルの場所を強制しようとしていると思います...これは、達成しようとするのが面白くないようです。繰り返しますが、プログラムでそのようなことを行うことができますか?
誰かがこれらのタイプの攻撃についての洞察、または私がチェックインするための良いリソースを持っているなら、私はそれをいただければ幸いです。たぶん、数年前にスラッシュドットでそれについての話を読んだことがありますか?お知らせ下さい!収集できる情報が多ければ多いほど、クラスでルーターをブリックすることで、会話中に時間をつぶすことを余儀なくされる可能性は低くなります:)私はお金やルーターでできていません!
android-ndk - 実行している Android ndk のバージョンを確認するにはどうすればよいですか
GUI では、[Settings] -> [About Phone] -> [Firmware Version] に移動して、2.1 (または何でも) を取得できます。コマンドラインから(または実行時に実行する必要があるネイティブアプリケーションの場合)どうすればよいですか?
android - Android:さまざまなモデルの元のファームウェア識別文字列
さまざまなAndroidハンドセットモデルのBuild.MODEL文字列の概要はどこかにありますか?何かのようなもの:
- 「ヒーロー」-HTCヒーロー
- 「ERAG2Touch」-ブランドのHTCHero
- 「T-MobilemyTouch3G」-ブランドのHTCMagic
- 「GT-I5700」-SamsungGalaxy
- ... 等々
アプリユーザーの中でroot化されたデバイスの割合を知りたいのですが、どのデバイスがどれであるかを判断するのが難しい場合があります(もちろん、root化されたファームウェアはバニラのものを模倣できることはわかっていますが、通常はそうではありません)。
embedded - 利用可能なFreeRTOSインタプリタ言語ライブラリはありますか?
私はFreeRTOSを使用していくつかのデバイスのファームウェアを作成した会社で働いています。最近、私たちの新機能の要求は、ファームウェアエンジニアができる仕事の量を超えていますが、今のところ、新しい人を雇う余裕はありません。小さな変更を加える場合でも、ファームウェア担当者は非常に低いレベルで変更を加える必要があります。
私は、FreeRTOS用のある種のインタプリタ言語プロジェクトを探していました。これにより、より高いレベルで新しい機能を実装できるようになります。理想的には、すべての機能を自分で実装するのではなく、デバイスを一般的なコンピューターに近づけてドライバーを作成できるようにしたいと考えています。
Java、Python、または同様のバイトコードを解釈するFreeRTOSプロジェクトはありますか?
私はグーグルを見てきましたが、私自身はファームウェアエンジニアではないので、正しいキーワードを探しているかどうかわかりません。
みんな、ありがとう
c - これはスタックオーバーフローのように聞こえますか?
組み込みファームウェアコードにスタックオーバーフローの問題などが発生している可能性があります。私は新しいプログラマーであり、SOを扱ったことがないので、それが起こっているかどうかはわかりません。
ファームウェアは、磁石が等間隔に配置されたホイールを備えたデバイスを制御し、ボードには、磁石がその上にあることを感知するホール効果センサーがあります。私のファームウェアはステッパーを操作し、ホイールがストールしたかどうかを検出するためにマグネットセンサーを監視しながら歩数をカウントします。
チップのタイマー割り込み(8ビット、8057 acrh。)を使用して、モーターを制御し、ストールを検出するための出力ポートを設定しています。ストール検出コードは次のようになります...
このコードは、ISRがトリガーされるたびに呼び出されます。PosSensorはマグネットセンサーです。MagnetSizeは、磁場を通過するために必要なステッパーステップの数です。GapSizeは、2つの磁石間のステップ数です。ですから、磁石の上にセンサーが引っかかっているのか、磁石の上に引っかかっていないのかを検出したいと思います。
これは長い間うまく機能しますが、しばらくすると、「StallDetector>(MagnetSize + 10)」のために最初のストールイベントが発生しますが、StallDetectorの値を見ると、常に220前後です。MagnetSizeは常に約35であるため、これは意味がありません。したがって、ストールイベントは46のようにトリガーされるはずですが、どういうわけか、220まで到達したのでしょうか。また、ストール検出器の値をコードの他の場所に設定していません。
この問題の根本を突き止める方法について何かアドバイスはありますか?
ISRは次のようになります
HandleStallEvent
いくつかの変数をデフォルト値に戻すだけで、別の移動を試みることができます...
firmware - レゴマインドストーム1.0と2.0の違いは何ですか
マインドストームキットを購入することを考えています(現在は所有していませんが、大学で1.0を使用しています)。2.0が1.0よりも優れているかどうかは少しわかりません。私はこの主題に関する他の投稿をすべて一般的に2.0の方が良いと言っているのを見ましたが、これについていくつかのより具体的な質問があり、答えを見つけることができないようです。
2.0キットで入手できるさまざまなレゴピースとセンサーは別として、1.0nxtブリックと2.0nxtブリックの間に違いはありますか?他のソースから判断できることから、インストールされているファームウェアを除いて同じです。1.0キットを購入して、2.0キットに付属しているのと同じファームウェアをインストールでき、ブリックは同じであるか、1.0ブリックは2.0ファームウェアと互換性がないというのは正しいですか?
また、cやjavaなどの別のプログラミング言語を使用する予定なので、librcxやlejosなどの特定のファームウェアをインストールする必要がありますか?したがって、提供されているレゴコーディング方法ではなくcまたはjavaを使用している場合、1.0または2.0(キットのレゴピースを除く)を使用しているかどうかは関係ありませんか?
一言で言えば、私がlibrcxまたはlejosを使用していて、含まれているセンサーやレゴピースを気にしないと仮定すると、1.0キットよりも2.0キットを購入することにメリットはありますか?
前もって感謝します