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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6023|回复: 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) {
$ c- J( V: D% Y" q6 k+ P; g0 o) ?        /* Power on the EMIFA */
$ p  `  j* j. O$ [9 r1 [, N, C        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
9 ?- O& F- _" |8 V2 h' G                        PSC_MDCTL_NEXT_ENABLE);1 c% ^/ f) |5 a, }7 @0 Z) {# o1 _
, w( K! Y  K+ ]! |7 T% o+ a1 [% h
        /*selects the EMIFA pins for use*/
* T7 ?! T8 g$ l2 m# @  j        EMIFAPinMuxSetup();
$ }- k( Q& n. C% n5 X  J6 m7 c( x  q! i9 S* O. ~/ E- I0 F( G
        /*set the buswidth of async device connected.  16bit*/
  d/ U0 D- @2 E6 o% ~        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
( T" m' U5 ~5 u                                        EMIFA_DATA_BUSWITTH_16BIT);
8 b" X' E/ |2 o0 H- U
; u% J3 U2 l7 I3 c) l        /*selects the aync interface opmode. :Normal Mode*/
5 E" ?1 t* Q: |* B. |; `        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
  c8 ~6 _1 n  }! }# f4 g        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
+ @, J5 D$ f: ?: N5 n" `1 x
/ M, x; b9 d; m3 M        /*Extended Wait disable.*/1 n& k% x% i! E0 j3 P
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,5 L6 i4 I% r" B* q
        EMIFA_EXTENDED_WAIT_DISABLE);# q  T. U+ u! F# }

; L) U1 i6 }( U        /*configures the wait timing for the device interfaced on CS2
/ r# n0 A' p& E9 c        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/8 g0 j4 e4 x6 I' X9 v$ f& i
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
8 X* P# z; ]# G$ o/ {7 k: |                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
% u! x6 z2 B' K& q
# L: s' a( e! q/ R* ~}
* o* B( \! L6 @! V( |还有cs4引脚的复用:
3 M; }0 ^; ^/ A  g9 k" \' o# D) y4 wSYSCFG_PINMUX7_PINMUX7_11_8% ]4 N. @* R0 h; |5 N

2 |. Y, j  N, T  ]+ A# J1 `7 k最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?: R9 z0 a  }+ e8 r/ g
谢谢!
: b4 g8 O" V' w. `5 r- \
' ?) X2 W; p( d3 H5 g" ?8 o3 f# k. @4 `. Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,* T% a/ N2 ?* \) S% W+ T6 X
#if defined(CONFIG_SERIAL_8250_EXTENDED)
1 o0 C. L4 u; o, N% m#define TL16754_CLK                147456007 R1 f% Y6 t. `/ C- T
#define TL16754_PORT_N                8
( W4 N$ d; w0 b& P8 |3 Z& m......
* Q+ X- d! ^2 a# istatic struct plat_serial8250_port tl16754_serial_pdata[] = {
4 t1 O' h, {( ]& f& P6 o        [0 ... TL16754_PORT_N - 1] = {
# C/ q/ {- Z& j                .mapbase        = DA8XX_AEMIF_CS4_BASE,
8 q+ |! i% d* U5 e& q                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |( K, ]4 J' L' q- j2 A. S
                                        UPF_IOREMAP | UPF_FIXED_TYPE,+ G# @8 y3 V, l4 J6 V% Y" g  a
                .type                = PORT_16654,) A) Q# o, D) q5 M( Z* S
                .iotype                = UPIO_MEM,
, e' g- Z* i9 |, c. M! w                .regshift        = 0,
4 c+ _% Y  e. i9 k                .uartclk        = TL16754_CLK,: d6 o' `) N% Q+ x
        },
" f; I  }0 G, A+ K2 ^" Y        {, Y& r  i; X4 Z! A6 D
                .flags        = 0,! n' I. |# b8 w! F
        },+ F& ~1 j, D3 s
};
% x' G& g6 H, W3 v" K8 Z( Y( m8 N, e
......
% J5 ]* G; O' J4 {0 r& @static inline void da850_evm_setup_tl16754(void)
" @" n  ]2 G0 c) K- ~$ A) P{$ E5 u8 s1 v; c/ v7 N. }
......% j* W0 B. X6 j6 }
        /* Configure data bus width of CS4 to 8 bit */
3 M5 j0 A" [% w9 I2 Q8 @; l% d( g        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &( P, C. M! P$ X- L, f
                (~DA8XX_AEMIF_ASIZE_MASK),# Y1 p/ }& M  E! ^
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);, _" q- ^1 o; _4 {) S# a9 N  U
6 D+ w5 b/ q6 j2 m
        /* setup timing values for a given AEMIF interface */
3 u; k- z7 T8 G$ @) l8 G" K        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
% j, ~3 d. S; I" Q( _- l                WHOLD(3) | WSTROBE(10) | WSETUP(4);, c+ I0 H2 d5 N9 W# _) n( H- h

  H3 Y3 v' f# \1 ?7 ]) C7 ?# b  ^        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
5 Z" x. P, o1 n0 T" w/ z        val &= ~TIMING_MASK;
8 _( d! Y4 f/ y        val |= set;' E9 T6 {2 ^- O& G
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);4 T0 V  f* U+ h* h; |- x: n" v
......0 \8 ~2 ^, c2 Y" u% ?5 {- ^
}
9 j, \- N2 [& r: k/ q1 b( j
: a( K  B# x1 E而且在Menuconfig中已经对$ n8 q5 R0 H& {& I, V) B! u5 H
CONFIG_SERIAL_8250_EXTENDED 设置为 y( V# R" j9 e& S' c: N! [' c  ^& y
所以此模块函数是被加载的,/ u; [+ q, L* R  c' E5 g
- X! [* Y0 F# [# w, [8 _
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
9 P  i& ^; m0 w4 c5 l/ s谢谢了7 Y% S3 J- I0 G9 a- N
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-11-5 12:43 , Processed in 0.039537 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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