[Armadillo:06508] Re: Armadillo-300の拡張バス(CON12)について
Masahiro Hanada
email@hidden
2011年 1月 11日 (火) 21:17:28 JST
花田です。
At 11 Jan 2011 20:54:53 +0900 TFC 小林 wrote:
> Armadillo-300の拡張バスの速度を変更したく、
> マニュアルにCPU(NS9750)内のStatic Memory Extended Wait Register(0xA070 0080
> 番地)を変更と、
> あるので変更したいのですが、どうやって変更をしたらいいのかわかりません。
このレジスタはカーネル側では設定していません。
Hermit-atソースのsrc/target/armadillo3x0/boot.Sの中で
mov r2, #0xa
str r2, [r0, #NS_MEM_STATIC_EXTENDED_WAIT]
としているところの値を、そのまま使用しています。
変更自体が簡単なのは、ここを書き換えてブートローダをmakeし直すことです。
ただ、ブートローダはあまり安易に書き換えたくないと思いますので、
カーネル側でやる方法でももちろん構いません。
この場合は初期化に近いところのどこかに、
新たにレジスタ書き換えのコードを追加するのが良いと思います。
拡張バスを扱うドライバを新たに作成するなら、この初期化の最初に
writel(0xa, NS_MEM_STAT_EXT_WAIT);
のような形で書くことになるでしょう。
(0xaは任意の値、NS_MEM_STAT_EXT_WAITはカーネルソースの
include/asm-arm/arch-ns9750/ns9750_mem.hに定義されています)
レジスタ詳細は「NS9750B-A1 Hardware Reference」などを参照してください。
http://www.digi.com/products/embeddedsolutions/ns9750.jsp?tab=productdocs&pid=2626#docs
> また、他にもCPU(NS9750)の動作モードを変更するにあたり、
> レジスタを変更するにはどうやればいいのか教えてください。
カーネルソースのarch/arm/mach-ns9750の下にあるirq.cやpci.cの、
writelしている箇所が参考になると思います。
armadillo メーリングリストの案内