|
地板

楼主 |
发表于 2014-11-27 14:10:17
|
只看该作者
3 g( S3 k2 v2 [) j
多谢您的解答,还有些问题没搞明白
4 |8 [% {' T5 @8 O# b" j1.目前我在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是哪一个频率?
9 c. w! {- {: ^. U9 z7 G) M$ U aemif_clk = clk_get(NULL, "aemif");$ G/ t; u. n+ L% K( v7 F6 a
if (IS_ERR(aemif_clk))
|2 u& S. I, D' V* S6 Z9 |0 n# i: p return PTR_ERR(aemif_clk);
6 A! u, Y# |4 P1 @( F6 n, M' q
3 S8 N5 P9 N8 v( u4 e! V6 x* Z clkrate = clk_get_rate(aemif_clk);
" N. a% j2 c& z# n, v7 f: ~4 a8 B% j- S% T
clkrate /= 1000; /* turn clock into kHz for ease of use */5 m0 z$ r( B$ s' Z" S6 z# E4 P. n
, [' h) H9 r7 s- w ta = aemif_calc_rate(t->ta, clkrate, TA_MAX);5 p* \* E, u; c% M. c
rhold = aemif_calc_rate(t->rhold, clkrate, RHOLD_MAX);
% T3 d. T3 L5 |: m/ o0 l6 u rstrobe = aemif_calc_rate(t->rstrobe, clkrate, RSTROBE_MAX);$ `; h* o! G+ V. D! k- [. g
rsetup = aemif_calc_rate(t->rsetup, clkrate, RSETUP_MAX); d3 K5 `; c2 O& H
whold = aemif_calc_rate(t->whold, clkrate, WHOLD_MAX);
; l" G. y3 m' P wstrobe = aemif_calc_rate(t->wstrobe, clkrate, WSTROBE_MAX);
6 z( L7 k$ g0 D wsetup = aemif_calc_rate(t->wsetup, clkrate, WSETUP_MAX);3 ~$ ~* i3 k' S* ]$ C; E! ?6 x
2.我的板子上接的16c554只连接了8根数据线,所以设置成8bit数据位宽,地址线接了A15---A10结合片选CS5做译码,A4---A2接到16C554的A2--A0, 在这种情况下不停的用内核定时器访问0x6600E000物理地址进行 io_remap后的虚拟地址,板子上cs5没有动作,地址线上只有A2-A0有动作,我们这样的硬件设计和软件配置有没有问题,是不是应该配置成16位数据位宽,计算CS5的物理地址是不是应该做一下地址移位和映射?
{: w% l; {5 {' m8 r% z5 S/ H
/ s# J7 A7 r, H$ C+ @! O期待您的解答。- F; i: [4 ]3 ^2 E7 R' M. L4 U
|
|