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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6478|回复: 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 G# O2 W+ o" N$ r
        /* Power on the EMIFA */4 M7 Z3 g3 W5 R! w# P8 u+ `% m
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,0 z4 g  A& E; {" @
                        PSC_MDCTL_NEXT_ENABLE);
% |3 K! T; l( p3 H! D; _" D; Y( c. K1 _
        /*selects the EMIFA pins for use*/
5 B7 }$ b$ v( G2 C2 v6 g        EMIFAPinMuxSetup();* Q$ J9 `; ^! o
, c6 S& m- X6 v3 _
        /*set the buswidth of async device connected.  16bit*/1 K0 A3 S# J+ v( l2 v/ a
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
) b$ M. o7 P8 ?( J6 }* v                                        EMIFA_DATA_BUSWITTH_16BIT);
. c8 q( x  |- [; H2 ^$ H. W$ y4 Y1 y; k  j7 Y
        /*selects the aync interface opmode. :Normal Mode*// ?+ f4 c3 T" H( Y
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,1 [4 g* C7 P. A" l
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);) B/ |  A2 s. G( p4 Y2 l1 x

6 w; h- T: o: A* F        /*Extended Wait disable.*/' A4 u3 Q8 X2 }4 o7 o# C  U
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,7 w. T3 Q% S' c0 y7 ^/ U
        EMIFA_EXTENDED_WAIT_DISABLE);
) P; Z" {" A2 y. \$ k2 j: l. }- [$ U% t
        /*configures the wait timing for the device interfaced on CS20 Q/ F+ @! J6 [7 z5 i* g, c
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/  O* u6 v( T' P) W: l/ }
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,7 n/ f; N! }6 D" y9 \
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
  v  M6 L; a9 ]" j; b+ g( O$ t8 J. g. s" V: |! ?* ~) b2 F
}0 C8 g( t+ U+ E/ e& i
还有cs4引脚的复用:9 t# l7 Q1 j+ e& ?0 s2 |. E
SYSCFG_PINMUX7_PINMUX7_11_81 h- [1 a7 X8 @; k

& I8 [) m9 {. \# g; [最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
: i8 {- j5 Z! `9 w' \谢谢!, l- m  I# G0 a5 I2 K5 U
# {! q3 O7 w! `: Q" ~5 {2 n2 v6 r* X: I

6 ?  Y0 y2 f6 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
- d; A9 t4 m/ s" M; C谢谢了; C" E- o7 Q+ E' r
http://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,- W+ l' Y8 }3 l0 D
#if defined(CONFIG_SERIAL_8250_EXTENDED)8 E; ^2 n$ y! o
#define TL16754_CLK                14745600, m& W7 N9 i0 E% N% }
#define TL16754_PORT_N                8
; s, f0 w( }# k9 x: ~......* O. B0 l) k5 |, r) [$ W- W
static struct plat_serial8250_port tl16754_serial_pdata[] = {& u9 A- ]2 F5 h! o. K& _
        [0 ... TL16754_PORT_N - 1] = {$ k2 c6 ~" L" b( U* H7 ?  e+ r
                .mapbase        = DA8XX_AEMIF_CS4_BASE,7 K8 s; u& B2 K& e
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
. X$ S" R6 s9 L: @5 x8 i& y                                        UPF_IOREMAP | UPF_FIXED_TYPE,
# ^4 l8 i0 Y5 `0 g$ }                .type                = PORT_16654,
- _( e' `% H( u, ~$ r6 E) I0 J                .iotype                = UPIO_MEM,7 H( O% N& B6 S7 c' u
                .regshift        = 0,
% d3 k) R! E3 u9 L. g                .uartclk        = TL16754_CLK,
* m! s4 ]4 Y3 X( C; ~        },
' V2 J' K7 ^, R        {/ W$ V( ^& [: \- f  O1 [+ G
                .flags        = 0,0 S# e4 W+ A' _) N: X9 l
        },1 L1 k* ]% b% V
};
6 x( X! u/ ~* o/ M; q  z$ w' `% B8 ?3 U/ U5 s  |% \( s
......
, W3 ~' K5 W' a0 W) A, S) n8 Fstatic inline void da850_evm_setup_tl16754(void)
. J, R8 L; M6 q6 }9 U{$ \8 @5 Q, p! d3 l$ {
......0 c0 G0 |; P1 |: W2 Z, i; l
        /* Configure data bus width of CS4 to 8 bit */
  y7 m% w* _- `9 Z7 A        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &2 L# Y9 d7 M$ l& N" j3 y
                (~DA8XX_AEMIF_ASIZE_MASK),* O2 V8 d2 |; `0 ^4 e
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) r: i7 X( G) T. G/ |- @

9 n% w7 F9 V) L# ?6 F% p" d        /* setup timing values for a given AEMIF interface */
; ^9 d* z7 ~' }' V5 g' d; l& K( Y        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
2 Q! U, R& t* y+ T9 E  V7 [                WHOLD(3) | WSTROBE(10) | WSETUP(4);
' v  ^4 H3 }. k& t3 p! D9 |6 H. H& z/ S* F( J( v
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
+ L% I7 y/ Z$ M; x        val &= ~TIMING_MASK;6 D% r8 c2 `  z5 T" D& _
        val |= set;0 v6 u" M" U' Q6 M; Z" ]% L; L
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
5 Q# F2 S. ~( u4 ?......
0 v7 U  p2 Q6 e}5 r1 r. f; u9 F% b- c( c
2 V$ A5 T, R( a" x$ l: s7 ~
而且在Menuconfig中已经对* ^+ y5 _3 Z# k* F) l( H$ G' Z
CONFIG_SERIAL_8250_EXTENDED 设置为 y
/ l* r" ^# f: |3 O0 _所以此模块函数是被加载的,
/ E  W5 H' Q- k0 X% Y
9 v* a- T6 l% ~4 ?0 B请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-17 07:55 , Processed in 0.038802 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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