嵌入式开发者社区

标题: 在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; y1 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+ ZSYSCFG_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 J9 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 设置为 y6 |- 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 Uhttp://www.51ele.net/forum.php?m ... &extra=page%3D1
作者: human    时间: 2017-6-2 08:54
厉害




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4