|
地板
楼主 |
发表于 2014-11-27 14:10:17
|
只看该作者
; a" T+ L0 j* e* D. E9 B1 m: x
多谢您的解答,还有些问题没搞明白
- z' A3 a' p* ^; c. ]+ O1.目前我在board_da850_evm.c中的da850_set_emif_clk_rate里打印出来sys0_clk3的寄存器为0x8002 也就是div3 = 76M, 可是在davinci_nand.c中的davinci_aemif_setup_timing初始化nand时序时设置时使用的时钟频率为aemif,而aemif在clk初始化的时候添加打印打印出来的时钟是114000000,这样的话EMIF是哪一个频率?
! K: k& D/ G5 Z3 d8 B8 @ aemif_clk = clk_get(NULL, "aemif");
0 r8 G( X/ D/ c! {) `5 \" A: {; m2 O if (IS_ERR(aemif_clk))! h; v6 L* u- R0 K0 l5 W
return PTR_ERR(aemif_clk);
6 b9 B' y8 n. W" C) S! M- [- z0 c9 c0 v7 d
clkrate = clk_get_rate(aemif_clk);4 t1 o! k1 B$ F
1 R* k1 ]6 q8 ?4 j" h
clkrate /= 1000; /* turn clock into kHz for ease of use */
) ?2 n' I0 c7 P2 u8 h) x0 `+ `; n
ta = aemif_calc_rate(t->ta, clkrate, TA_MAX);
. `8 n. z4 O6 C" ^( c8 F rhold = aemif_calc_rate(t->rhold, clkrate, RHOLD_MAX);
. R; [/ M' _0 }' l3 I. B rstrobe = aemif_calc_rate(t->rstrobe, clkrate, RSTROBE_MAX);' Z* ?" \7 |* n# D# A( D" v% V
rsetup = aemif_calc_rate(t->rsetup, clkrate, RSETUP_MAX);1 A4 T$ G! M5 d6 Y/ j) M/ w
whold = aemif_calc_rate(t->whold, clkrate, WHOLD_MAX);/ M6 i5 N: d6 B& o
wstrobe = aemif_calc_rate(t->wstrobe, clkrate, WSTROBE_MAX);1 s& U6 w1 D( c5 B0 E
wsetup = aemif_calc_rate(t->wsetup, clkrate, WSETUP_MAX);& H; h+ o* Z& E/ t0 A1 a
2.我的板子上接的16c554只连接了8根数据线,所以设置成8bit数据位宽,地址线接了A15---A10结合片选CS5做译码,A4---A2接到16C554的A2--A0, 在这种情况下不停的用内核定时器访问0x6600E000物理地址进行 io_remap后的虚拟地址,板子上cs5没有动作,地址线上只有A2-A0有动作,我们这样的硬件设计和软件配置有没有问题,是不是应该配置成16位数据位宽,计算CS5的物理地址是不是应该做一下地址移位和映射?
% S1 {* b* E" E/ v& h/ }! N5 o2 k0 A' w3 D1 n+ l
期待您的解答。7 k. o9 U5 ]$ Z% J# i- f
|
|