FC2カウンター FPGAの部屋 soc-lm32のその後10(u-bootのコンフィギュレーションの書き換え1)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

soc-lm32のその後10(u-bootのコンフィギュレーションの書き換え1)

さてさて、今回ビルドしたu-boot をそのまま動かそうとすると、LatticeからダウンロードしたMico32のUARTやTimerをsoc-lm32 のUARTやTimerコンポーネントと入れ替える必要がある。(ちなみに、LatticeからダウンロードしたMico32の中のUARTやTimerなどのコンポーネントはsoc-lm32 で使っているUARTやTimerなどと違っている)
ディフォルトのメモリマップは、、”Linux Port to LatticeMico32 System Reference Guide”の20ページを見ると以下のようになっているようだ。(Linux Port to LatticeMico32 System Reference Guideの20ページから転載)

U-Boot 1.2.0 (Oct 15 2007 - 12:00:00) [Theobroma Systems]
LatticeMico32 board configuration:
Device     | Base Address | Additional information
-----------+--------------+---------------------------------
CPU 0      |              | Frequency: 75000000 Hz
Flash 0    | 0x04000000   | Size: 33554432 (32 MB)
DDR SDRAM 0 | 0x08000000  | Size: 67108864 (64 MB)
Timer 0    | 0x80002000   |
Timer 1    | 0x80010000   |
Timer 2    | 0x80012000   |
UART 0     | 0x80000000   | Baud Rate: 115200
LEDs 0     | 0x80004000   |
7Segment 0 | 0x80006000   |
TriSpeedMAC 0 | 0x80008000 |
LM32 configuration options:
Hardware multiplier: enabled
Hardware divider: enabled
Hardware barrel-shifer: enabled
Sign-extension instructions: disabled
Cycle counter CSR: disabled
Instruction cache: enabled
Data cache: enabled
lm32mac version 0x10000 @
0x80008000lm32MAC#0
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
lm32#


これにしたがって、自分のsoc-lm32 のアドレスマップを変更する必要がある。
system.v の115行目あたりで下のようにアドレスマップをしているので、これを変更する。

//---------------------------------------------------------------------------
// Wishbone Interconnect
//---------------------------------------------------------------------------
wb_conbus_top #(
    .s0_addr_w ( 3 ),
    .s0_addr   ( 3'h4 ),        // ddr0
    .s1_addr_w ( 3 ),
    .s1_addr   ( 3'h5 ),        // flash0
    .s27_addr_w( 15 ),
    .s2_addr   ( 15'h0000 ),    // bram0 
    .s3_addr   ( 15'h7000 ),    // uart0
    .s4_addr   ( 15'h7001 ),    // timer0
    .s5_addr   ( 15'h7002 ),    // gpio0
    .s6_addr   ( 15'h7003 ),
    .s7_addr   ( 15'h7004 )


wb_conbus_top.v がWishBone の MasterデバイスとSlaveデバイスを接続するデバイスのようだ。このwb_conbus_top.v は一番上の31ビット目は無視するようだ。
でも、ここで問題が出てきた。前述したすでにビルドされたu-boot のアドレスマップを見ると、UART0が0x80000000 番地にアドレスマップされているが、これの最上位ビットを無視すると、0x00000000 番地にミラーが出てしまう。よって、BRAMと重なってしまうので、このままではだめだ。u-boot のアドレスマップを変える必要がありそうだ。
”soc-lm32のその後9(u-boot)”で検証したように、/lm32linux-20080206/u-boot/board/lattice/ecp250full の中を見ると、7つのファイルがある。
U-boot_build_2_081107.png

このうちのMSBconponents.cfg に搭載するデバイスの構成が書いてるんだと推測している。
U-boot_build_1_081107.png

TRIMODEMACは、MACはボード上にはあるがTRIMODEではないし、後でMACは後でドライバを書く必要があるだろうから、とりあえずコメントアウトする。7SEG-LEDもボード上にないのでこれもコメントアウト。GPIOを追加する。
U-boot_build_3_081107.png

問題はFLASHがLatticeMico32のドライバで使えるかどうかだけども、スパルタン3E スタータキットのパラレルFLASHはTE28F128J3D-75で、LatticeのボードのパラレルFLASHは MX29LV128MBTI-90Q違いは追々検証していくことにして、このままにしておくことにする。とりあえずFLASHは使わない事とする。

次に、アドレスマップが書いてあるのはhwsetup_pregenerated.h のようだ。
U-boot_build_4_081107.png

このアドレスマップを書き換えることにする。

(注)今やっていることは、当て推量に基づいて、いい加減にやっています。まったくこうなるという保障はありません。そうなりそうだけど、やってみようという思いでやっていますので、間違っている可能性が大いにあります。間違っていそうだったら、ご指摘いただけると本当にありがたいです。
  1. 2008年11月08日 05:59 |
  2. Spartan3E Starter Kit でマイコンを作る
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/946-2ec36dfd
この記事にトラックバックする(FC2ブログユーザー)