3

問題

ラズベリーパイでspi_slaveコードをコンパイルしようとしています。ネイティブのgccコンパイラを使用し、コンパイルはエラーなしで実行されます。

問題は、出力を実行しようとしたときです。

/home/pi/spi_slave#./build/output.elfセグメンテーション違反

/home/pi/spi_slave# ./build/kernel.img bash:./build/kernel.img:バイナリファイルを実行できません

cambridgeからarm-none-eabiコンパイラをダウンロードしようとしましたが、実行されません:/ home / pi / spi_slave#../arm-2008q3/bin/arm-none-eabi-gcc bash:../arm-2008q3/bin / arm-none-eabi-gcc:バイナリファイルを実行できません

ソースコード

コンパイルしようとしているコードは次のとおりです。http://tylernichols.me/wp-content/uploads/2012/11/raspberry_pi_bare_metal_spi_slave.zip

私たちが行った唯一の変更はmakefileにあり、ARMGNU varの前に#を追加しました

#ARMGNU = arm-none-eabi

環境

# uname -a
Linux raspberrypi 3.6.11+ #371 PREEMPT Thu Feb 7 16:31:35 GMT 2013 armv6l GNU/Linux

私は何が間違っているのですか?

私たちはグーグルとスタックオーバーフローで何時間も答えを見つけようとしましたが、成功しませんでした。:/

4

1 に答える 1

2

arm-none-eabiLinux以外のコンパイラです。ベアメタルアプリケーション用です。違いはCライブラリにあります。ただし、通常のコンパイルでgccはライブラリに密接にリンクされています。C

次に、コードがあります。Linux用には書かれていません。ベアメタルアプリケーション用に作成されています。Linuxを使用せずにRaspberry-Piブートローダー(berryboot?)からコードをロードして実行する必要があります。

ARM Linuxコンパイラを使用して、ベアメタルアプリケーションのコードを作成できます。ただし、 RaspberryPiを対象とするnewlibコンパイラを見つける方がおそらく簡単です。Webで検索するか、自分で作成してみてください。

参照:RaspberryPiおよびBare-metalgccのビルド方法gcc

于 2013-03-04T22:04:14.883 に答える