問題タブ [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 投票する
2 に答える
1283 参照

gcc - UART に出力しようとすると ARM7 printf がハングする

さまざまな印刷コマンドに問題があります。
printf() を呼び出そうとするたびに、システムがハングするか、リセットされることがあります。
UART が動作しており、UART_PutChar() を使用してコンソールに正常に出力できます。
fprintf は単純な文字列を印刷するだけの単純なケースで機能しますfprintf(stdout, "test\n");
が、フォーマットされた文字列はシステムをfprintf(stdout, "test %d\n", 1);
ハングさせます .data セクションからデータを印刷しようとしているときにもハングが発生します

改行を印刷するとprintfが機能しますprintf("\n");
printfは、次のような場合にのみ 改行を印刷します

場合によっては、fprintf が失敗すると、EOF が返されます (今は覚えていないので、関連性があれば明日提供します)
(f)printf は putchar を呼び出しているようで、UART に再ターゲットしました。不思議なことに、それは newlib-nano によって提供される呼び出しまたはルーチン
であるべきだと思います(そして printf はそれらを呼び出していません)。 IDE として、EmBitz とそれが提供するツールチェーン (arm-none-eabi) を使用しています。私が使用しているCPUはat91sam7x128です。JTAG を使用してプログラムをデバッグできないため、デバッグには UART のみを使用する必要があります。_write_write_r

UPDATE スターター スクリプト: SAM7.s

リンカー スクリプト

更新 2 syscall の私の迅速で汚い再実装。

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

gcc - インターフェイス ライブラリの複数の実装を使用する場合の CMake リンクの順序付け

インターフェイス ライブラリで構成されるレイヤーを含むプロジェクトがあります。

これらのインターフェイス ライブラリは、アプリケーションのさまざまな環境に適合するように、数回実装されます。

インターフェイス ライブラリを利用する、アプリケーションに依存しないライブラリもあります。

最後に、アプリケーションは、使用されているインターフェイス ライブラリ レイヤーの実装を定義します。

幸いなことに、合成リンク コマンドの後にIAリストされている限り、これは問題ありません。FooBar

ただし、I の特定の実装では、アプリケーションに依存しないライブラリを再度使用します。これらの環境では、リンク コマンド ラインは次のようになります。

あるべきなのに

Foo/コンパイル中Barに依存する明示的な依存関係が記述されていないため、これは理にかなっています。IAExeA

target_link_libraries単純なケースでは、リンク コマンド ラインが呼び出しと同じ順序になるのがデフォルトであるため、幸運です。

gcc-arm-none-eabi ク​​ロスコンパイラを使用しています。これが私が試したことです:

  • LINK_INTERFACE_MULTIPLICITY

    動作しないようです。生成されたコマンド ラインは、数値が高くても同じです。

  • set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--start-group")

    リンクは成功しますが、プログラムはターゲット ハードウェアで正しく実行されません。デバッガーを接続してリセットするだけで実行されます。奇妙な振る舞い。

    の代わりにFoo/Barを明示的にリンクすると、コマンド ラインがになり、すべて正常に動作します。しかし、私はこれを一般的に行うことはできません.IA--start-groupFoo Bar IA Foo BarExeB


  • ExeA のコンパイル中に Foo / Bar が一時的に IA に依存し、ExeB のコンパイル中に一時的に IB に依存するように定義する方法はありますか?
  • 上記のような構造のプロジェクトを処理する方法について、別のアプローチはありますか?
0 投票する
0 に答える
197 参照

android - ビルド済みの ARM バイナリ (静的ライブラリ) を再ターゲットできますか?

ARM Cortex-M0+ (arm-none-eabi) 上で直接実行するようにビルドされたスタティック ライブラリ (.a) があります。Android(arm-linux-androideabi)を実行しているCortex-A7でライブラリを使用できるように、それまたは私のツールチェーンを何らかの方法で変更することは可能ですか? ビルド元のソースにアクセスできません。

ライブラリは、ハードウェア ペリフェラルと対話しません。もともとは Freescale ARM コンパイラでビルドされていました。私はgccを使用しています。

リンクしようとしたら出てきた

ライブラリ内のオブジェクト ファイルごとに数回繰り返します。

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

eclipse - gnu arm eclipse のプロジェクトに既存の *.bin ファイルを追加する

ブートローダーとアプリケーションの 2 つの個別のプロジェクトがあります。

ブートローダー プロジェクトのビルド中に、Eclipse のビルド後の手順に次の行を追加しました: arm-none-eabi-objcopy -S -O binary "${ProjName}.elf" "${ProjName}.bin", so * .bin ファイルが作成されました。

ここで、アプリケーション プロジェクトで、この *.bin を指定したアドレスに追加して、1 つの *.hex/*elf ファイルを生成したいと考えています。

この目的で arm-none-eabi-objcopy を使用できますか? または、リンク中にブートローダー プロジェクトの既存の *.bin ファイルとアプリケーション プロジェクトの *.o ファイルを結合できるリンカー コマンドはありますか?

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

c++ - scons エラー "sh: 1: arm-none-eabi-gcc: 見つかりません"

私のプロジェクトでは、Scons と Makefile の両方を使用してビルドしています。Makefileを使用するとうまくいきますが、Sconsを使用するとエラーが発生しました

"arm-none-eabi-gcc -g -mthumb -mlittle-endian -mcpu=cortex-m4 -mcpu=cortex-m4 -Wl,--start-group -lm -lc -Wl,--end-group -Wl ,--gc-sections -Wl,-Map,main.map -Tstm32_flash.ld -Wl,--entry=Reset_Handler -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -I/home/minhtan/Downloads/STM32F4-Discovery_FW_V1.1.0/Utilities/STM32F4- Discovery -I/home/minhtan/Downloads/STM32F4-Discovery_FW_V1.1.0/Libraries/CMSIS/Include -I/home/minhtan/Downloads/STM32F4-Discovery_FW_V1.1.0/Libraries/CMSIS/ST/STM32F4xx/Include -I/home/ minhtan/Downloads/STM32F4-Discovery_FW_V1.1.0/Libraries/STM32F4xx_StdPeriph_Driver/inc "-I/home/minhtan/Downloads/led(make file moi)" main.c -c -o main.o
sh: 1: arm-none- eabi-gcc:
scons が見つかりません: [main.o] エラー 127
scons: エラーのためビルドが終了しました。"

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

c - newlib の malloc() : 1 回の大きな失敗の割り当て後にメモリを浪費しますか?

私は STM32F7 用の組み込みソフトウェアを作成しており、私の libc は newlib-2.4.0.20160527 です。

私は次のように実装_sbrk()しました:

次に、次のことを行うと:

すべて正常に動作します (つまり、malloc は非ゼロを 2 回返します)。

しかし、次のことを行うと(テスト目的で):

すべてmalloc()が失敗しますmalloc(0)(つまり、__BKPT()is never reached )。そのため、実際にはヒープに割り当てられたメモリはなく(何も取得できなかったmem != 0ので、何もできませんfree())、使用可能なメモリもありません。

malloc()私は毎回失敗し、毎回sz > 0x40000成功することを期待していました(それぞれの後に正常に動作するとsz <= 0x40000仮定します)。free()malloc()

私は何かを見逃していましたか、それともこれは newlib のバグまたは意図された動作ですか?

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

terminal - Mac での STM320f の arm-none-eabi-as エラー

ターミナルで、アセンブリ コードをオブジェクト コードに変換しようとしています

アセンブラ メッセージ:

エラー: 読み取り用に main.o を開けません: そのようなファイルまたはディレクトリはありません

そして、私が操作していたそのディレクトリにある sample.s を削除します。