問題タブ [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.
windows - Windows と同等の makemenu 構成
Windows用のmake menuconfigのようなユーティリティはありますか? ビルドする前にいくつかの構成が必要なベアメンタル組み込みシステム用のソフトウェア スタックがあります (ビルド環境は Windows の下にありますが、makefile を使用します)。
arm - newlibとのリンク:memcpyへの未定義の参照
私はarmブートローダーを構築しようとしていますが、いくつかのシステムコール(memcpyなど)を提供するためにnewlibに依存しています。
私が走るとき:
私は次のようになります:
今のところ、私はmemcpyを攻撃しており、他の人がフォローすることを望んでいます。私が実行するとnm /usr/arm-elf/lib/thumb/libc.a
(これはlibcのnewlibバージョンであると私は信じています)、次のように表示されます。
つまり、これはmemcpyがライブラリで定義されていることを示しています。
上記のコマンドを実行strace
して、実際にそのファイルを参照していることを確認しました。実際、実際に確認しています。ld
ここで何が欠けていますか?未定義のmemcpyについて不平を言うのはなぜですか?
c - ベアメタル組み込みシステム (ARM) でのプロファイリング
ベア メタル システム (ARM Cortex a8) でソフトウェアをどのようにプロファイリングするのか疑問に思っています。以前は、ベンチマーク統計が組み込まれたシミュレーターを使用していましたが、現在は実際のハードウェア (BeagleBoard-Xm で実行) の結果を比較したいと考えています。
gprof を使用できることは理解していますが、ターゲット システムで Linux を実行する必要があると想定しているため、少し迷っています。
Codesourcery の arm-none-eabi クロス コンパイラを使用して実行可能ファイルをビルドし、ターゲット システムで FreeRTOS を実行しています。
assembly - ベアメタルBeagleBoardのアセンブリ
私は最近、組み込みプログラミングを始めようとしていて、いくつかのリソースを探しています。私は高級言語でかなりのプログラミングを行ってきましたが、ハードウェアが実際にどのように機能するかに常に魅了されてきました。ついにハードウェアについて学ぶための強制機能として、私は最近、アセンブリでベアメタルをプログラミングすることを目的としてBeagleBoardXMを購入しました。
私は1週間ほど、暇なときにTRMを読んだり、Webでサンプルコードを検索したりしました。シリアルポートを介してデータを表示するための良い例を提供するリソースをいくつか見つけましたが、それ以上のものはありません。割り込みとsdmaを利用している人の例をいくつか見つけたいと思っていましたが、まだ見つけていません。スタータープロジェクトとしての私の目標は、シリアルポートから文字入力を受け取り、それを画面にエコーバックする非常に単純なプログラムを作成することです。割り込み/sdmaを利用するようにしたいと思います。TRMを読むと、これを実現する方法がわかりません。この主題に完全に慣れていないので、ドキュメントを理解するために私が何を探す必要があるかを正確に知ることは非常に困難です。BeagleBoardのハードウェア機能のいくつかを利用するサンプルasmコードを提供できる専門家がいるのではないかと思いました。結局のところ、コードの良い具体的な例を置き換えることができるドキュメントの量はありません。
language-agnostic - コンパイラ/インタプリタが金属に放出する場所は、言語の実装が必須からどれだけ離れているか
私はこれを誰かが2年までに私を打ち負かした質問への「答え」として尋ねたく なかったので、私は新しい質問をしました。それはそこの答えから現れます(彼が書いているN.ラムジーを参照してください:
「...しかし、MITのArvind教授の先駆的な仕事を見ると、彼のグループは、基本的な計算操作が本質的により宣言的なデータフローマシンを設計および構築しました。...」
ベアメタル命令は、宣言型である場合もあれば、必須ではない場合もあります。
その方向にどこまで行けるのか、誰か感じていますか?コンパイラは常に関数型言語を命令型言語に変換する必要がありますか?これを可能にするハードウェアは存在しますか?
私はただ興味があります-常にprogを見ています。lang。トレンドがあり、最終的に、可変状態がないこと(たとえば)が実際には何を意味するのか疑問に思いました。
gcc - .dataセクションがinitデータを取得する必要がある場所をどのように知ることができますか?(gccリンカー)
gccベースのベアメタルmcuプロジェクトをビルドするときは、起動時に.dataセクションと.bssセクションの初期化に注意する必要があります。
.bssセクションは、セクション全体を0に入力するだけなので、非常に簡単です。ただし、.dataセクションの変数は、初期化データをrom / flashに格納し、起動時にコピーする必要があります。
初期化値のデータがどこにあるかを知るにはどうすればよいですか?
例を見てみましょう。
main.cに2つのグローバル変数を作成するとします。
次に、オブジェクトファイルでobjdumpを使用して、それらがどのセクションにあるかを確認できますが、初期化データを配置する場所のobjdump出力には何も見つかりません。
次に、システム全体の結果のelf(この場合はmain.elf)を確認できます。
データをコピーできるように、どこにあるかをどこで見つけることができますか?リンカースクリプトに何を入れる必要がありますか?
.textや.rodataのようなものにする必要がありますが、どうすればわかりますか?
my_global_variable_oneの初期化データがどこにあるかを確認するにはどうすればよいですか?
readelfやobjdumpなどのbinutilsコマンドのいずれかを使用して、このデータがどこにあるかを見つけることができますか?
/ありがとう
これはstm32(Cortex M3)mcu上にあり、gccのCodeBenchバージョンが使用されます。
assembly - bf561 の coreb での実行時アセンブラー エラー
誰かがこのエラーを解決する方法について手がかりを教えてくれませんか:
実行時にベア メタル Coreb でプログラムがクラッシュします。
デバッグ時には、このアセンブラ コード行が原因です。
何か問題がありますか?
.align 8 を使用した gdb からのデバッグの詳細は次のとおりです。
直前:
例外の後:
提案されているように .align 4 を使用すると、同じようにクラッシュします。レジスタ値は次のとおりです。
クラッシュ前:
クラッシュ後:
前と同じ:
(
x86 - x86 上のベアメタル プログラムの BIOS
BIOS 割り込みを使用するのは良い考えINT10
ですか? または、coreboot、UFEI、または openFirmware を検討する必要がありますか? これらは互換性がありますか?画面に表示するには何を使用すればよいですか?
gcc - Microblaze クロス コンパイル
gcc を使用してザイリンクスの microblaze プロセッサ用のベアメタル プログラムをコンパイルする方法を知っている人はいますか?
これはザイリンクス SDK で非常に簡単に実行できますが、現在、microblaze ビルドをより大きなビルド ワークフローに統合しようとしています。つまり、sdk GUI を使用せずに、すべてのコマンド ラインを実行できる必要があります。
ザイリンクスのサポートとサンプルのほとんどは、その SDK を中心にしています。彼らのサイトでの gnu ツールのサポートは限られているようですが、microblaze 用の Linux カーネルをコンパイルしたいユーザーに焦点を当てているようです。シンプルなベアメタル アプリケーションをコンパイルしたいだけです。
理想的には、私は次のようなことができるでしょう
最終的に microblaze 実行可能ファイルになります。
誰もこれを以前にやったことがありますか?誰か例を知っていますか?
arm - ARM システム プログラミングにおける __irq の役割は何ですか?
__irqは、ARM7(v4) アーキテクチャの割り込みサービス ルーチン関数を定義するために使用されることを理解しています。しかし、それは関数にどのような変更を加えますか?
ARMインフォメーションセンターによると:
__irq キーワードを使用すると、C または C++ 関数を割り込みルーチンとして使用できます。__irq は関数修飾子です。関数の型に影響します。
ARM コンパイラは、 __irq関数修飾子で定義されたルーチンにどのような特別な処理を提供しますか??