おせわになります。いっとうです。
APRZA0AとLCD-KIT-B01の組み合わせで、アメリカサイトのBSPv1.3にて動作させようとしています。
buildrootの先のアドバイスのお陰でU-bootは動くようになりましたが、kernelの方が手こずっております。
APRZA0AのBSPはかなり古いため(linux3.8.13)、まずはここにあるboard-rskrza1.cとBSPv1.3(linux3.14)のboard-rskrza1.cの差分を
把握しようとしていますが、前者は446行、後者は2311行とかなり増えていて、何が変わったのか把握出来ず困っています。
まずはlogin画面まで行きたいと思っているのですが、1ヶ月やってみたもののStarting kernel …で止まったままでお手上げになりました。
このバージョン間の履歴みたいなものを調べる方法は無いものでしょうか。https://github.com/renesas-rz を見ても、linux3.14以前のデータを見つけることが出来ません。
> 結果としてU-bootは何も表示されなくなってしまいました。> U-bootが全く動かなくなって、手も足もでなくなっています。
最初に申し上げた通り、「移植については、最初は、RZ/A1 Linux BSP Porting Guide などを参考にして、(3) の BSP を APRZA0A に新規に移植するつもりで作業された方が速いかもしれません。」です。
まず最初に、(u-boot のプロンプトが出るまでは無理でも) シリアルコンソールに何か出るようにしましょう。rskrza1.c 相当のファイルのシリアルコンソールの兼用端子設定は、出来ているようですから、後は、
include/configs/rskrza1.h 相当のファイル
の修正が出来ていないのでしょう。BSP Porting Guide の
「6. u-boot: Serial Console Port Select」
を読んで修正してください。
なお、上のコードを少し見ただけですが、これ以前のいっとうさんの書き込みを参照すると、
> 旧:at24 0-0050: 128 byte 24c01 EEPROM, writable, 1 bytes/write> 新:at24 3-0050: 2048 byte at24 EEPROM, writable, 16 bytes/write
となっていますから、AP-RZA-0A で使用している I2C のチャネルは、0だと推測するのですが、上のコードでは、チャネル3の兼用端子を初期化しています。間違えていませんか? また、
> m25p80 spi5.0: found n25q128a13, expected s25fl512s> m25p80 spi5.0: n25q128a13 (16384 Kbytes)
となっていますから、シリフラは、N25Q128A13 だと推測するのですが、上のコードでは、
> Micron N25Q512Aの関数をコメントアウト、
していますが、これも、BSP Porting Guide の
「8.1 Add Support for your SPI Flash」
を参照して、適切に修正してください。それ以外に、(以降、原文の誤りを訂正)
などの問題が散見/推測されます。Alpha Project さんが移植された u-boot や Linux kernel のソースコードと RZ/A1 Linux BSP Porting Guide を参照して、適切に修正してください。
> pcが0x0800800cということで、起動早々にこけているということでしょうか。
メッセージを見る限り、u-boot が Linux を起動した直後(未だ Linux が例外を処理する準備が出来る前) に例外を起こし、u-boot の例外ルーチンが呼び出されているように見えます。
以前のカーネルは、どうされたのですか?
> 先の実行結果ですが、カーネルとデバイスファイルのアドレスが逆になっていました。
新旧の実行結果を比較して、古いカーネルと間違ったデバイスツリーをロードして実行した、と理解しました。
> 旧BSPで動作したkernelとユーザランドは有りますので、現行U-bootを使って起動させようとしたところ、> ロードするアドレスが0c000000-0x0c8000000の場合、0d000000-0d800000の場合共に、starting kernelで> 止まってしまいます。
ロードするアドレスが 0x0c000000-0x0c800000 の場合は、以前にご説明した通り、カーネルをロードした領域とカーネルの実行領域が、一部、オーバラップしますから、正常に動作しません。
ロードするアドレスが 0x0d000000-0x0d800000 の場合は、bootargs に earlyprintk が指定されていますから、通常、何らかの表示があります。以前にご説明した通り、まず、earlyprintk を有効にしてみてください。
> これはU-bootのPIN初期設定が上手く出来ていないということでしょうか。
ご質問が解りません。u-boot の端子設定が (完璧ではないにせよ、それなりに)出来ているから、上のように u-boot が動いているのだと思いますが...
> 旧U-bootと旧kernel(earlyprintk有り)は動き、新U-bootと旧kernel(earlyprintk有り)はStarting kernelで止まって> 何も表示されませんでした。 (中略)> U-bootに問題が有ると考えたのですが、間違っているでしょうか。
新旧が自由に入れ替えて組み合わせられる前提での経験則のようですが、前提が正しいことを確認しましたか?u-boot とカーネルの間にもインタフェースがあります。単にジャンプすれば良いという訳ではありません。
確認ですが、いっとうさんは、3.14 のカーネルを最初にコンフィギュレーションする際、3.8 のカーネルのコンフィギュレーションファイルを使用しませんでしたか?
また、7/3のいっとうさんの書き込みですが、
> なんとかU-bootの起動までは復帰することが出来ました。> LowLevelDebugも有効になって、Starting kernel以降に以下が表示されるようになりました。> > I2C: ready> DRAM: 10 MiB> Using default environment (中略)> r7 : 00000000 r6 : 08008000 r5 : 209a61fc r4 : 00000000> r3 : 00001dd1 r2 : 208e7000 r1 : 00000dd1 r0 : 00000dd1> Flags: nZCv IRQs off FIQs off Mode SVC_32> Resetting CPU ...> > resetting ...
Starting kernel 以降に表示されているメッセージは、全て u-boot のコードが出しています。ですから、earlyprintk が有効になっているかは不明です。
同じ日の私の書き込みで
> 以前のカーネルは、どうされたのですか?
これは、5/22 のいっとうさんの書き込みに出てくる 3.14 のカーネルです。途中で "bootconsole [earlycon0] disabled" と表示してそのままになるようですがそれでOKです(その後、UART の端子設定を見直しているなら更にOK)。そのカーネルと新 u-boot を組み合わせて実行したログを見せてください。ログには、u-boot での操作も含めたフルのログをください。