ARMboot (Uboot および PPCboot と非常によく似ています)に基づくブートローダーを含む組み込みハードウェア システムがあります。
このブートローダは通常、フラッシュから uClinux イメージをロードする役割を果たします。ただし、現在、このブートローダーを使用して、リンクされたライブラリを必要としないスタンドアロンの helloworld アプリケーションを実行しようとしています。実際にwhile(1){}は、メイン関数のコードのみが含まれています。
私の問題は、スタンドアロンの適切にフォーマットされたバイナリをビルドするために使用すべき GCC 設定が見つからないことです。
私は次のビルドコマンドを使用します:
cr16-elf-gcc -o helloworld helloworld.c -nostdlib
これにより、警告メッセージが生成されます:
警告: エントリ シンボル _start が見つかりません。デフォルトは 00000004
その後、ブートローダー内で、生成されたアプリケーションをアップロードし、次のアドレスで開始します。
tftpboot 0xa00000 helloworld
go 0xa00004
しかし、それは機能しません:(システムが再起動します。
通常、ハングするはずです( のためwhile(1))。