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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4435|回复: 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) {
, Y) f* ?( Z$ T% R3 W# p5 x        /* Power on the EMIFA */9 b7 V+ J) Z+ I9 M% N6 s
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,7 \" u3 Y3 p, w, X% _; O$ v
                        PSC_MDCTL_NEXT_ENABLE);" y" {& F# J& @( H7 D1 H5 w5 A
$ z& O* i& J8 f( J
        /*selects the EMIFA pins for use*/4 \4 |7 R# Y# E
        EMIFAPinMuxSetup();
9 A- z  [. z/ w+ w* d% H
+ ]+ T4 e) E% `; R+ G. ~        /*set the buswidth of async device connected.  16bit*/8 M: u7 ^  n/ P+ i& h
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
. w/ [( p$ u' R  \. Q4 N* J1 ]                                        EMIFA_DATA_BUSWITTH_16BIT);7 W5 [& I- Z+ s8 r
* Y  ^6 J6 A# @  P) p  t
        /*selects the aync interface opmode. :Normal Mode*/
& e' s( S( j' [. ]        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,- H- o/ C2 `1 \) x
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
1 }' |) O3 @$ @5 `3 }) e6 M; y6 o( f
, T+ d/ m8 [, s4 [- n6 Y        /*Extended Wait disable.*/  q. e5 \! {/ }( E) V
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
5 ^; m* B' a3 A: {        EMIFA_EXTENDED_WAIT_DISABLE);
8 z& v9 ?( B. f9 j  E& C) l+ R7 G9 ^
        /*configures the wait timing for the device interfaced on CS2
7 R  q. `2 m8 W# ^! u* a. k/ g% Y2 C, P        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
0 z9 x! J2 R; `: ]# f  q        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
* P6 {( h; f1 m0 u! d                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));$ ^( D8 N" v3 H& `
8 [, e) ^. h( s1 ^0 f$ `  [+ I5 O/ D
}
' f2 _# [8 L; Q+ P还有cs4引脚的复用:
$ j( L! x) j2 y% QSYSCFG_PINMUX7_PINMUX7_11_8
) L( h* a  l, g* B; D( D# |$ M$ L; v  j: B' Q
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
) d5 _; t+ E7 y5 l+ ~. E5 S: z谢谢!& g! W1 i; t. N8 Y% h3 h
5 L7 ^* [' v( ~/ R  ^0 i

  y+ D! W6 P2 M& r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,$ T; Y2 m; W  q- ]6 S; X7 m8 }4 _
#if defined(CONFIG_SERIAL_8250_EXTENDED)9 S- _* c. j- u) B. q. f8 I
#define TL16754_CLK                147456004 f6 b6 B" y8 H. B3 g& M
#define TL16754_PORT_N                8+ V. t' o5 A0 \" t
......
' Z( @/ r! ]" ?static struct plat_serial8250_port tl16754_serial_pdata[] = {& ]  }4 }1 F6 K% K
        [0 ... TL16754_PORT_N - 1] = {
  ~% {- \/ I  O2 u2 K; N                .mapbase        = DA8XX_AEMIF_CS4_BASE,
" R& K& p) u( W) y. w                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
9 h& d  \/ f- E; w                                        UPF_IOREMAP | UPF_FIXED_TYPE,. e" f7 P5 J  D: x. V
                .type                = PORT_16654,) Q. Y( c" d/ ~1 o- l
                .iotype                = UPIO_MEM,
5 a1 j' Q) x6 o! I1 r/ V0 h                .regshift        = 0,
( @4 J, i0 e5 s8 g, S3 m; @                .uartclk        = TL16754_CLK,3 a1 g2 g% K$ R# f: R1 R
        },2 H# y( D- Y; A' ^7 M8 t) a! J( t
        {) c  M' v! T5 r9 Z7 {! G% d
                .flags        = 0,% M: ?8 ?- J0 o/ \
        },+ I; n# Y7 {6 e! ]! F# r. U+ D
};
( S- F3 l" @, N9 r" s! a" j
" G! P  @- t9 ]4 E, ~# w. z......
2 F# N" p6 G* q% D* b& R5 V8 m& ~static inline void da850_evm_setup_tl16754(void)
* U1 `2 S" D0 x1 y6 C{
6 d1 `6 p8 X: C......$ c) T( z0 d+ _4 j( p
        /* Configure data bus width of CS4 to 8 bit */
& P7 o" {- ]) O        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
6 f7 W2 E; K5 m9 c                (~DA8XX_AEMIF_ASIZE_MASK),
) d' D" g0 c5 G7 d  w' I) S                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
$ A: k+ ^' F# P6 T
& m7 R* V# K. J# w) m+ h: O        /* setup timing values for a given AEMIF interface */
: R( o; s, k+ D7 }. v, \6 b        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
& V! L4 r/ J- H; U                WHOLD(3) | WSTROBE(10) | WSETUP(4);
, y0 {7 D( H9 f3 ~" R* {
8 G$ J0 C% d6 r        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);7 y3 Y# W7 X* l9 {# ?* I
        val &= ~TIMING_MASK;+ K$ x( v/ h$ Z4 L, R9 v
        val |= set;
& @" O$ B/ m- i# x: B2 `        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);8 x* [$ r) A/ m  {- C" p
......
9 U! h7 D& z. l" k7 O8 C4 [}$ [5 {3 \9 o. I
0 `& s. U# E9 f0 \  a( t
而且在Menuconfig中已经对
' _: i+ a) P/ bCONFIG_SERIAL_8250_EXTENDED 设置为 y
8 M4 E7 X9 D% \所以此模块函数是被加载的,! R6 T) U( H. ]% ^6 H+ ~5 |' R
% \; [/ b- ]% u* D1 w
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:2 ?# b8 m! J* G2 _
谢谢了
9 `/ W4 R" }6 {" shttp://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-5 00:31 , Processed in 0.049241 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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