|
地板

楼主 |
发表于 2014-11-27 14:10:17
|
只看该作者
4 J. J3 x$ b- @) I多谢您的解答,还有些问题没搞明白7 @: t* d) a6 H, O9 K9 c+ ^: N
1.目前我在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是哪一个频率?" y; ?+ |1 c2 E: i0 t) @/ x/ T
aemif_clk = clk_get(NULL, "aemif");
/ X p V6 q% C; Q3 N if (IS_ERR(aemif_clk))
3 C1 ]! v# {2 _& R" P d( c" w6 W return PTR_ERR(aemif_clk);6 `2 ]3 Q, C9 t' `/ J
/ z# A, z7 n; U t2 ?
clkrate = clk_get_rate(aemif_clk);1 g( n1 \9 D4 f0 [% P0 Y
; M; h, L# u' I* x0 i) S% U
clkrate /= 1000; /* turn clock into kHz for ease of use */3 h3 q% x0 M3 c4 }' X2 n! h
, r7 Z' i) H) y' h
ta = aemif_calc_rate(t->ta, clkrate, TA_MAX);
\2 J2 a5 h5 w3 h. w8 T8 B rhold = aemif_calc_rate(t->rhold, clkrate, RHOLD_MAX);
+ j3 F! T- H6 p3 m5 A2 x H, ` rstrobe = aemif_calc_rate(t->rstrobe, clkrate, RSTROBE_MAX);9 e1 f+ w+ _( W4 V; \+ R4 S: P
rsetup = aemif_calc_rate(t->rsetup, clkrate, RSETUP_MAX);+ t3 t. c& b+ k5 M6 ~6 j0 p+ g
whold = aemif_calc_rate(t->whold, clkrate, WHOLD_MAX);
" @- T2 ~( J( W2 Y wstrobe = aemif_calc_rate(t->wstrobe, clkrate, WSTROBE_MAX);* D) m$ F( W# I2 X2 j
wsetup = aemif_calc_rate(t->wsetup, clkrate, WSETUP_MAX);% T# a' F; L: s0 N8 u! p7 }
2.我的板子上接的16c554只连接了8根数据线,所以设置成8bit数据位宽,地址线接了A15---A10结合片选CS5做译码,A4---A2接到16C554的A2--A0, 在这种情况下不停的用内核定时器访问0x6600E000物理地址进行 io_remap后的虚拟地址,板子上cs5没有动作,地址线上只有A2-A0有动作,我们这样的硬件设计和软件配置有没有问题,是不是应该配置成16位数据位宽,计算CS5的物理地址是不是应该做一下地址移位和映射?) B% V( s3 l7 k e, O0 q7 q
1 a4 Z2 v y# }3 w
期待您的解答。
) m1 `9 i: M2 o8 q8 Q |
|