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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4439|回复: 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) {$ l* ~: [4 ]- d4 U" u1 w
        /* Power on the EMIFA */  V7 b( G0 s8 |# ~! Z" l
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,9 ~9 I3 ?6 R2 S! _
                        PSC_MDCTL_NEXT_ENABLE);0 W, c2 g6 D: ~% |1 J) [. g
5 O0 ^$ v8 F; F/ ]' e9 y
        /*selects the EMIFA pins for use*/6 d$ m1 k5 @) P" v1 s* \/ H
        EMIFAPinMuxSetup();% K, p) a9 n" |( O
( F3 r. u7 E5 y0 B" E
        /*set the buswidth of async device connected.  16bit*/# B1 o, m3 j- a* p* K# I. T
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
) ~2 \6 W  o# M/ C  `4 H3 Y                                        EMIFA_DATA_BUSWITTH_16BIT);3 _2 d% W5 Z2 P: [: h: O

$ A$ i! B7 q% i6 j2 F* b        /*selects the aync interface opmode. :Normal Mode*/
+ ?- z3 N& [# r0 X        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,) x" [+ ]) o# A8 q
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);' a; Y! n( E# u+ e9 p5 u
) x9 j) W6 f* x% J+ ~
        /*Extended Wait disable.*/
5 S8 i5 t* Z; K9 z0 M* m( E% ^- d        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,3 h% w- M( f1 R9 f/ \- u
        EMIFA_EXTENDED_WAIT_DISABLE);! `6 X+ u6 i7 C, D

$ f( z& N- B6 f" R5 H, @+ H        /*configures the wait timing for the device interfaced on CS2
# W, c/ T+ r3 N9 }) l8 [# I/ T        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
' C3 m$ S0 o* N7 E% l        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,* Z8 t0 T$ E; U5 @$ e- A
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));2 n* y& Y" \& f& \5 l8 h( l
- w0 R2 U2 l. l  L: n- W
}" t3 A$ e9 a" C8 s. P- m$ _; @# ^
还有cs4引脚的复用:3 J3 {8 w( m( X2 ^
SYSCFG_PINMUX7_PINMUX7_11_8
& z+ q) K7 T; I- ?; ~- U3 G% b, B, W0 ~* D1 B8 d
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
, }, a8 c- B2 R0 D2 `. |谢谢!$ B5 ^" X+ p& D4 W
2 B5 b& J0 {9 G
1 D0 n' z' ?& w  P! m8 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,6 c" V# Y' c& e2 l
#if defined(CONFIG_SERIAL_8250_EXTENDED)
; s9 ]. a/ d& w7 v7 H5 {#define TL16754_CLK                147456008 k6 q, ^8 U1 v# c" T% y
#define TL16754_PORT_N                8
" F: K0 Z6 B! N8 F8 C1 F......
7 z4 c. v7 \/ L2 xstatic struct plat_serial8250_port tl16754_serial_pdata[] = {5 U" ]& Z7 N7 f# i4 c' M5 K
        [0 ... TL16754_PORT_N - 1] = {
! b& D( I$ w7 k                .mapbase        = DA8XX_AEMIF_CS4_BASE,1 Z, _# V9 s& {$ `+ n- @2 t; S
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
) c: [7 j& Q, L: t% |# }% b                                        UPF_IOREMAP | UPF_FIXED_TYPE,
8 F9 A! k: G' N9 G; [                .type                = PORT_16654,
' C. n8 e1 `3 `, B( K                .iotype                = UPIO_MEM,
# H8 h* m% c4 K' o, p" K                .regshift        = 0,
3 \$ |: Q/ A6 g' n                .uartclk        = TL16754_CLK,
- e+ P# Z- m! C9 L" Z# R$ T        },; s: @  T: b4 w9 F. l9 s
        {9 d7 D* |; m% D- U
                .flags        = 0,
3 [+ A* m: \" d3 c& `6 J) Q        },) j/ v% c2 ?: N+ ?
};) h8 g2 s/ x- ^& L5 g2 ?

1 v% _1 L: {3 v3 }......
4 t, y6 @6 w+ D' a4 q8 J& w. astatic inline void da850_evm_setup_tl16754(void)3 \: J- Z& Y5 e2 F' |& W! S
{9 E/ e: {; Z5 Z. P9 M
......( N4 p' H- S, j- n0 g
        /* Configure data bus width of CS4 to 8 bit */) X: P& q$ h+ o6 ?+ C; @
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
  m0 a5 |2 [6 b! U! F! e: v8 r0 X                (~DA8XX_AEMIF_ASIZE_MASK),3 T- ]% p& P7 J2 ~( Y
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);& }' O9 {. y4 V
% A$ X3 C7 s, l( A- |
        /* setup timing values for a given AEMIF interface */
; I3 o9 M/ i" n! I8 x$ T! S        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
7 ]6 c. c0 J7 W, j                WHOLD(3) | WSTROBE(10) | WSETUP(4);
; }9 F1 y3 _- |% f# n) z% Z9 ~1 P! a. k
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
, g2 }/ [( f9 }0 R3 l4 f% K+ a        val &= ~TIMING_MASK;
( |1 n/ W  A, H% z        val |= set;
4 A2 ~% D2 y6 N, ]/ Y& u        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
2 Y4 U3 @0 ~) z4 w, r......3 S7 W- P& |" ], g
}% F6 D( X& t1 @9 t
+ y$ X7 W9 b+ k: F- h, [
而且在Menuconfig中已经对
( N+ U$ r( J& B& V- G9 \* |- R, ]' eCONFIG_SERIAL_8250_EXTENDED 设置为 y2 Q' k. G! y" x& q
所以此模块函数是被加载的,
7 @! h* d! L9 a) Z3 a7 T7 l0 }3 F4 q* x
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
" N) P  D* \- x谢谢了
+ v% W* {4 r+ w& }8 a3 Hhttp://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, 2024-5-7 00:44 , Processed in 0.063282 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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