091005

|



CR85の来週の岡山に向けて整備は大体終了。ゼッケンも40に。40はいいな。ファ
イナルはドライで17:35で。6 速を0.96から0.92にして以来、筑波富士岡山でい
ろいろ試してきたけれど、結局0.96の時と同じじゃないとインフィールドがど
こもだめだ。


台風一過で、今迄になく絶好のコンディションで走れるのではないかと期待。 なんとしてでも体調を整えねば。
SH4A続き。SH4Aの32bitアドレス拡張モードを試した。R0P7785LC0011RLでは S2-5のDIPスイッチで32bitブートができる。
マニュアルではDDR2エリアは29bitモードで(0x08000000-0x0fffffff)、 32bitモードで(0x40000000-0x5fffffff)になるとなっている。しかしu-bootを 立ちあげると0x0800000をRAMとして使っていて、それでプログラムもロードし 実行できてしまう。ここのエリアは32bitモード時はUSBエリアとSDエリアなのに。
u-bootのソースを見るとu-boot/board/sh7785lcr/lowlevel_init.SでPASCRを見 て32bitモードならUSBとSDエリアのマッピングを変更しているけれど、それ以 外の部分ではまったく32bitモードへの対応がない。
それでも動いているということは、マニュアルとハードウェアの仕様が違うの だろう。
32bitモードでブートした後のPMBの様子を見てみました。
=> go 0x89000000
## Starting application at 0x89000000 ...
stack_start: 0x89010000
RAM data: 0x89006234-0x890066c0 1164byte
bss: 0x890066c0-0x8900a31c 15452byte
Privilege-mode, bank 1, Exception disabled, FPU enabled, IMASK=0xf
bss memory check passed.
--------------------PMB--------------------
paddr 32bit mode. これはPASCRの31ビットを見ています。
16エントリのPMBを全てダンプ
VPN:80000000 (V) PPN:0 (V) 512MB, bufferd write, cacheable, write-thru, 
VPN:a0000000 (V) PPN:0 (V) 512MB, bufferd write, uncacheable, write-back, 
P0,P1にあたる部分があらかじめ登録されている。(これはCPUがやってくれる)
P0相当部分がデフォルトではライトスルーなのに注意。32bitモードになると
CCR.WTは無効になり、キャッシュの設定はPMBのエントリで設定する。
ここでライトスルーをライトバックに変更してみた。

VPN:8f000000 (-) PPN:35000000 (-) 512MB, bufferd write, cacheable, write-back, 
VPN:aa000000 (-) PPN:9000000 (-) 16MB, unbufferd write, uncacheable, write-thru, 
VPN:ae000000 (-) PPN:9d000000 (-) 64MB, bufferd write, uncacheable, write-back, 
VPN:bf000000 (-) PPN:1000000 (-) 64MB, unbufferd write, cacheable, write-thru, 
VPN:a7000000 (-) PPN:31000000 (-) 64MB, unbufferd write, uncacheable, write-back, 
VPN:8e000000 (-) PPN:2b000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:aa000000 (-) PPN:12000000 (-) 64MB, unbufferd write, uncacheable, write-back, 
VPN:8e000000 (-) PPN:11000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:8f000000 (-) PPN:11000000 (-) 64MB, unbufferd write, cacheable, write-thru, 
VPN:8b000000 (-) PPN:b5000000 (-) 64MB, bufferd write, uncacheable, write-thru, 
VPN:a7000000 (-) PPN:75000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:9f000000 (-) PPN:32000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:85000000 (-) PPN:d1000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:8f000000 (-) PPN:11000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
cache CCR=101
md_thread_create: [2]:uart recv pc=89004610 sp=89009de8 stack=1024byte
thread_start: [2]
md_thread_create: [3]:uart send pc=890045a0 sp=8900a2c0 stack=1024byte
thread_start: [3]
md_thread_create: [4]:test pc=89001788 sp=8900911c stack=1024byte
thread_start: [4]
test_thread:1234abcd
INTC: fffffff6 1f000000
hello 0
test4> 
test4> test
--------------------PMB--------------------
paddr 32bit mode.
VPN:80000000 (V) PPN:0 (V) 512MB, bufferd write, cacheable, write-back, 
ライトバックに変更されている。キャッシュテストしてみて動作も確認しました。
VPN:a0000000 (V) PPN:0 (V) 512MB, bufferd write, uncacheable, write-back, 
VPN:ad000000 (-) PPN:35000000 (-) 512MB, bufferd write, cacheable, write-back, 
VPN:a8000000 (-) PPN:21000000 (-) 16MB, unbufferd write, uncacheable, write-thru, 
VPN:ae000000 (-) PPN:9d000000 (-) 64MB, bufferd write, uncacheable, write-back, 
VPN:bd000000 (-) PPN:1000000 (-) 512MB, bufferd write, cacheable, write-thru, 
VPN:a5000000 (-) PPN:33000000 (-) 64MB, unbufferd write, uncacheable, write-back, 
VPN:8c000000 (-) PPN:2b000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:a8000000 (-) PPN:52000000 (-) 64MB, unbufferd write, cacheable, write-back, 
VPN:8c000000 (-) PPN:11000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:8d000000 (-) PPN:37000000 (-) 64MB, unbufferd write, cacheable, write-thru, 
VPN:89000000 (-) PPN:bd000000 (-) 64MB, bufferd write, uncacheable, write-thru, 
VPN:a7000000 (-) PPN:75000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:9d000000 (-) PPN:3e000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:85000000 (-) PPN:d1000000 (-) 16MB, unbufferd write, uncacheable, write-thru, 
VPN:8f000000 (-) PPN:11000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
--------------------ITLB--------------------
VPN:a0000000 ASID:0 (V) PPN:0 (V) PMB 512MB U uncacheable, shared
VPN:80000000 ASID:0 (V) PPN:0 (V) PMB 512MB U cacheable, shared
VPN:80000000 ASID:0 (-) PPN:0 (-) PMB 512MB U cacheable, shared
VPN:a0000000 ASID:0 (-) PPN:0 (-) PMB 512MB U uncacheable, shared
ITLBにもP0,P1相当のPMBが乗っている。

これをそのまま29bitモードで動かすと、
test4> test
--------------------PMB--------------------
paddr 29bit mode.これはPASCRの31ビットを見ています。
Buffered write setting: |--------| x:unbuffered write.
VPN:a1000000 (-) PPN:10000000 (-) 512MB, unbufferd write, cacheable, write-back, 
VPN:8d000000 (-) PPN:0 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:af000000 (-) PPN:35000000 (-) 512MB, bufferd write, cacheable, write-back, 
VPN:aa000000 (-) PPN:21000000 (-) 16MB, unbufferd write, uncacheable, write-thru, 
VPN:ae000000 (-) PPN:9d000000 (-) 64MB, bufferd write, uncacheable, write-back, 
VPN:bf000000 (-) PPN:1000000 (-) 512MB, bufferd write, cacheable, write-thru, 
VPN:a7000000 (-) PPN:33000000 (-) 64MB, unbufferd write, uncacheable, write-back, 
VPN:8e000000 (-) PPN:2b000000 (-) 64MB, bufferd write, uncacheable, write-thru, 
VPN:8a000000 (-) PPN:52000000 (-) 64MB, unbufferd write, uncacheable, write-back, 
VPN:8e000000 (-) PPN:11000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:8f000000 (-) PPN:11000000 (-) 64MB, unbufferd write, cacheable, write-thru, 
VPN:8b000000 (-) PPN:bd000000 (-) 64MB, bufferd write, uncacheable, write-thru, 
VPN:a7000000 (-) PPN:75000000 (-) 64MB, bufferd write, uncacheable, write-thru, 
VPN:9f000000 (-) PPN:3e000000 (-) 64MB, unbufferd write, uncacheable, write-thru, 
VPN:85000000 (-) PPN:d1000000 (-) 16MB, unbufferd write, uncacheable, write-thru, 
VPN:8f000000 (-) PPN:11000000 (-) 64MB, bufferd write, uncacheable, write-thru, 
--------------------ITLB--------------------
VPN:90e22c00 ASID:33 (-) PPN:d8aef800 (-) PMB 512MB U uncacheable, shared
VPN:d2a60800 ASID:b1 (-) PPN:e06df400 (-) 64K U cacheable, shared
VPN:acb79400 ASID:21 (-) PPN:d7be2000 (-) PMB 128MB U uncacheable, shared
VPN:e086ac00 ASID:25 (-) PPN:e22f6800 (-) 1K U uncacheable, shared

いろいろいじっていて気付いたのだけど、ライトスルーの時はライトアロケー
トじゃない(ライトアロケート:書き込み時の該当ラインをキャッシュに乗せる
動作。ライトバックでライトアロケート、ライトスルーはライトアロケートし
ないのが普通)。忘れてた。