在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5803|回复: 3
打印 上一主题 下一主题

[已解决] 在DSP启动EMIFA的CS4片选来进行通信出现问题?

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-5-30 11:10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
端午节快乐,请教个问题,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) {6 ~/ C( g1 H9 y$ V! W6 G. s
        /* Power on the EMIFA */" d7 K: H7 j# B2 X
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,2 E1 U0 w5 f* j! e+ V( A; k( a
                        PSC_MDCTL_NEXT_ENABLE);
; W4 a: u/ \+ ~  S( C* ?' B: I: A! M0 u1 F; {) ^6 A7 l9 n
        /*selects the EMIFA pins for use*/
3 N3 h8 _, ]+ {( }3 T3 V8 E        EMIFAPinMuxSetup();9 f) [6 E$ _) J6 }1 k

8 t1 M; ~) f% N+ m3 T  u6 Z        /*set the buswidth of async device connected.  16bit*/2 q3 U1 l- N$ c' j8 ^7 }
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,$ x( q, Y1 G7 r1 D1 T* f
                                        EMIFA_DATA_BUSWITTH_16BIT);6 Z! G7 Z3 K& E* @  d5 Y& J) B' J
2 _" P/ D* B. x- ]; ^2 D
        /*selects the aync interface opmode. :Normal Mode*/" E7 U# D) m& r' l& S
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,* `5 v& M& @. Y1 x& l
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
9 @6 \8 [- `; t( g& [- _# [( L) ]9 @) l. \  }" T
        /*Extended Wait disable.*/. b* z3 J. N1 W/ X7 K6 [! f: \
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,% a2 M" ~: L! k% p. Z/ ~! g
        EMIFA_EXTENDED_WAIT_DISABLE);
3 M. J" U6 `- a5 \0 ~. c4 h5 f0 Z; S0 \, N9 T( K' t
        /*configures the wait timing for the device interfaced on CS2+ B: A+ J" y* s; M3 E) E
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
+ o& D4 Q1 ~* ]. ^        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
9 Q; h: b" X! M+ O3 N                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
# O. H& L' G# B" I: a
9 d+ ^9 i" ]( J/ s1 H1 p2 K}0 o/ f0 B- l* w5 z7 @8 Z" P# }
还有cs4引脚的复用:  x/ F' [0 q* M; v  N
SYSCFG_PINMUX7_PINMUX7_11_8( N* J( J; c% p  j
$ e; ]7 P, d# O1 \" F1 o9 o( D; m6 W
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
' p9 x* \* h5 G$ [1 g* a2 b& ?8 e谢谢!
6 v4 h; N+ M2 G4 M% B" F
3 p5 T0 B) \6 J
: n# H3 ]) Q/ {$ d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
+ ?3 a, W7 E3 }: b#if defined(CONFIG_SERIAL_8250_EXTENDED)) F1 I5 ]. W9 ?$ F3 Q
#define TL16754_CLK                14745600; X/ l: v' g5 [3 S
#define TL16754_PORT_N                8* b0 M/ I: q5 w* Z
......, J% v2 e7 T2 U9 Q
static struct plat_serial8250_port tl16754_serial_pdata[] = {
8 g2 U" Y* G* U' q        [0 ... TL16754_PORT_N - 1] = {1 d0 U. r# p. ]4 n& D0 F5 f; ^  O
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
/ C9 i/ a( B4 l; H2 l                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |) O6 Q' T7 j1 A+ N3 r8 C, s
                                        UPF_IOREMAP | UPF_FIXED_TYPE,; |  E* J# Q: |9 L  J
                .type                = PORT_16654,
2 k! u9 @. l) _7 ]  M* d. |9 _; _. x                .iotype                = UPIO_MEM,
1 r# d9 r% z8 f/ x2 {0 {+ x( U                .regshift        = 0,& }; p7 c0 \0 U* y+ V: q  m. r
                .uartclk        = TL16754_CLK,  h0 m' @( \  y0 N
        },
2 W9 ^6 K) n% @5 |6 t        {
0 G+ G, F: n  m& t; _                .flags        = 0,
# S4 E" a- B) K& z6 B5 s        },
) q4 Y3 t* M* S5 w, `7 ^7 V};# @' e7 R% a" }$ j  B6 u2 ?

, A: v  G6 S- h; g4 u......
+ ~0 t* d6 s' l2 \static inline void da850_evm_setup_tl16754(void)
7 g$ ]1 J% s! H: M6 F{
1 Y# i5 r3 `( m......
: F3 ?- O5 z1 c% v1 i        /* Configure data bus width of CS4 to 8 bit */# Y! F* A; i" T
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &  O6 K9 R3 @! j% ]0 k
                (~DA8XX_AEMIF_ASIZE_MASK),
" ]- O1 f+ C5 X& L                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
6 p9 Q1 {) S' R- F5 J8 d4 _/ A1 y" e+ }
        /* setup timing values for a given AEMIF interface */" k( f; h) B" Q0 c4 C% ?$ x6 Y
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
! j7 o, y/ G# ~  W0 |! a* C: D  `                WHOLD(3) | WSTROBE(10) | WSETUP(4);9 j: B) g; Y6 f
) F- h9 u; ~, D; F, P
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
1 ]( k6 n% V& c- L        val &= ~TIMING_MASK;
: ^7 u/ T: o/ [+ H% E        val |= set;5 _6 D; l2 d& t. Q
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);- |7 n0 e( z0 M! k( @6 m! \0 g
......
: l# I2 y7 D2 l- N}
% o1 i* f: g0 [3 V& ]* Z; [, H" }6 g) Q# y& ?# Q7 ^! p2 e6 T
而且在Menuconfig中已经对
) R( w& T# g8 p, v6 M# K3 \) F4 d4 qCONFIG_SERIAL_8250_EXTENDED 设置为 y+ d9 Z: R' {/ B* G  I
所以此模块函数是被加载的,
$ U; c' Q2 J$ X' t9 V0 ?
( d7 v' Q( T8 O5 u9 x5 o( M请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:. {: @5 L* V3 V
谢谢了* F1 t7 |: E2 c! D4 U) M
http://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-6-2 08:54:31 | 只看该作者
厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-9-14 08:27 , Processed in 0.037478 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表