嵌入式开发者社区
标题:
在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) {
4 a# Q" m3 C) C* r
/* Power on the EMIFA */
# G1 g) @0 E9 c8 g
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
S( |6 d/ D: y
PSC_MDCTL_NEXT_ENABLE);
, A7 T9 O! ~$ K7 O! U. i' ^
2 B- ?" I- N8 ?: F7 M. K3 g9 @
/*selects the EMIFA pins for use*/
, w7 Z9 V5 p$ z' z* N$ g
EMIFAPinMuxSetup();
2 l4 V ^: t$ {& U/ J7 m. r2 w% \
0 p4 \1 ~) U" c! `
/*set the buswidth of async device connected. 16bit*/
- {3 O7 g9 F+ b1 s( g4 P7 B
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
: F% d) a8 Z1 g2 n' Q& q6 N0 g- C, q
EMIFA_DATA_BUSWITTH_16BIT);
: D6 b4 C+ |* a2 a( E4 {) I; y
1 Q6 e9 e2 L T" ~+ O6 H' d
/*selects the aync interface opmode. :Normal Mode*/
) G2 O* p2 s6 _) W, Z- ~
EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
3 i* d4 E+ ^7 R# C5 M7 Z
EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
' E# Q1 _- M6 ] r1 D, w, t4 w. _
* @& J, u+ b# T- x* O
/*Extended Wait disable.*/
" l2 ~& e4 |- J- U9 `+ O
EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
3 Z5 `% Q# x9 J
EMIFA_EXTENDED_WAIT_DISABLE);
/ e, P7 m; |, u* y/ S% t- [
: D, W8 _# p$ p
/*configures the wait timing for the device interfaced on CS2
( Q* p4 y6 C0 v8 J9 j
* W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
# C9 j) Z1 U1 X
EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
. B# U2 K: ^/ i; D* |: k/ t
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
! v$ ^ ?) i: C" k% X. e' ^
1 K) {* W( h$ t' I3 @- a/ l. m
}
) Y2 O, {! ]& w; r
还有cs4引脚的复用:
2 S) P' e* E8 V4 e# J+ Z
SYSCFG_PINMUX7_PINMUX7_11_8
# `' ]! P2 H' Y0 H: q8 }
( K# c" y- A" z* E7 _3 w
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
. H: B( ~% @. y+ }) |
谢谢!
" c7 m) k# e9 e' w# o1 M
5 V- ?& e5 w% j$ k
$ a0 ^; H! n1 x* J$ D8 |8 A
作者:
小石
时间:
2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
. e* }! ]$ X4 c7 E
#if defined(CONFIG_SERIAL_8250_EXTENDED)
. V- b' t. k7 l- B* W
#define TL16754_CLK 14745600
" ]' n: R; T' w) B( q
#define TL16754_PORT_N 8
6 {6 O8 p; m5 B' E! C
......
* ]& z% B7 `0 I H
static struct plat_serial8250_port tl16754_serial_pdata[] = {
3 @% r K& T' _
[0 ... TL16754_PORT_N - 1] = {
; U+ y1 U5 E$ b" t
.mapbase =
DA8XX_AEMIF_CS4_BASE
,
, ^" x; r6 ` w C( N+ Z) e
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
' s6 G+ E7 D1 l# q
UPF_IOREMAP | UPF_FIXED_TYPE,
6 D1 y; [! a% L; Q5 j5 X
.type = PORT_16654,
+ u' N) l' x. s- e/ R3 t
.iotype = UPIO_MEM,
- s! ^: m/ {; E/ o. z9 ~
.regshift = 0,
$ D. a3 ?8 X) Y" s, Q/ t+ r
.uartclk = TL16754_CLK,
# s/ `: c4 d9 h. g* {. u+ X
},
5 v8 h0 `% c5 ~ P- M* H; ?
{
& S9 g3 Q' p( [ P5 P5 E- [, o3 |
.flags = 0,
9 X! ]$ o1 V4 P! N* G2 f+ u" ], z
},
$ N- M; r; K% |# i! }5 `
};
6 V+ p7 w7 [( A3 J0 J
9 x9 |" a# o) ^- A, m) Q m
......
6 e( Z- \. @; Y' T1 l- q
static inline void da850_evm_setup_tl16754(void)
: l2 m( V: w3 M8 b
{
2 q4 g$ k. F. }) P$ O
......
' [* x" g7 d0 Z: j% F
/* Configure data bus width of CS4 to 8 bit */
: U& F+ ^7 n" I9 K+ ~ l: O
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
6 x5 t/ }( k& I3 }3 C# n$ Q
(~DA8XX_AEMIF_ASIZE_MASK),
; H$ b/ T2 H+ Y n% p: N
aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
+ q' }% S1 B7 X# g3 I4 Y
- Y! S4 m9 K& L9 I" t$ e, K
/* setup timing values for a given AEMIF interface */
8 ~" ~. S) M& o0 ~
set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
; f0 d" q) T6 F! H
WHOLD(3) | WSTROBE(10) | WSETUP(4);
8 U! _" A9 i7 Z9 @9 V
- T) a, I% K: |1 y( Q# s
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
3 ]" ~9 w+ u- u7 g
val &= ~TIMING_MASK;
) A) C$ s/ I+ Y: B* u2 b8 z" G/ \
val |= set;
' ?& q6 p! g# c5 s! ^5 V) l
writel(val, aemif_addr +
DA8XX_AEMIF_CE4CFG_OFFSET
);
, J2 R+ `' ^5 m I3 D
......
Y6 Q) v/ d* v) w9 `
}
( t- |. `0 i8 J, ~, \( w
/ m) @9 A- h$ t- j M8 F9 O
而且在Menuconfig中已经对
9 H- E, x* r9 {% U
CONFIG_SERIAL_8250_EXTENDED 设置为 y
6 |- t# \ y" ^- {0 f. b7 h' n* [; N
所以此模块函数是被加载的,
^5 g! P d6 ^( z) P/ T/ }: |' B' R
) C1 P- b+ l! K( e
请问下, serial8250 是给哪个创龙的芯片用的?? 谢谢
作者:
小石
时间:
2017-6-1 19:02
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
# c# u- u3 y9 Q4 }3 w
谢谢了
( u$ F/ ?* e" ]6 s0 \0 U
http://www.51ele.net/forum.php?m ... &extra=page%3D1
作者:
human
时间:
2017-6-2 08:54
厉害
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4