在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6303|回复: 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 ~: `1 _  J. k' @! z        /* Power on the EMIFA */1 g0 m7 f6 V+ J  }3 s" R4 h
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,* H; |" J4 \$ J) w! Z8 \, T: u
                        PSC_MDCTL_NEXT_ENABLE);8 y" B7 c# H+ q2 \

9 M9 ]! ^" X8 @, y6 t        /*selects the EMIFA pins for use*/# B+ @0 a) q% W  |
        EMIFAPinMuxSetup();6 F3 M2 `! y( S( ~8 `$ {, f

% p6 d7 A) z3 ?; `# \        /*set the buswidth of async device connected.  16bit*/
9 b6 v- D) U( n* j/ A& I        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
' S. L! w. S6 @$ n7 X. B                                        EMIFA_DATA_BUSWITTH_16BIT);0 _$ V3 {8 D3 X/ e+ g

7 K( ^9 n* i  N! j% g6 s9 r        /*selects the aync interface opmode. :Normal Mode*/
1 x* C$ ~& v; p4 I        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,( x; y7 U5 x4 w8 X5 j2 {; A3 z5 g
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);7 V" F8 _, v2 Q2 ?9 D; Q
6 W3 ?# U1 c8 d/ C6 f0 C
        /*Extended Wait disable.*/& F" g: N- c( D- B5 v7 y
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
3 R0 S( a, `# u( t! R5 i8 {- |        EMIFA_EXTENDED_WAIT_DISABLE);
- r. [  L8 z/ k  W8 s; w+ ?/ d" v& W) |: K+ V
        /*configures the wait timing for the device interfaced on CS2
' q; d9 C; }4 s- E$ D) Y0 m# P# C        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/& o! b! ?: E2 ^8 P2 T  [/ Z8 z; H
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,; G; |/ x6 M$ O; n* O4 ~' Y
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
6 M1 k* z) i( s$ p. S, L" j7 g8 q( F- A9 b
}* {# n; b( g8 V5 A" N" a
还有cs4引脚的复用:
) M$ {6 F3 {) `5 QSYSCFG_PINMUX7_PINMUX7_11_8/ o- l- Q0 E, m" c6 i9 ^. n# ?
9 d" v; `3 b  H# f
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
9 o$ ^5 K+ W! z- x3 r谢谢!$ M. {2 |+ H/ i$ v+ z4 f

& n7 v6 |. t8 N. N
3 a9 M' S+ m0 R* _* L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
6 ^/ P3 w9 e3 N#if defined(CONFIG_SERIAL_8250_EXTENDED); w' w1 z! Z0 d" ]
#define TL16754_CLK                14745600- S; N( O! q$ S/ r7 j
#define TL16754_PORT_N                82 {, P) n% n2 _3 `+ L
....../ y. W1 ?; ]; Z
static struct plat_serial8250_port tl16754_serial_pdata[] = {
! ?/ ^9 R# P' h7 q8 Y        [0 ... TL16754_PORT_N - 1] = {$ ?: _8 W5 Z2 B/ P6 o' v+ b
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
. V+ }4 t7 g" E6 X5 T% ?                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
; G' C5 s* w# o8 }# F  E                                        UPF_IOREMAP | UPF_FIXED_TYPE,/ ^( C9 }- v5 G9 g
                .type                = PORT_16654,
6 E  z$ D5 }/ q6 R4 g- ~5 J                .iotype                = UPIO_MEM,
; @, p9 W* O- n' R                .regshift        = 0,
# `( u& }* G: S' J4 W                .uartclk        = TL16754_CLK,
# p2 Z+ i& O, I. c. _2 l        },
* o, `9 Q2 _7 |0 T6 e2 h" C        {
/ ~  p# x: K/ F7 W* t. A                .flags        = 0,1 `- @( Y# g* I6 o7 W! p$ o! U
        },
$ X2 f% ~: R9 R" N9 ?6 Y};
" ]" m/ N' ^' q. d+ D. L0 ?! l9 Y. a0 b( d
......2 E; E7 T7 I! ]( j' _3 J+ p/ ?
static inline void da850_evm_setup_tl16754(void)
8 |. h0 b7 K1 f. I9 P" P4 X{+ c9 Z; t# u' }& C( b3 u
......2 H. M  k" \; i' X( A# J7 T8 E
        /* Configure data bus width of CS4 to 8 bit */
0 U4 V# F- T8 E. {4 v' Q        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
3 z  o& l# j% X$ L. v) @$ A8 L9 _                (~DA8XX_AEMIF_ASIZE_MASK),! n. ~% D! _# ?5 M' v
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
# q4 b8 P% p! @) n2 @, p5 }) j
7 k" e  }' H; y& G        /* setup timing values for a given AEMIF interface */' O( Z1 K& B6 I0 m3 q
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
6 d: v% C) B0 d+ M                WHOLD(3) | WSTROBE(10) | WSETUP(4);
) l  K' ?4 S1 D( |, m4 Z, ^' }7 U
2 J" ]9 ?( _! Q+ G( J        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
  R5 s. @3 y; T+ q# B; i        val &= ~TIMING_MASK;% h1 F/ Q$ H6 Z& a% K1 b0 \! V& @
        val |= set;& t. ]% C  G0 T. M. U* x
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);8 A# d7 u$ n$ w" o: W- s
......4 j8 [7 l/ N* K/ [
}$ n7 x7 @+ S4 a' H# x
9 e* R$ ]  W- S6 j0 Q* e5 p! f& L$ R$ C
而且在Menuconfig中已经对$ o/ p" U% i) V$ Y/ h# v
CONFIG_SERIAL_8250_EXTENDED 设置为 y3 m9 h. Y& m# `  q8 F
所以此模块函数是被加载的,5 q. ^$ ?2 r9 m" Q- Q" m; V
# v3 O0 L$ U, c& B7 c
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
" d9 f8 f( d) R谢谢了
/ {$ \0 J- r, I+ r) u! [9 i/ @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, 2026-1-30 23:37 , Processed in 0.042598 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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