4

おそらく腕のツールチェーンに問題がありますが、他に何か間違っている可能性があります。Samsung s3c2440 ARM9 uCを使用して中国製の開発ボードqq2440を使用しています。ネイティブ gcc(4.3.3) で Ubuntu x86 を使用しており、バージョン arm-unknown-linux-ulibc-gcc (crosstool-NG-1.3.2) 4.3.2 をクロスコンパイルしています。

http://blog.leshak.ru/english/pages/how-to-install-u-boot-linux-2629-rootfsjffs2-busybox-1132-into-nand-qq2440/のチュートリアルに従い、 Leshakのカーネル を使用しましたそのボードのパッチ。問題は、彼のバイナリは完全に機能し、私のバイナリは機能しないことです...

RS232 (シリアル ポート) 経由でボードと通信し、ターゲット Linux でシリアル ターミナルを構成しています。Leshakのuboot イメージを使用します。カーネルを構成するには、次のコマンド ラインを使用します。

qq2440> setenv bootargs 'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 rw console=ttySAC0,115200'

ターゲットには、 Leshakによって作成されたパッチを適用したバニラ Linux ソース バージョン 2.6.29 を使用します。Linux は主流の製品ではないため、これが Linux によって公式にサポートされるとは正直信じていません。

カーネル イメージが起動し始めますが、帯域幅 (または CPU 周波数) が非標準値に変更される可能性があります (すべての標準値を既に試しています)。カーネルをメモリにロードすることを示すドットの代わりに、代わりにゴミしかありません。残念ながら、ネットワーク インターフェイスもファイル システムも起動しないため、起動プロセスが終了しない可能性があります。そのため、途中でパニックになることがわかりました。

次に何をすべきか?

ありがとうございます。それでは、お元気で、

クリス

4

3 に答える 3

2

ここで起こっている可能性のあるさまざまなことがたくさんあります。

シリアルポートについて話しているようで、制御が uboot からカーネルに渡されると、ガベージが発生しているように見えます。私はそれを正しく理解していますか?

カーネルコマンドラインでシリアルコンソールのボーレート、パリティなどを指定することを検討してください。

ああ、IIRC さん、ARM Linux ツリーには、シリアル コンソールの問題をデバッグするのに役立つかもしれない「early_printk」というものがありました。(ただし、注意しておきましょう。これに対処してから数年が経過しているため、記憶があいまいです。)

メモリ アドレス レイアウト (すべてのさまざまなデバイスの場所) がボードにあるものと一致することを再確認してください。(これはおそらく問題ではないと思いますが、完全を期すために言及したかったのです。)

あなたは正しく動作するバイナリカーネルを持っていると言います。そのカーネルのカーネル構成を、カーネルの構築に使用している構成と比較します。すべての違い、特に ARM に固有の違いを調査します。

ツールチェーンのエンディアンとボードが期待しているものを再確認することをお勧めします。 一部の ARM / XScale プロセッサは、ソフトウェアでビッグ エンディアンまたはリトル エンディアンに構成できるため、再確認する価値があるかもしれません。

于 2009-08-19T02:25:31.773 に答える
0

picocom から --send-cmd を省略したときに、ある時点で同様の問題が発生しました。これは、mini2440 とのシリアル uBoot 通信のために picocom に発行するコマンドです。

picocom -b 115200 /dev/ttyS0 --send-cmd "sx -vv"

于 2009-09-25T04:50:55.057 に答える