嵌入式开发者社区
标题:
在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) {
: m# o& I N5 Z- O
/* Power on the EMIFA */
@- F5 Q) r, c) v W6 [1 b. ?
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
& I5 a2 a- T" |: B3 j
PSC_MDCTL_NEXT_ENABLE);
J4 |/ f% ? F7 u* a
3 D3 T( a0 |' H" ^! k% G9 I$ `' Z
/*selects the EMIFA pins for use*/
3 U+ n, i$ q; Y; ]! o: f
EMIFAPinMuxSetup();
! x: M0 X2 W$ r
+ E3 }: U: h0 E- D9 S
/*set the buswidth of async device connected. 16bit*/
6 p- G/ U R6 t6 g: ]- s) O
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
: e4 Y+ S1 y% u7 L" V+ x& p
EMIFA_DATA_BUSWITTH_16BIT);
8 W1 O9 Y, ^2 C! h; U
; d% _5 @/ \1 O4 \% b$ z
/*selects the aync interface opmode. :Normal Mode*/
l9 D* ]1 I5 R6 _* z: d) P
EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
- i) i9 o: l5 w, X/ C& J
EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
5 w9 V: t+ ? r* A6 x* P$ Z
) g H: c8 B' h# e K, Q5 r# V
/*Extended Wait disable.*/
2 [- k8 J! @5 D
EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
% |' z! R! G j
EMIFA_EXTENDED_WAIT_DISABLE);
/ u) k8 J" ^4 c& M$ Q
/ z8 t8 {+ D0 c' d
/*configures the wait timing for the device interfaced on CS2
( P" s7 `) }1 @% a1 K
* W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
! E# A2 O4 U* Q, ]' v$ f
EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
; F. f( O; |+ i' p: R$ w
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
2 q3 D8 j- G, t! y5 \8 p
3 L7 o$ }3 b9 _$ g2 B ^
}
: j% O, _0 w) p! j+ |( u" U0 d2 O+ k
还有cs4引脚的复用:
2 C: L U6 C& h, |/ W8 _! M: J
SYSCFG_PINMUX7_PINMUX7_11_8
& ]7 A T& K0 N8 T* R& \1 \
/ i7 r S5 f/ E8 L8 v
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
. V: [. U" i2 N+ h
谢谢!
1 g4 R3 J. E: ` K7 e2 i
: S. Z* ]2 v& J9 m4 G2 k: x
, S( v0 y A9 `8 r
作者:
小石
时间:
2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
/ \; p; g5 p7 A) I3 J
#if defined(CONFIG_SERIAL_8250_EXTENDED)
- L$ }! D, l" o8 ^) ]" y
#define TL16754_CLK 14745600
4 E$ n& @& x7 Q/ ^$ {& w ~0 @# ?- r
#define TL16754_PORT_N 8
; C6 ^1 X, `9 n0 [5 Q/ T
......
6 H+ J3 w q0 r! L7 p( ]$ S Z6 Z
static struct plat_serial8250_port tl16754_serial_pdata[] = {
: ?! |5 A. t5 r, g( t1 ]( i- ~
[0 ... TL16754_PORT_N - 1] = {
: f8 Z) w1 H3 d9 o* [" ?; v' A
.mapbase =
DA8XX_AEMIF_CS4_BASE
,
( @9 V, R* I* x7 z" v
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
! u5 V( J( ]: [9 v; @
UPF_IOREMAP | UPF_FIXED_TYPE,
, M% X% }# @. {+ j! r
.type = PORT_16654,
0 [* ~; K4 c' M. o$ @
.iotype = UPIO_MEM,
- Q/ ^) e0 ^& r# h* j5 e0 l
.regshift = 0,
' g# p9 B2 T) F7 j, C
.uartclk = TL16754_CLK,
+ x* r/ W3 @( i- e6 R' e
},
& t- R6 |, x1 h
{
' D/ O+ h+ E5 _% R
.flags = 0,
7 g3 V# F( O8 T6 T" z. R
},
5 g4 {- a( [3 S1 |6 A2 W5 P
};
/ I3 k; R1 P+ i: t3 m" r
7 q! _ h# d+ z+ x$ m5 Y$ N& z
......
3 L. \; H7 S J4 @1 w# \7 |0 |( D
static inline void da850_evm_setup_tl16754(void)
& h; n$ c' b {( `* N3 I
{
: C6 i7 T! y, i" k! ?! Y- ^) }
......
5 |* Z" x! |8 r
/* Configure data bus width of CS4 to 8 bit */
- w6 k6 L5 y3 j
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
. y. P6 f& [( q
(~DA8XX_AEMIF_ASIZE_MASK),
( A# {; [; L& L+ n& f& @$ m0 z, q
aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
( l, T/ f: u$ K& a0 Q, X8 C
7 O8 m- k/ F: R0 W
/* setup timing values for a given AEMIF interface */
' A2 r, I9 l7 b7 Z. d# R7 A
set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
' B5 E7 ?3 H! W
WHOLD(3) | WSTROBE(10) | WSETUP(4);
5 S$ p( ~$ Y. `& r) n) P
# M J9 A* X0 Q4 L J
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
, e+ N: p3 k) G, Y6 b
val &= ~TIMING_MASK;
7 ]& x* ]5 o5 h
val |= set;
9 B3 e5 `. y; W
writel(val, aemif_addr +
DA8XX_AEMIF_CE4CFG_OFFSET
);
- D3 J$ e3 A% U8 m: E
......
+ V. t) k, b3 I8 `4 g% t4 E: I: X$ G
}
: t& J( ?$ M) U- @1 t! P% k
( N3 o: z8 f' ` `
而且在Menuconfig中已经对
5 A' E: g3 D' y/ Q' Q6 Y
CONFIG_SERIAL_8250_EXTENDED 设置为 y
( C, V+ ?2 F, i
所以此模块函数是被加载的,
$ H+ ^5 E; I9 F% R' D, r, r, S
2 E) b; u: O1 \+ |' |% Y6 C
请问下, serial8250 是给哪个创龙的芯片用的?? 谢谢
作者:
小石
时间:
2017-6-1 19:02
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
+ m% \" @1 ` C: I h" F
谢谢了
7 o; `6 b% q- h4 ]+ L, ^* A
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