嵌入式开发者社区

标题: 在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 p3 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: JSYSCFG_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, ^* Ahttp://www.51ele.net/forum.php?m ... &extra=page%3D1
作者: human    时间: 2017-6-2 08:54
厉害




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