嵌入式开发者社区
标题:
在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) {
f# P: X1 f, J: J' }& n" n
/* Power on the EMIFA */
1 d4 i$ u9 t& G$ [8 t& {
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
( X7 x5 J% e5 R9 a6 _* E
PSC_MDCTL_NEXT_ENABLE);
, {# M2 ^6 e2 ~ O* r9 @7 B# B+ R+ D
2 |( ]0 R7 M" v+ n
/*selects the EMIFA pins for use*/
$ a( D/ {$ A/ @( S
EMIFAPinMuxSetup();
# f* Y Q% F7 ]4 D5 T
( @- e' ~# L9 R! U. @" g- S
/*set the buswidth of async device connected. 16bit*/
, ~* r! s. [( Z
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
3 {3 z, `( n: r9 c
EMIFA_DATA_BUSWITTH_16BIT);
+ |9 X6 S. V& g# F% a0 Q3 W4 \
/ `* k) H' n* I4 {1 @% w) @
/*selects the aync interface opmode. :Normal Mode*/
' k6 T& i& | j, ]
EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
" e& H5 ? g! Z5 p
EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
# g) Y' t! q: u0 \7 V& R
* a/ O& c9 Y5 V+ a( b+ q4 z9 S$ x6 f
/*Extended Wait disable.*/
% U" O& O- Y/ J9 n$ n
EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
8 z6 u. s7 K' M/ f" {0 n
EMIFA_EXTENDED_WAIT_DISABLE);
6 h3 M4 \1 n" K6 G
( j+ Y6 s# o5 A+ |
/*configures the wait timing for the device interfaced on CS2
5 @3 \- F& y" x+ ^! y' ^' q5 P2 h
* W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
' u) G+ F6 \% N9 O% G9 n( }
EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,
EMIFA_CHIP_SELECT_4
,
1 u4 p4 B! S! \) G) n! ?
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
) A8 W( L* o5 p2 X M; D# }! u# Z
% A& v0 U) ~# ~9 ?: S
}
% [, V, F0 _5 I! x+ q
还有cs4引脚的复用:
% U& ~1 J! `( E0 k5 |7 @
SYSCFG_PINMUX7_PINMUX7_11_8
- e% h+ C0 G; I* K
( L( Z o6 @ ]4 A4 l! r
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
. W4 z5 l! o# L/ ~6 }1 \9 O+ K! X
谢谢!
6 C; A+ \, }3 E, z, C) J
' L7 \& m9 M' ^) ^
g0 ^* O I& a) ?2 m
作者:
小石
时间:
2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
; c- L% _: z* n& V! W5 K' b
#if defined(CONFIG_SERIAL_8250_EXTENDED)
) x1 m5 h8 E# R6 C* N2 L! [: S
#define TL16754_CLK 14745600
, s- U, X3 h8 A6 U
#define TL16754_PORT_N 8
. r" `$ L) M5 p- Y) N! y
......
1 r( N' Q7 z I0 S* @2 E5 q
static struct plat_serial8250_port tl16754_serial_pdata[] = {
2 d/ {2 N1 E1 O' ]
[0 ... TL16754_PORT_N - 1] = {
8 {* {; f4 ~: q+ x* H2 B& ?
.mapbase =
DA8XX_AEMIF_CS4_BASE
,
2 R7 j8 C' p1 s- }; ?3 E6 Z: P8 r( T) o
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
2 ^0 r: h% p1 h7 I4 P; _
UPF_IOREMAP | UPF_FIXED_TYPE,
1 E7 t( S( n3 N+ q, B
.type = PORT_16654,
3 V5 K6 i- e! N9 b0 P6 a3 Q( W" o
.iotype = UPIO_MEM,
7 q4 t6 w8 m- ]3 p+ U3 |' Q' [
.regshift = 0,
8 I' `) N N: _1 [3 S
.uartclk = TL16754_CLK,
; S, E0 p% g( i3 c; L3 s
},
0 P1 j+ S% ]& I" Y8 D. c% @( [( D r
{
3 a2 X2 @, \3 z {' ^$ c$ W
.flags = 0,
% p( ~" _* \3 Z4 e! ~
},
6 F- F$ _" O |, A$ B8 M
};
8 P' ?1 R8 V6 K! Z: P
7 o8 v8 X) W6 V; T& q
......
) x/ M @1 z6 L' s0 N
static inline void da850_evm_setup_tl16754(void)
5 ^3 J) O+ c0 R5 u6 @
{
/ j [% y& T7 r2 Y
......
% C7 T; K* U& ^1 G$ J% c% A( N
/* Configure data bus width of CS4 to 8 bit */
+ P& [4 J6 e3 x# Z2 T" e* @* H# r
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
% j, n, M8 y1 l! V4 ?. F
(~DA8XX_AEMIF_ASIZE_MASK),
+ O4 R$ a8 |8 P/ H0 j" ?6 I5 u
aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
& L0 V, f: x9 v' T2 Z8 V% C' J! B
7 U! l' R' ^( R6 S( F
/* setup timing values for a given AEMIF interface */
3 m8 n2 J) v) D! w+ X
set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
" k6 v$ r, S+ \9 ^* _
WHOLD(3) | WSTROBE(10) | WSETUP(4);
! v3 K" l, h8 y! \- l& z' x
' x) b# B+ W. Z. L. s8 `
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
( N! W- c7 u0 ?4 {
val &= ~TIMING_MASK;
) _# m& u/ x, f, G2 [
val |= set;
) s. S. }9 u2 S% t& h
writel(val, aemif_addr +
DA8XX_AEMIF_CE4CFG_OFFSET
);
8 T! C$ B0 { i* C8 ~7 X' S2 A: S
......
7 b1 [* G l8 x3 T) Y
}
4 W% Y8 m. n' [$ u* C, Y- \$ r
3 ?* E( G4 J: r+ j4 r( Z: X/ H4 h
而且在Menuconfig中已经对
: K6 b) R: j6 O2 W- m1 u7 n5 d
CONFIG_SERIAL_8250_EXTENDED 设置为 y
) \+ _; H9 O1 i) n! P
所以此模块函数是被加载的,
$ ^; L! m w+ F
8 O+ w4 e A' ]+ v9 F P0 z
请问下, serial8250 是给哪个创龙的芯片用的?? 谢谢
作者:
小石
时间:
2017-6-1 19:02
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
# z( a/ ^! |* Q g1 Q
谢谢了
6 O& P& Z+ P. S' g
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