問題タブ [newlib]

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 投票する
1 に答える
1874 参照

c - ARM Cortex M-3 GCC/newlib の初期化

私は ARM Cortex-M マイクロコントローラーの世界を掘り下げ始めたばかりで、既存の開発ボードや使いやすい IDE を使用するのではなく、これらのベア メタルに直接入ることにしました。私は STM32F103 をプロトタイピング ボードにはんだ付けして、Launchpad から gcc-arm-embedded Toolchain を使って動作させようとしています。リンカ スクリプトなどに関するマニュアルを読むのに苦労した後、私は独自のリンカ スクリプトとスタートアップ コードを作成しました。基本的には、.data セクションを ROM から RAM にコピーし、.bss をゼロにして SystemInit() を呼び出します。 ST の標準周辺機器ライブラリから、基本的な uC 初期化を行い、最後に main() を呼び出します。
さて、Cortex M-3 開発について見つけたいくつかのチュートリアルから、リンカに -nostartfiles フラグを使用していることがわかりましたが、今疑問に思っています: その場合、自分で newlib を初期化する必要がありますか? それとも、GCC/newlib のデフォルトの開始ファイルを使用して、-nostartfiles をドロップする必要がありますか? しかし、その場合でも、.data を RAM にコピーしてベクター テーブルを設定するなどの初期化を行う必要があり、これにはカスタム リンカー スクリプトが必要です。では、どこでそれを行うのですか?
そして、私は C++ について考え始めたくありません!

では、そのような Cortex-M3 ベースのマイクロコントローラーとその libc を初期化するための推奨される方法は何ですか (周辺機器は数えません)?

前もって感謝します!

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

c - Newlib printf 遅延

uart ポートにリダイレクトされる newlib の printf 関数に奇妙な問題があります。

この問題は、例を使ってうまく説明できます。

プログラムを実行すると、次のprintfに到達/呼び出されるまで「hi」は表示されません。つまり、'hello' が出力されることになっている場合、'hi' が出力されます.. この 1 呼び出しの遅延は常に実行されます。最後のprintfはまったく印刷されません。

私のUARTコードはどこですか:

これに対する解決策は何ですか?

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

c - __init_array には何が入りますか?

GCC でコンパイルされた Cortex-M3 プロジェクトがあります。startup_LPC177x_8x.s コードは、初期化されたデータをフラッシュから RAM にコピーし、bssを初期化し、クロック初期化を呼び出します SystemInit。関数を呼び出す前に_main、コードも関数を呼び出します_libc_init_array

__libc_init_array関数は、 で定義されているすべての初期化ルーチンを__preinit_array呼び出し、_init関数を呼び出し、 で定義されているすべてのルーチンを呼び出し__init_arrayます。

__preinit_arrayGDB を使用すると、が空 (start==end) であり、2 番目の呼び出しが__init_array_start[i] ()クラッシュすることがわかりました。

この配列に含まれる関数がわかりません。リンカー スクリプトにより、すべての.init.array.*セクションがここに配置されます。.oしかし、対応するファイルとソース ファイルを見つけるにはどうすればよいでしょうか。

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

linux - msp430-elf ターゲット用の gcc のビルド

msp430 用の gcc-4.9 をビルドしようとしています。の最新バージョンを既にビルドしており、基本的な構成でbinutilsビルドを試みました。gcc-4.9

configure --target=msp430-elf --enable-languages=c,c++ --with-newlib=yes

ただし、問題は、gcc が自分のマシン用にビルドされ、新しいコンパイラでターゲットのx86-unknown-linuxビルドが開始されたと思いますが、既に gcc-4.8 がインストールされており、既にインストールされているターゲットが必要なだけです。msp430msp430-elf4.8

注:msp430ターゲットは でのみ使用できます。すでにインストールされているので、ホスト マシン用ではなく4.94.9 をビルドしたいだけです。msp430

まず、ビルドが失敗しました。次に、成功したとしても、インストールしたくありません。また、これを行うのではないかとx86心配make installしています。

のドキュメントconfigureはかなり曖昧で、助けていただければ幸いです。

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

linux-kernel - gcc ツールチェーンの構築にカーネルヘッダーはどのように関与していますか?

カーネルヘッダーは、プログラムがカーネルと対話する方法を指定するため、標準ライブラリの構築に関与する必要があることを知りました。それとも? arm-elf ツールチェーン ( http://wiki.ubuntuusers.de/GNU_ARM-Toolchain )を構築する方法を非常によく説明するチュートリアルを読みました。

私を混乱させているのは、このプロセスにカーネルヘッダーが関与していないことです。彼らはgccを設定します

とNewlib

彼らはnewlibからのみヘッダーを取得しているように思えます(glibcの代わりにnewlibを使用しています)。このディレクトリ内のファイルは、非常に汎用的に見えます。Linux の「カーネル バージョン」がこのプロセスのどこかに表示されることを期待していますが、そうではありません。Linux ABI は、カーネル バージョンからカーネル バージョンに変更できると考えました。カーネル (ヘッダー) と gcc ツールチェーン間の「接続」はどのようになっていますか?

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

c - newlib を移植するにはどうすればよいですか?

独自のカーネルを作成したいのですが、クロスコンパイラ用の newlib の移植に行き詰まっています。

  1. どのバージョンのnewlibをダウンロードすればよいですか?

  2. システム コールスタブはどこに置くのですか? 最小限の実装で十分ですか?後でシステム コールを編集することにした場合、newlib を再構築する必要がありますか?

  3. 私のカーネルは割り込み 0x80 (128d) ですべてのシステム コールを公開するので、必要なことを行うために各スタブにインライン アセンブリを少し入れるだけで済みました。カーネルに関連してそれらをどのように実装するかはあなた次第です。

どうすればいいですか?

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

linux - glibc は Cygwin でサポートされていません

Cygwin FAQ には、「glibc はどこにありますか?」に関する次の情報があります。: Cygwin は glibc を提供していません。代わりに、同じ機能の多く (すべてではない) を提供する newlib を使用します。glibc を Cygwin に移植するのは難しいでしょう。

私は驚いて、以前に使用していたリリース パッケージをチェックアウトしました。リポジトリを確認したところ、glibc は実際にはバージョン 2.10 まで cygwin の一部だったようです。glibc の後続バージョンの移植の難しさについて誰か教えてもらえますか?