|
地板

楼主 |
发表于 2014-11-27 14:10:17
|
只看该作者
3 B3 S( d: W% }3 Y: C多谢您的解答,还有些问题没搞明白" C1 J2 K) k3 T- T5 E/ ^
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是哪一个频率?
0 e: j4 i" ? B aemif_clk = clk_get(NULL, "aemif");
, k7 M9 g; D! V4 f" K if (IS_ERR(aemif_clk)), R0 S8 M# F+ V i
return PTR_ERR(aemif_clk);! m- M) B4 y0 O' u2 B/ |
, v4 P0 A' V" \' C1 Y0 @$ w
clkrate = clk_get_rate(aemif_clk);
- G, p b% ]' `1 O2 N) }7 c6 M
6 z2 Q5 O$ O, b% ?7 y4 z- X2 j- M8 z clkrate /= 1000; /* turn clock into kHz for ease of use */
4 o! ], V3 T0 E5 a
- x/ T: o: z9 b2 c. y8 n" a; F* T+ T ta = aemif_calc_rate(t->ta, clkrate, TA_MAX);: H, L) X9 o5 Y. g7 X( N
rhold = aemif_calc_rate(t->rhold, clkrate, RHOLD_MAX);
8 t) N" h, T& I1 s rstrobe = aemif_calc_rate(t->rstrobe, clkrate, RSTROBE_MAX);- l- [, f/ t7 a4 ]4 F7 l+ m
rsetup = aemif_calc_rate(t->rsetup, clkrate, RSETUP_MAX);0 l+ O' R' M" p
whold = aemif_calc_rate(t->whold, clkrate, WHOLD_MAX);9 R0 ]4 N1 D; _: a- T
wstrobe = aemif_calc_rate(t->wstrobe, clkrate, WSTROBE_MAX); \6 `4 m: d5 y2 w
wsetup = aemif_calc_rate(t->wsetup, clkrate, WSETUP_MAX);
1 h' B0 V; B" ?2.我的板子上接的16c554只连接了8根数据线,所以设置成8bit数据位宽,地址线接了A15---A10结合片选CS5做译码,A4---A2接到16C554的A2--A0, 在这种情况下不停的用内核定时器访问0x6600E000物理地址进行 io_remap后的虚拟地址,板子上cs5没有动作,地址线上只有A2-A0有动作,我们这样的硬件设计和软件配置有没有问题,是不是应该配置成16位数据位宽,计算CS5的物理地址是不是应该做一下地址移位和映射? o! B1 ?! d( Z4 L1 @! Z8 v
9 }( B" \9 M( b+ F5 ?) X* e" s期待您的解答。
0 s8 b& i3 X3 U6 n |
|