[Armadillo:03144] Re: CPU内部レジスタの設定値変更について

鶴田裕樹 email@hidden
2008年 7月 14日 (月) 20:11:59 JST


お世話になっております 鶴田です。

以下のようにソースを変更し、hermitのfrob peekで値の確認、
およびデジタルオシロで常時133MHzで出力されているのを確認できました。

設定例)
include/mx3/regmap.h
#define WCR                     0x60

src/target/armadillo5x0/board.c#init_weim
IO_WEIM(WORD, CSCR4U) = 0x00001400;
IO_WEIM(WORD, CSCR4L) = 0xc2c21511;
IO_WEIM(WORD, CSCR4A) = 0x00000030;
IO_WEIM(WORD, WCR)    = 0x00000004;


> 非同期モードで利用するのに、クロックの周波数が気になっている理由を教えて
> 頂けますか。

i.MX31 and i.MX31L Data Sheel:Advance Information Rev. 3.4, 10/2007
の43頁 Figure 28. Asynchronous Memory Timing Diagram for Read Access_WSC=1において、
各制御信号のバスタイミングパラメータがBCLKに対して規定されているように書かれていた為と
43頁 Table 33. WEIM Bus Timing Parameters において各パラメータの基準となっている"Clock"が
HCLKの事を言っているのか、BCLKの事を言っているのか。
また、それらのクロックの立ち上がり/立下りのいずれを基準としているのか疑問に感じた為、
確認の意味も含めて質問させていただきました。

>ERATTAに関して
試してみたところ、現状特に問題ないようなのでこのまま進めたいと思います。
何か問題が出た際はご連絡いたします。

以上ありがとうございました。

> マカーグです。
> 
> 鶴田裕樹 wrote:
> > Armadillo-500のCON17で接続する上で2点質問があります。
> > 
> > 1)CPU内部レジスタへのアクセス方法
> > 
> > 拡張バス(WEIM)上のメモリ(CS4の領域)へのアクセスタイミングを変更するため、
> > CPU内部レジスタ(0xB800_2040 〜 0xB800_2048)の設定値を変更したいのです
> > が、Armadillo上OSから、もしくはOSを起動せずに設定を変更する方法、
> > あるいはアセンブラ、C言語などでのサンプルソース/ツールがないでしょうか?
> 
> WEIMの設定はhermitで出来ます。
> 
> タイミング設定を試すには、hermitのfrob機能が便利だと思います。
> 
> hermit> frob
> hermit:frob> help
> ? help [<command name>]       : help on Hermit commands
> p peek [<addr>]               : word-size memory peek
> 8 peek8 [<addr>]              : 8-bit memory peek
>   peek16 [<addr>]             : 16-bit memory peek
> n peeknext                    : peek next address
> k poke <addr> <value>         : word-size memory poke
>   poke8 <addr> <value>        : 8-bit memory poke
>   poke16 <addr> <value>       : 16-bit memory poke
> q quit                        : quit current command loop
> 
> 例:
> hermit:frob> poke 0xb8002040 0x00004500
> hermit:frob> poke 0xb8002044 0x00000301
> hermit:frob> poke 0xb8002048 0x00000000
> 
> また、設定を固定するには、hermitソースの src/target/armadillo5x0/board.c
> の中にある init_weim() にCS4用の設定を追加するといいと思います。
> 
> > 2)WEIM非同期モードアクセス時のBCLK(バーストクロック)の周波数について
> > 
> > WEIM非同期モード、BCLK常時出力(SYNC='0',BCM='1')設定時はBCLKの周波数は
> > いくらになるでしょうか?
> > HCLK(AHBシステムクロック)と同じ133MHzとなるのか。
> 
> この設定は試したことがありせんが、i.MX31のマニュアル(MCIMX31RM)では、
> BCM='1'の時はBCDとBCSの設定が無視されてBCLKが最大の周波数になると書かれ
> ています。
> 
> "The BCM bit in the WEIM configuration register has priority over the
> BCD bits. If BCM = 1, the BCLK runs at full frequency."
> 
> なので、HCLKになるようですね。
> 
> 非同期モードで利用するのに、クロックの周波数が気になっている理由を教えて
> 頂けますか。
> 
> > またWEIMアクセス時のBCLKに関するERATTAが本設定時も影響するでしょうか?
> > 
> > 以下にERATTAを記載します。
> 
> SYNC='1'の時だけに該当すると書かれているので影響はないと思えますが、実際
> に試してみた方がいいと思います。
> 
> > ERATTA ID:TLSbo72605
> > Title: WEIM cannot operate with WEIM BCLK equal to AHB clock.
> > Release Date: 9/7/2006
> > Description:
> > When enabling the SYNC bit of the WEIM, the burst clock (BCLK)
> > frequency cannot be equal to the AHB (system) clock. This means that
> > for a maximum AHB frequency of 133 MHz, BCLK can be no greater than
> > 66 MHz.
> > Workaround:
> > When enabling the synchronous interface of the WEIM, the Burst Clock
> > Divider (BCD) bits must be set to one (divide-by-2) or greater.
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo




armadillo メーリングリストの案内