問題タブ [bare-metal]

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.

0 投票する
0 に答える
665 参照

c - Bare-metal Loader - 共有メモリを介して .elf バイナリを他のプロセッサに送信し、実行します

セットアップ: busybox-Linux を実行する 1 つの ARM-CPU (A9)。これはネットワークと通信し、プリコンパイルされた静的にリンクされた elf を取得します。2 番目の CPU は、ベアメタル アプリケーションを実行します。その上にnewlibがあり、「OS」全体がその1つの基本プログラムを実行するだけでメモリに置かれます。どちらも OCM を共有します。

2 つのプロセッサを「対話」させることに成功しました。Linux からメモリに 16 進値を書き込むことができ、他のプロセッサはそれを読み取り、その逆も同様です。ここで、前述の elf を解析し、OCM に送信し、ベアメタルにそれをメモリに読み込ませ、asm を介してプログラム カウンターを設定し、その elf を実行します (.o ファイルも使用できます)。すでにエルフの解析で行き詰まりました...

_asm-idea.S:

あなたが私の唯一の希望であるように、私を力強く助けてください。

0 投票する
0 に答える
728 参照

c - Lego MindStorm EV3 バイナリをビルドするには?

ev3 レゴ ブロック用の疑似 OS を作成しようとしています。ブリックの ROM に u-boot ローダーがあり、SD カードの最初のパーティションからuImageファイルをロードすることは既にわかっています。Linux ev3 カーネルがどのように機能するか、およびエントリ ポイントがどこにあるかを理解しようとしました (メイン関数を想定)。潜在的なエントリ ポイントがありますが、この場所がどのようにエントリ ポイントとしてマークされているか、または簡略化されたバージョンをコーディングする方法はわかりません。

uImageファイルに変換できる独自のバイナリを作成したいと考えています ( mkimageを使用)。

  • これをどのように行う必要がありますか?
  • 特定のC関数をエントリポイントとしてマークする方法は?
0 投票する
1 に答える
191 参照

c - ベア メタル アーム (AM1808) - キック レジスタからの読み取り

ベア メタル AM1808 でピンの多重化を試みていますが、キック レジスタを書き込めないようです。より具体的には、書き込もうとした値を読み戻すことができないようです。

これが私のコードです:

出力:

スーパーバイザー モードになっているのに、一般的にキック レジスタを読み取ることができませんか? その場合、syscfg を正しくロック解除したかどうかをテストするにはどうすればよいですか?

更新: 結局のところ、私が抱えていた問題は、ピンの多重化やキック レジスタとは関係ありませんでしたが、代わりに、正しく多重化された GPIO ピンを使用する最上位ロジックにエラーがありました。混乱させて申し訳ありません。

0 投票する
2 に答える
546 参照

python - Python を使用した Linux ベースの Raspberry Pi オペレーティング システムのプログラミング

私はオペレーティング システムの作成についてはあまり詳しくありませんが、これは良い学習方法だと思います。raspberry pi オペレーティング システムのチュートリアルはありますが、Linux ベースではなく、Python で作成されたものでもありません。ここで一般的なチュートリアルを探しています。

0 投票する
3 に答える
757 参照

embedded-linux - ベアメタル ベンチとソフトウェア

ベアメタル プログラミングに関する情報を探しています。私はさまざまな powerpc プラットフォームで作業しており、現在、一部のテストが Linux カーネルの影響を受けないことを証明しようとしています。これらのテストは非常に基本的なもので、asm volatile にロードおよびストアし、いくつかのベンチマーク (Coremark、Dhrystone など) も同様です。これらのテストは Linux で完全に実行されますが、実際には経験のない環境であるベアメタルでテストする必要があります。すべてのプラットフォームに u-boot がインストールされています。 powerpc-eabi cross-compiled テストを実行するには? たとえば、u-boot によって起動された gdbserver は、シリアル ポートまたはイーサネット経由で通信できますか? U-boot によって呼び出される busybox を持つことは可能ですか?

0 投票する
3 に答える
2259 参照

c - リンカー スクリプト: 特定のファイルを後の位置に置く

次のようなリンカ スクリプトを書きたいと思います。

ここでの私の意図は、次の順序で行うことです。

  • .textfromのあるセクションstartup.o
  • .text.dataおよび.bssのすべての入力ファイルからのそれらのセクションを含みますother.o
  • からの.text.dataおよび.bssセクションother.o

もちろん、私が与えたスクリプトには問題があります:以前に使用さother.oれたワイルドカードに含まれている*ため、出力セクションに入れられませんother

other.os の代わりにすべての入力オブジェクト ファイル バーを手動でリストする以外*に、ここで必要なことを達成する方法はありますか?

0 投票する
1 に答える
7268 参照

embedded - C またはインライン アセンブリで ARM 割り込みベクトル テーブル ブランチをセットアップする方法は?

RTOS または Linux OS を使用しないベアメタル環境で、C またはインライン アセンブリを使用して ARM9 割り込みベクトル テーブルをセットアップする方法の例を教えてください。

具体的には、インライン アセンブリまたは C を使用して、C でコーディングされた IRQ 割り込みハンドラー ISR に分岐を設定するにはどうすればよいですか?

割り込みエントリ テーブル

ヒントや方向性を事前に感謝します。

ARM9 のベアメタル開発の例を見つけるのは非常に困難です。

エド

  • TI TMS320DM6466
  • コード コンポーザー スタジオ v5.5
0 投票する
0 に答える
587 参照

console - 標準ライブラリのprintf()関数で使用するためにUART putcまたはputs関数を登録する方法は?

ビーグルボーン用のベアメタル プログラムを作成しています。したがって、シリアル デバッグ メッセージには UART0 を使用します。というカスタム関数を作成しました

これにより、文字または文字列が uart0 に出力され、ターミナル ウィンドウに表示されます。

Mentor Graphics の Sourcery-Codebench は、私がここで使用しているコンパイラ スイートで、printf() を備えた標準 C ライブラリを提供します。ここで、uart0_putc と uart0_puts を接続して、提供された printf() を使用して端末でフォーマットされたメッセージを取得できるようにします。

これは実現可能ですか?同じことをする方法は?

前もって感謝します。

0 投票する
0 に答える
364 参照

c - Raspberry Pi のエラー認識ブートローダー

Raspberry Pi 用のシンプルなブートローダーを書きたいと思っています。このブートローダーの主な目的は、リモートの場所にある Raspberry Pi を有効にして、カーネル パニックの結果としてデバイスを起動できなくするカーネル アップデートから回復することです。カーネルを更新する手順は次のようになります。

デフォルトの Linux カーネルは/boot/rpi-kernel.imgで、文字列 'rpi-kernel.img' が に書き込まれ/boot/default-kernel.txtます。の「cmdline=」にカーネル パラメータ「panic=10」が追加されました/boot/config.txt

  1. SSH 経由で Raspberry Pi に接続します。
  2. /boot/rpi-kernel.imgにコピー/boot/rpi-kernel-fallback.img
  3. 空のファイルを作成/boot/kernel_update
  4. カーネル アップデートをダウンロードし、次の場所に移動します。/boot/rpi-kernel.img
  5. リブート

これは、疑似コードで考えたブートローダーの設計です。

ブート プロセスの最後のステップとして、シェル スクリプトは が/boot/kernel_update存在するかどうかを確認し、ネットワークが機能しており、環境が正常であるかどうかを確認してから、 を削除し/boot/kernel_updateます。

HDMI、USB、イーサネット、シリアルなどをサポートせずに、ブートローダーをできるだけクリーンでシンプルにしたいと考えています。問題は、これを開始する方法がわからないことです。

主な課題は、SD カードの FAT32 ファイルシステムの読み取りと書き込み、および Linux カーネルの起動です。Raspberry Pi のベアメタルからすべてを実行する必要があります。

コード例、リソース、提案など。これを行うと非常に役立ちます。

0 投票する
3 に答える
5032 参照

qt - Qtベアメタルとは?

QtCreator には「Bare Metal」というプラグインがあります。ベア メタルとは、オペレーティング システムのないコンピュータを意味します。Qt Bare Metal の開発についてはあまり見たことがありません。Qt をベアメタル システム用に開発する方法はありますか? Qt は OS のないシステムで動作しますか? はいの場合、組み込みシステム開発におけるこのアプローチの利点は何ですか?