标题: 在DSP启动EMIFA的CS4片选来进行通信出现问题? [打印本页] 作者: 小石 时间: 2017-5-30 11:10 标题: 在DSP启动EMIFA的CS4片选来进行通信出现问题? 端午节快乐,请教个问题,ARM端启动linux,DSP端sysbios,我在DSP端初始化了EMIF,使用的是CS4,初始化参考了创龙的DSP单核时初始化的过程,单核下是可以使用CS4进行读写数据的,但是当双核启动的时候,就不能启动了读写数据了,然后我就用创龙的syslink案例ad7606_dsp,我用创龙的开发板和创龙的ad7606开发板进行AD模数转换,是可以的,那么我什么都没有改,只是将ad7606_dsp中的EMFI初始化部分,将CS2改为CS4,包括以下内容:static void ad7606_emifa_init(ad7606 *ad) {9 n( W2 \: o7 m# [4 V) f3 w
/* Power on the EMIFA */ / `4 M3 t6 _- f2 q: h- c5 O PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON, ) B$ m/ x7 p9 U6 z5 w" g" G$ X PSC_MDCTL_NEXT_ENABLE);' F& x3 q9 N i, B8 e' x G B+ @
- j9 N0 A- U- A. S/ `4 l- s0 f /*selects the EMIFA pins for use*/% U6 g& |! U, R3 L" B
EMIFAPinMuxSetup();4 A+ b; `9 n4 b
) O+ B3 A) r/ c* e* V /*set the buswidth of async device connected. 16bit*/; d w, C3 q' O; `' L g
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,- t: U- P# L/ A
EMIFA_DATA_BUSWITTH_16BIT); + U* N! m1 x2 A# W. G c4 z ( n# p* m( F7 F, a /*selects the aync interface opmode. :Normal Mode*/ 4 M) n- A W9 u EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,2 h! L3 V" O( f2 Y- F6 f
EMIFA_ASYNC_INTERFACE_NORMAL_MODE); ; f8 E$ ~1 J$ v1 z, g, B y& W3 e G3 d) D. W& I$ c /*Extended Wait disable.*/6 I4 r/ G2 g! g0 f
EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4, . a. z' x% w( G' C7 Z/ J$ j EMIFA_EXTENDED_WAIT_DISABLE);, @" x+ Y5 y2 x, X$ W
; _. _1 w7 r9 c /*configures the wait timing for the device interfaced on CS2 7 U5 r/ c# X0 z( l3 [ * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/ / ~9 T/ L a" ~4 c' K8 e EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,6 y& w0 O/ x, s% B' d" E
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1)); ) b0 I# [! w, H; ?6 J3 y 9 t4 l9 o4 ?* L2 [, [" f# Y- L}. {8 e5 x8 T; O8 [- \' U( ~4 G
还有cs4引脚的复用: : G% |, D6 O' y$ O3 w" x" w* p( I) wSYSCFG_PINMUX7_PINMUX7_11_8 ! ?8 J- F2 @1 y" _& _+ i 9 v7 t3 E' ^* H3 l最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗? 1 @4 L7 R: ~: W* \谢谢! 5 P6 v4 e+ Q$ e+ Q$ k5 Y+ t. V0 P' \* P7 D
% b$ z" A8 i, _ 作者: 小石 时间: 2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,; k9 d8 C( \$ d! m
#if defined(CONFIG_SERIAL_8250_EXTENDED) 9 k! L. L0 x o( n2 L3 D2 @8 [- r#define TL16754_CLK 14745600 : j0 X: z8 o$ ^2 z' [; |#define TL16754_PORT_N 8 ) Q, n. R7 ?* \7 c- {; O. W; Q. S......2 l7 C9 k9 s5 E7 x, e
static struct plat_serial8250_port tl16754_serial_pdata[] = {5 w; i9 C7 q0 T+ [9 G
[0 ... TL16754_PORT_N - 1] = { : i1 _. Z" x' v$ a9 e% ~, Q3 r5 _ .mapbase = DA8XX_AEMIF_CS4_BASE, $ c2 o( s- z- O& C x .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |+ ]" b* t0 a- \) X% n- Y
UPF_IOREMAP | UPF_FIXED_TYPE,0 c. g, p) ^7 [3 a9 O) Q
.type = PORT_16654,# G+ p- y# M7 v+ S/ O1 a
.iotype = UPIO_MEM, 6 d5 _8 s e" W6 t3 ?2 t, Y .regshift = 0, $ i% R) C+ W' c' h# n* O9 r .uartclk = TL16754_CLK,6 ?, `; S9 X" A+ T5 Q9 v1 ~% |4 |/ x5 g
}, ) e1 A! Q" y* F {) U+ @. Q! X! O
.flags = 0, 5 X$ x8 b( m+ y, o9 `. ~ },- ~1 h6 F3 l/ _+ h& B" l z
}; : a. P1 J7 [! g, v" l2 S! `( s5 N' h3 B
......' W, _' C+ q3 \1 n
static inline void da850_evm_setup_tl16754(void) & X# s' h q; f; J{2 n6 C# e) m2 u8 {/ k. ^
......1 R( P; ~0 M( C" {) H- G: ^
/* Configure data bus width of CS4 to 8 bit */1 e5 a* L5 y, M2 z
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &) A+ V$ Q; }6 p( q0 ~
(~DA8XX_AEMIF_ASIZE_MASK), s0 ^. Q0 L6 Q; d aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);2 ^/ z. x" v8 k$ `( R7 J+ h, B$ I
/ W _! H- t4 b1 @+ ?/ o' E
/* setup timing values for a given AEMIF interface */ 1 w* y/ s: d6 ^6 L3 d# A. g- S set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |5 X- E% t6 O: x
WHOLD(3) | WSTROBE(10) | WSETUP(4); # e) A4 R9 m5 E2 A0 ~! H9 J0 z4 v
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET); 1 W; t* _7 I! ?$ G$ C$ @7 Q val &= ~TIMING_MASK; 0 _5 l U4 n; x% u8 u, [ val |= set;2 P6 b0 t9 V( ^9 a3 C* G% V8 \
writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET); ! p Y/ C3 M6 Z+ f. u......) K3 l; [- b0 [- R6 n; j
}$ @1 l" Y6 ~' i) v: r: E5 t
" g5 L- o9 X( c2 a4 s c而且在Menuconfig中已经对+ d) }3 e5 m* ], O8 C% W
CONFIG_SERIAL_8250_EXTENDED 设置为 y 0 |% Z6 ^2 n7 [# g$ E所以此模块函数是被加载的,, {4 x5 C0 b0 _6 ^) z$ x" Y