标题: 在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) {+ R' V: I$ q& Z
/* Power on the EMIFA */ 3 _ N- Y" ~: G PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON, * Y* [. `: z) m7 F8 ]$ n PSC_MDCTL_NEXT_ENABLE);& |, ^8 r8 h5 T) @0 e/ w8 j
8 R! {* `9 _: N5 C' f+ b
/*selects the EMIFA pins for use*/ # @' B @5 K& N/ }- V EMIFAPinMuxSetup();! G+ O# |, t( Z0 t. {6 f; Z+ _
( {' z4 U" j( b /*set the buswidth of async device connected. 16bit*/0 [0 g- H. N- `3 a" a- `
EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,6 N% Q* [! e: i6 n4 c$ r
EMIFA_DATA_BUSWITTH_16BIT);* U$ d* n# \7 ?& o
0 o( A3 u$ L- H; q0 [
/*selects the aync interface opmode. :Normal Mode*/) o: |1 I) d) p3 o' `8 h* Q! @0 J& Z2 F
EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,! J, d% B: q$ S: e, [+ h
EMIFA_ASYNC_INTERFACE_NORMAL_MODE);( w6 j$ K3 o" U: _+ h
4 ^% D3 ^/ h% \& m0 u /*Extended Wait disable.*/ ) a: M. z9 w- r' R) I, Z EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4, 1 H% C3 U. m; r EMIFA_EXTENDED_WAIT_DISABLE);1 x3 V/ Q# K9 ~
* y( a/ y# b% l6 M1 w6 \( e, [ /*configures the wait timing for the device interfaced on CS2 ' i8 s8 \0 h. U! M- y: k; _6 B * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/ : D/ H0 u" h# ?4 x EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4, ?3 H. {* P# F* r7 O+ q; D
EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));" n$ ?" |4 \8 |4 ^! y# l; q [4 L
+ N/ P3 D' A. Q% Q- J* T. H
} : |: W6 N0 g& n5 _! \4 q还有cs4引脚的复用:! o' L# j) C' @! u* W+ {5 B
SYSCFG_PINMUX7_PINMUX7_11_8 N6 A' o7 D. t4 X1 D
5 z9 ~0 G! X* f+ x& r2 J5 I3 q. i
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?4 @: [# m5 n0 t; {: Y$ y" J: M
谢谢!$ P# X; c% h$ ~
. j' P% @5 z7 y9 V' d# h/ @# C: a9 d& ^' o* N; K' l 作者: 小石 时间: 2017-5-31 17:39
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,! i& a; @2 S l$ L* ?
#if defined(CONFIG_SERIAL_8250_EXTENDED) 5 t+ l0 _$ i2 t; q0 {* r2 Z0 `5 u c#define TL16754_CLK 14745600 0 A0 m4 }4 f5 g* n# A+ ~#define TL16754_PORT_N 8& U0 ~5 Q5 @( m
...... 0 b, ]! Y5 B# c1 f5 `7 nstatic struct plat_serial8250_port tl16754_serial_pdata[] = {: z2 T5 G$ e9 E' u6 N* N6 c
[0 ... TL16754_PORT_N - 1] = { : D" s4 U7 r o' l5 g .mapbase = DA8XX_AEMIF_CS4_BASE, ) ^0 j& i% P/ I .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | " k$ J9 M% r8 T) l UPF_IOREMAP | UPF_FIXED_TYPE, ' m' z7 R3 u% d/ l0 t .type = PORT_16654,9 R( C l b& \0 P, q( J" E
.iotype = UPIO_MEM, 8 q4 G+ Q1 v( v) e! Y6 P .regshift = 0,& s7 x! C' j: I+ v6 Z1 t8 m$ x
.uartclk = TL16754_CLK, c1 Z. X% j9 u8 O5 S }, 2 b) {. [6 B* Z# N$ c/ X$ K4 ~ {( a/ B) a9 p% M# t8 }# G" X; q" C
.flags = 0, 7 }* J. t# h, u' f7 S }, # J1 w( y) M: N5 q. ]* C( B}; 6 ~5 j( k# z: k5 F2 V4 e) O# R4 S) e @0 K' [6 X+ R
...... 7 \( G" p& { L0 T3 A: W$ P9 J3 Cstatic inline void da850_evm_setup_tl16754(void) * E' [3 W' i J7 I/ ?{( C. j! a. S: i/ K3 Y! T: Z& |
...... `5 x! ]$ ]) e& T8 J0 j7 N
/* Configure data bus width of CS4 to 8 bit */$ [) Z8 X/ H6 E$ V+ K1 G
writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) & w7 |& I, _) Z1 l1 G (~DA8XX_AEMIF_ASIZE_MASK),( s$ a! a* |6 e8 ]7 T
aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);$ g' z9 @0 M2 _4 E5 |1 n
! u' H" T9 Y4 a2 V1 m4 _& A* ? /* setup timing values for a given AEMIF interface */1 Y$ ^1 I3 Z1 U
set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) | ' t( ]5 a) O0 n" C0 c4 K! o WHOLD(3) | WSTROBE(10) | WSETUP(4);3 u9 Z) u2 y) L
3 T# r; m3 A. [+ f
val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET); ; b0 i/ z3 r% Q2 ~' ~! i val &= ~TIMING_MASK; k- N9 E: J* D f( R, l, d val |= set;3 X) B5 V2 c% _) @* @0 x7 T7 H" j
writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) I2 @3 s5 M" w# H
......9 x2 d" B7 x- }/ j5 Y6 w7 }
}5 X9 i9 j+ v( L" n
( f& o4 @( Y, G$ S ~
而且在Menuconfig中已经对 $ Q9 i% J# S* {2 T6 pCONFIG_SERIAL_8250_EXTENDED 设置为 y ) `0 e# X7 u l所以此模块函数是被加载的,& y9 e6 {' E9 e" N
# u1 k. v, i e) y' T6 U& q
请问下, serial8250 是给哪个创龙的芯片用的?? 谢谢作者: 小石 时间: 2017-6-1 19:02
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:5 F5 |5 R. u2 p5 H" z$ A
谢谢了 7 m z- Z) o% @$ ` J! k, C6 ohttp://www.51ele.net/forum.php?m ... &extra=page%3D1作者: human 时间: 2017-6-2 08:54
厉害