嵌入式开发者社区
标题:
在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) {
0 ^5 q& S4 x! u- z2 U
/* Power on the EMIFA */
" I/ `9 q) ]* {6 j0 W( D1 j! N
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
" a8 |- H; }# l
PSC_MDCTL_NEXT_ENABLE);
4 F- q" ?' ^# T7 t
- O. L- M0 R' E7 ?: A
/*selects the EMIFA pins for use*/
; g- p1 E) |+ E! X) \
EMIFAPinMuxSetup();
6 B5 m% e7 o# }% B
, z, w h* a; a- m, {2 t) A
/*set the buswidth of async device connected. 16bit*/
+ E: j3 h$ D# b$ G6 v3 b% F
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
0 h/ M) L2 J% w/ f: z* A1 }
EMIFA_DATA_BUSWITTH_16BIT);
! J0 l8 w# B/ c: D: A
/ U! y0 }6 ]# J4 V
/*selects the aync interface opmode. :Normal Mode*/
7 e t4 F. [9 m' Z2 _; k
EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
- q; E! _9 `! D; s( b$ S
EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
" a) c* ~ D' U- q0 X: z3 ]9 P
7 E. E) H4 K4 k9 N* {8 P0 ?. g; P
/*Extended Wait disable.*/
2 ]9 {( t; S/ S9 @* l
EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
/ w+ S8 g2 j* P6 R( Z8 F9 \
EMIFA_EXTENDED_WAIT_DISABLE);
" U. z/ }. y) Y; w
- v" v m4 O7 c4 n u( h
/*configures the wait timing for the device interfaced on CS2
" p5 n l! Q+ M
* W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
) J A" |! p1 \) r [ \
EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
6 ]: v# H7 V/ o* T9 T
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
+ \8 o3 _1 g- ]3 B- E9 n
: k& C' B8 M5 E. u' w
}
$ N( p7 `) |% v
还有cs4引脚的复用:
: ?" j& z* X2 Y" E$ ^. R
SYSCFG_PINMUX7_PINMUX7_11_8
+ ?! \* ]( j8 m& c8 t3 r- e
: K# c) M& h2 [/ g$ H
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
$ ~, L$ p. i" n* l
谢谢!
3 N B! k( y z- c9 y9 }
9 \( c% a8 u) g5 g
0 Q+ k; P7 H8 R3 t
作者:
小石
时间:
2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
4 |+ u7 I, a& q6 f' l
#if defined(CONFIG_SERIAL_8250_EXTENDED)
; D" Y2 t5 c& C0 m% Z2 G, |
#define TL16754_CLK 14745600
, e# f4 F1 Z5 f) W n* w. }
#define TL16754_PORT_N 8
, S" V9 C6 g# U
......
$ _' J' D/ ^' D1 q; C2 C0 D3 u: P+ _
static struct plat_serial8250_port tl16754_serial_pdata[] = {
5 O6 x! W& g- J( P
[0 ... TL16754_PORT_N - 1] = {
# t! w, Y; }" e/ y
.mapbase =
DA8XX_AEMIF_CS4_BASE
,
+ x8 @( L2 M& Q0 R* w3 t/ W5 b
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
8 }, t; Q; s: Y
UPF_IOREMAP | UPF_FIXED_TYPE,
& a6 v1 p$ I7 K1 r% r! n4 l% }
.type = PORT_16654,
9 L) C+ s1 M5 C& g( n9 Y7 M
.iotype = UPIO_MEM,
; W' T( j# j- \( L
.regshift = 0,
; _9 y P A' W4 ]( k8 `
.uartclk = TL16754_CLK,
7 I& m3 E+ c5 p; n1 y& h+ ]: x
},
! b+ s1 e* o) [6 O( z( r
{
, U6 h4 e, ^7 b6 N# u
.flags = 0,
. e4 b; u* ~: E- e5 [6 C
},
6 w- M; _: E2 Y K' b1 X6 _
};
/ v' [2 w# m& H; x& K
- s/ K5 r7 u! X1 I+ s# K
......
. k6 @5 P* _ Y- _
static inline void da850_evm_setup_tl16754(void)
3 z7 k) ]2 C5 @# \
{
( C* b3 T: @9 L0 }% ^% J0 k
......
% F/ f2 {7 ~2 `0 u
/* Configure data bus width of CS4 to 8 bit */
# {, K- R t3 T' w+ r
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
6 h! ~- Y+ H! g3 ~) N; K" d
(~DA8XX_AEMIF_ASIZE_MASK),
0 R' W* Q4 l+ ?
aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
% j0 I/ v- V9 w: p" l
8 B4 P" P. ^. t( `- e
/* setup timing values for a given AEMIF interface */
1 O1 c$ R% l. N: T- Z% L
set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
& j" E7 \7 X: o& c
WHOLD(3) | WSTROBE(10) | WSETUP(4);
2 q" Y( w5 C+ a/ I" a
% ~ u8 I% P, t
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
8 u1 I# w3 j. [7 i
val &= ~TIMING_MASK;
9 X3 R; L7 _9 z$ |7 Z3 [" n
val |= set;
/ N# @, h8 B2 o, C0 ]8 A7 S
writel(val, aemif_addr +
DA8XX_AEMIF_CE4CFG_OFFSET
);
5 _% W3 ~/ `7 i; O) ]& c5 `3 y
......
/ {# i& O; L3 a- Q- y
}
* I. u2 p" e2 G( h7 U! l
* W5 Y" Q$ x% c9 F% B- m
而且在Menuconfig中已经对
]% M, |& V( k; n& A* q' T
CONFIG_SERIAL_8250_EXTENDED 设置为 y
0 Q% o; @3 v) @! g5 {* U8 r
所以此模块函数是被加载的,
) W% {- q" h, u w. C
7 h9 d, x3 T2 O3 }; k' S
请问下, serial8250 是给哪个创龙的芯片用的?? 谢谢
作者:
小石
时间:
2017-6-1 19:02
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
6 u9 _( R7 U; q
谢谢了
% f; }- |4 W4 [( S7 C8 l
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