嵌入式开发者社区
标题:
在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) {
, E4 E, f) X0 \0 p8 N9 `$ Z
/* Power on the EMIFA */
# P2 S" W3 K* F8 V- X8 m1 [! u
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
! q6 p1 t; e& x; n
PSC_MDCTL_NEXT_ENABLE);
/ u5 x) l. u( J) W2 e: O8 W- G& A+ V
2 u+ @7 `4 ?5 G$ B* o/ Z0 S, W
/*selects the EMIFA pins for use*/
$ z: Y8 o) Q$ t+ [9 N
EMIFAPinMuxSetup();
! B- N: y2 `. ?% }- }
0 Q8 g) x- v& b3 b9 g4 B+ I
/*set the buswidth of async device connected. 16bit*/
0 ]/ G4 @1 U; n( p- ~
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
1 g# [! ?6 F# [, P, C8 b4 W' y
EMIFA_DATA_BUSWITTH_16BIT);
2 I5 c; e5 f3 b8 a8 g$ s
) _: M& P2 _% M5 g9 y8 s, j* f
/*selects the aync interface opmode. :Normal Mode*/
. K% y5 G. R8 N. u- e' {; x- u8 t
EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
1 o; L4 J3 p) l( Z8 B
EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
' A L1 \& `% u8 [" y) U2 q
" w6 Y0 c# @! p' N v/ X
/*Extended Wait disable.*/
" p4 z' O! N* e
EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
3 ?3 @! e7 A% [! x8 H
EMIFA_EXTENDED_WAIT_DISABLE);
) H0 f! k: v$ `, }: h* K
9 }- M9 k* Y5 T$ V2 a- s# X2 [7 ~
/*configures the wait timing for the device interfaced on CS2
8 f8 P: w$ ?- @; f% b9 x( [) }
* W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
% @$ s! ?+ u2 @# h4 U. v2 J6 D+ [8 Z
EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
& h. f& s8 n& Y* \; U
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
* Q) i( f) b; B
9 B% r. G+ |5 m$ `8 V+ K6 m- V
}
6 _" h; c& P8 o- O! P8 M' F. D
还有cs4引脚的复用:
- }/ w2 ^) e: Z# R
SYSCFG_PINMUX7_PINMUX7_11_8
* W0 a0 @5 T% S: D/ Z
, p# R- E z9 u. R' G
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
8 q& J. k9 {8 z" p0 J& x
谢谢!
$ g9 {. H' [" L2 q; Y* b: i+ y
6 b- m- k5 P: [- {) X1 H
7 @5 {+ M( _' j2 x
作者:
小石
时间:
2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
8 z3 c/ f: g) @, J- I
#if defined(CONFIG_SERIAL_8250_EXTENDED)
+ H8 b; w3 j! \1 j* H
#define TL16754_CLK 14745600
9 ], [6 y; w5 H
#define TL16754_PORT_N 8
! {9 s; F3 q+ J. X
......
& @3 X0 x- z, n+ Z7 H4 H' S; R+ y
static struct plat_serial8250_port tl16754_serial_pdata[] = {
7 a6 W7 {# Q( I, _3 k
[0 ... TL16754_PORT_N - 1] = {
2 z" Z, U! a) ]
.mapbase =
DA8XX_AEMIF_CS4_BASE
,
0 u5 l0 @4 e9 M/ l0 l7 I% o$ q
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
# V: c P6 B9 e# S3 t1 r9 \
UPF_IOREMAP | UPF_FIXED_TYPE,
$ w% f" n1 j" d7 Z$ i
.type = PORT_16654,
& v. g& T: L4 d
.iotype = UPIO_MEM,
! X5 b& t6 b( F5 d* _0 ^/ V
.regshift = 0,
4 p. R* c3 c7 P {: M7 r
.uartclk = TL16754_CLK,
4 s# n% Y4 h6 H
},
* N# E1 L& {. b2 j
{
6 s; ]/ u# O, `* q# [9 t8 J
.flags = 0,
+ @( w: B* K+ j
},
: @8 H# |* l- h4 V1 P7 ?
};
/ g4 x% w1 o: Z8 X7 }
, c4 k p, H. ?, b
......
* @+ i# A, V% `0 h& r0 [! C
static inline void da850_evm_setup_tl16754(void)
( Y4 r0 @5 {' B. Q& t# A5 E
{
* y1 u# _9 h7 h( p/ g
......
( R( K/ i# `: n7 j" e
/* Configure data bus width of CS4 to 8 bit */
6 I/ V5 k% h) f% Z9 h2 a Q# J. m* @
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
( r/ _8 p+ L( y
(~DA8XX_AEMIF_ASIZE_MASK),
9 J# z& _! ^ C$ }8 F' E$ K
aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
& [. i) i! C$ X Y
8 b+ Y1 D0 F* W& }, X' k
/* setup timing values for a given AEMIF interface */
2 G8 y6 W( P% z, K+ l
set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
" n8 G6 \& ~6 [) `1 n
WHOLD(3) | WSTROBE(10) | WSETUP(4);
7 R0 }/ [! B2 S( z0 H7 a
# v. m, j8 r' l5 N. w8 ]
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
! k- _9 G% \; G0 @& W% \4 S# T! |
val &= ~TIMING_MASK;
# a# ?' ?" c; k/ W# M( [$ F* U
val |= set;
& r5 ^" Z4 G" j( U. I \
writel(val, aemif_addr +
DA8XX_AEMIF_CE4CFG_OFFSET
);
" b1 G' v/ R/ I* I
......
5 T0 m3 @+ z7 K/ i' I
}
, b1 b: |1 O/ Q, ?
! }1 q) V7 F/ D& U- Y
而且在Menuconfig中已经对
7 K3 y2 f# V6 d4 F2 ]' O2 y
CONFIG_SERIAL_8250_EXTENDED 设置为 y
7 V( R/ ]+ E o; o% S
所以此模块函数是被加载的,
- }$ X5 \2 _* d) h
" M+ ?6 E6 ]9 B. M
请问下, serial8250 是给哪个创龙的芯片用的?? 谢谢
作者:
小石
时间:
2017-6-1 19:02
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
- n: l$ n# y e O9 k
谢谢了
2 a7 U! n- s2 f. ~6 V
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