|
|
地板

楼主 |
发表于 2014-11-27 14:10:17
|
只看该作者
- r a" P1 Y% P0 p& Z* D
多谢您的解答,还有些问题没搞明白 W: h/ j6 o1 r* n! }1 ]3 {/ t
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是哪一个频率?5 X# s3 P- `) V" U0 i0 n
aemif_clk = clk_get(NULL, "aemif");& L2 ^% w! W2 B
if (IS_ERR(aemif_clk))
* |% b, U' ?& h8 { return PTR_ERR(aemif_clk);. e7 O& {% C1 R X* f# l3 N' j
, V3 q1 m' c- E0 j1 S. d
clkrate = clk_get_rate(aemif_clk);8 s" {0 ~" G# E/ L" U
3 z7 M& y3 _ { K
clkrate /= 1000; /* turn clock into kHz for ease of use */
% S4 d$ L* ?5 w5 J9 X
, V, c& O$ T$ J7 ?1 j+ E' ~: p# ] ta = aemif_calc_rate(t->ta, clkrate, TA_MAX);. b6 T7 j# h; }. F, F0 V' Y8 |# L# t+ F
rhold = aemif_calc_rate(t->rhold, clkrate, RHOLD_MAX);
9 ^! B4 n3 c: y% V/ t9 \ rstrobe = aemif_calc_rate(t->rstrobe, clkrate, RSTROBE_MAX);- a* ?4 O J# a; _7 ^/ H8 ^
rsetup = aemif_calc_rate(t->rsetup, clkrate, RSETUP_MAX);1 W* L" m5 i. w. |- F; M6 D* [
whold = aemif_calc_rate(t->whold, clkrate, WHOLD_MAX);
2 ]/ |, H1 q" P+ U1 _' f wstrobe = aemif_calc_rate(t->wstrobe, clkrate, WSTROBE_MAX);
% l2 G1 }3 _0 v6 ]0 s wsetup = aemif_calc_rate(t->wsetup, clkrate, WSETUP_MAX);
9 D8 l- P l+ Q5 H1 y/ F# ]2.我的板子上接的16c554只连接了8根数据线,所以设置成8bit数据位宽,地址线接了A15---A10结合片选CS5做译码,A4---A2接到16C554的A2--A0, 在这种情况下不停的用内核定时器访问0x6600E000物理地址进行 io_remap后的虚拟地址,板子上cs5没有动作,地址线上只有A2-A0有动作,我们这样的硬件设计和软件配置有没有问题,是不是应该配置成16位数据位宽,计算CS5的物理地址是不是应该做一下地址移位和映射?5 K6 R! K- l( q9 b4 z+ |
( ]2 A6 V w5 s" q
期待您的解答。$ i& `5 P: J2 E4 b% m Z% V' Z3 z+ r, d
|
|