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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6174|回复: 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) {
2 x+ P( `9 ^  K& Z1 H, b& `+ z        /* Power on the EMIFA */
+ [& c7 R  F! B9 ^        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
6 \' s( g. Y9 k' _                        PSC_MDCTL_NEXT_ENABLE);$ Y3 k- t- n, \$ f
9 u, M! l& k3 C8 x. Z
        /*selects the EMIFA pins for use*/
3 i. n$ d* r. V. T        EMIFAPinMuxSetup();/ Z# Z/ X& X7 w* }3 g) H/ I1 e
; ~4 Q; B  T: ]
        /*set the buswidth of async device connected.  16bit*/
1 \2 H! v& i6 C4 t        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
5 x$ Z& w2 o4 V% _$ ]; s7 C7 s                                        EMIFA_DATA_BUSWITTH_16BIT);; ~# v( S- d0 f( @. \2 g

- J( i: Y" B8 a7 L        /*selects the aync interface opmode. :Normal Mode*/
& W+ }5 ^2 s2 k5 V6 u2 I8 q* z        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 @; E; g* n. {* K: G5 v* T" R        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
) p/ ?3 ?% X# d. P" {0 o% s  z7 w
        /*Extended Wait disable.*/
' e2 k8 q' [/ ^' z2 c        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,3 C5 O5 s8 P+ k9 }% \; _( W: m' f% W
        EMIFA_EXTENDED_WAIT_DISABLE);3 L( T- i# `( D+ Y; v. ]4 a
4 z; o& ^& `+ c
        /*configures the wait timing for the device interfaced on CS2
4 k& z* h; u3 j+ ~, E        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
2 [5 y  C0 `- K; C6 _6 m1 g        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
3 j( L+ N! a8 T8 n0 E                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));( _4 F- r# T: d$ h. ^9 U. O% D

+ w" B! V; C2 W. }}( Q  x# y8 i$ z* J$ `, V
还有cs4引脚的复用:
1 S1 n, q" T' JSYSCFG_PINMUX7_PINMUX7_11_88 H. m5 K+ _0 X5 M5 M2 s0 N; c
7 {. g  z& _2 a$ Y6 q
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
) c, g( ^& ?! T1 `# k, l谢谢!
( x8 R7 x# u8 L1 g3 {( s+ d3 L" Q2 {- I6 J1 E! T" G- E$ m$ Q5 l

3 m# w7 ?/ k% d1 E, N8 K! w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
8 J8 Y3 \( P; A#if defined(CONFIG_SERIAL_8250_EXTENDED)
! q" D' M: H6 ], s5 i% U3 f& ?; @: V) Z#define TL16754_CLK                14745600
" c. h/ M1 C0 l4 t#define TL16754_PORT_N                8  y/ i3 l1 \1 f' y8 a& Z; S
......
" E; O# s" j( ]# vstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
9 X) M6 V+ m9 y" Q  x6 @        [0 ... TL16754_PORT_N - 1] = {
, S5 Q! `( e5 p: [8 ]7 W% ^( L                .mapbase        = DA8XX_AEMIF_CS4_BASE,
, m1 m  j- \, o( d" H: p                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |; V) C) r$ `! X8 D# q3 ^# q/ b
                                        UPF_IOREMAP | UPF_FIXED_TYPE,! m% w+ p- t3 Q% y! N( ^
                .type                = PORT_16654,7 E3 ?) m6 ]" g" t: e
                .iotype                = UPIO_MEM,
' C) o, n4 p6 z5 U: N1 o                .regshift        = 0,
  i1 C9 X' a: b" t& V                .uartclk        = TL16754_CLK,
8 o8 g$ J  r$ _% ^2 z2 L" O        },
) _* b) D; y2 g0 \, q  B( l1 n% l        {5 Y. }9 Z3 @6 ]$ K  `
                .flags        = 0,
4 z  {1 I& i# s3 `; O; G        },+ |: r9 v, s# R  c. m) h% S. J7 P
};1 T7 O6 X, @1 U* p0 U0 R

. V9 m# S" z4 w' j2 G......
/ g# q: V! b6 f) J5 V3 E/ d" rstatic inline void da850_evm_setup_tl16754(void)
& Q0 i: o8 P0 E{
2 _5 s- b4 T2 n& f9 q. T......
5 e. y, S1 P. U        /* Configure data bus width of CS4 to 8 bit */' Y* x" Y8 N5 G; g' F. Q
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &5 j5 n  w0 C( E2 |3 b
                (~DA8XX_AEMIF_ASIZE_MASK),
; q) m( `8 W( @                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
9 z' W& F% I9 |/ F9 [$ L9 C% C) l
- _2 T5 N2 X$ m, n4 F7 i        /* setup timing values for a given AEMIF interface */( i$ v  M+ e8 K# W, `0 O4 a8 y
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |4 J4 S% \4 a. |! s
                WHOLD(3) | WSTROBE(10) | WSETUP(4);) B' ~2 J& b1 d) J/ G6 N
1 F+ W' r9 Q  ~8 r0 D# w6 ?7 T" `) U
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
& {' f8 P" I" [0 f  w        val &= ~TIMING_MASK;7 }' b, h& [% I2 R4 P0 p
        val |= set;
; m9 i2 U; J5 P: f2 i        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
" j* V6 v$ ]. }' }; v......+ [" f' S! V* [" V( @6 z; }
}. U4 ^, n4 U2 B% @
/ @) P6 }. a1 S3 c0 J! U' \2 k
而且在Menuconfig中已经对
! X3 i9 A2 k5 D0 eCONFIG_SERIAL_8250_EXTENDED 设置为 y1 m. P$ @& @! S
所以此模块函数是被加载的,
4 v; r3 N' q( f( R' O  d5 d& n7 ^  j1 x9 U2 k5 R
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:% ^1 l4 g7 I# ?8 U+ ^1 y
谢谢了  x: i' S0 ?5 j3 G# m
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-12-15 05:43 , Processed in 0.038500 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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