|
地板

楼主 |
发表于 2014-11-27 14:10:17
|
只看该作者
* R0 V4 A# q; o' J' v5 N% @
多谢您的解答,还有些问题没搞明白/ n1 A7 f% e: g0 x
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是哪一个频率?: N8 }4 }* f' l0 C% n, F8 h2 z
aemif_clk = clk_get(NULL, "aemif");5 q3 y0 t W. z- ^$ {. g
if (IS_ERR(aemif_clk))
2 P$ Z, ^0 s% A9 ~; m) R/ S return PTR_ERR(aemif_clk);7 ^1 y1 C6 t* J8 Y9 |& x
' F$ Y# F& ?1 i! F1 k+ e: A5 T clkrate = clk_get_rate(aemif_clk);, p5 I: S) }2 `
, N' C7 h( N0 ] clkrate /= 1000; /* turn clock into kHz for ease of use */, y1 N/ S/ n" p% j5 P# ]" Q! h
, R/ M! M. ?1 Y/ K% T( A; {
ta = aemif_calc_rate(t->ta, clkrate, TA_MAX);2 i$ J7 T& x) Q+ C2 W" A
rhold = aemif_calc_rate(t->rhold, clkrate, RHOLD_MAX);
3 r2 Z) T' T' e8 d4 K) P rstrobe = aemif_calc_rate(t->rstrobe, clkrate, RSTROBE_MAX);4 d% O, t( @/ O! e
rsetup = aemif_calc_rate(t->rsetup, clkrate, RSETUP_MAX);
% k7 f7 P6 B3 ^. T$ }- u) M { whold = aemif_calc_rate(t->whold, clkrate, WHOLD_MAX);! O- |% n9 O6 I% u: M7 w
wstrobe = aemif_calc_rate(t->wstrobe, clkrate, WSTROBE_MAX);6 n% p) X; v5 f2 S5 D& F% P0 t
wsetup = aemif_calc_rate(t->wsetup, clkrate, WSETUP_MAX);; k3 q7 Y3 }6 ?' e( H) K
2.我的板子上接的16c554只连接了8根数据线,所以设置成8bit数据位宽,地址线接了A15---A10结合片选CS5做译码,A4---A2接到16C554的A2--A0, 在这种情况下不停的用内核定时器访问0x6600E000物理地址进行 io_remap后的虚拟地址,板子上cs5没有动作,地址线上只有A2-A0有动作,我们这样的硬件设计和软件配置有没有问题,是不是应该配置成16位数据位宽,计算CS5的物理地址是不是应该做一下地址移位和映射?
) Q% Q% d1 l( P" F D; P: n' H, N9 i. N2 J2 A
期待您的解答。
* j. r4 l! S$ }: c |
|