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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5917|回复: 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) {; J- P7 T5 p. f1 o
        /* Power on the EMIFA */
6 X, ]; Z& D, y# H8 l1 J8 X" _        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
- C- F; K" ~1 ]! _. z% P                        PSC_MDCTL_NEXT_ENABLE);9 X5 B/ W7 l: `- D( E  _  Q
$ E: r% D0 I# \9 y, X
        /*selects the EMIFA pins for use*/
$ n% P0 G2 p& ?7 N* V3 N6 N        EMIFAPinMuxSetup();
6 X" I' X  ~" Z$ y; c3 n: U& ~
  V, ^& l( m% \( i$ m        /*set the buswidth of async device connected.  16bit*/
+ [$ ^" `" [9 ?: z. R) H  w        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
+ @. v/ t  R- D                                        EMIFA_DATA_BUSWITTH_16BIT);  e. ~. h& [- Z3 w. @3 y0 N

: T$ U0 q8 S+ S6 A* Z* e        /*selects the aync interface opmode. :Normal Mode*/" a  E7 r# X" l, I$ q- d, `
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,% I) F& A3 j( t
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
$ R' ]) J* j9 j, t  V& h& W3 ~$ l7 z! F" X
        /*Extended Wait disable.*/8 [9 v. z. v6 X
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,% u  r# M; O& ^, {. y' u1 j
        EMIFA_EXTENDED_WAIT_DISABLE);
# q/ w' l( V+ g- o' J2 _+ Z, c. I+ ?+ ?; y" X* p
        /*configures the wait timing for the device interfaced on CS2# u) |- |" G  e# a! k/ \$ T: V/ P
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
! D/ v9 x& a3 r        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,- M' R6 f, |; F1 Z# M" i
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));9 o4 u0 b# l' t) \# h5 ]

% k# c/ S: C2 l9 y}4 J" k# c+ H% A: E( I
还有cs4引脚的复用:
" u& W: I, ~% E) G3 u: H7 A+ PSYSCFG_PINMUX7_PINMUX7_11_8* z5 I6 W, \, H  \# I" v
/ W' U4 J! E1 }3 ?
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?; T9 h0 G% f* q7 O8 D! _
谢谢!% q" B) X# G+ x% |
& T) J" a! s% ^% b- ?# [) V
4 S! B; Q4 l  m" M& Z: R3 D1 e2 K6 Y; \+ m, h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
  r# x: H. T, ~. Z4 C; X' L7 I#if defined(CONFIG_SERIAL_8250_EXTENDED)3 v, ?% \  @9 B7 Q- U( F7 ?
#define TL16754_CLK                14745600) J' z2 ?( O$ w: Y( |; Q
#define TL16754_PORT_N                8; C3 S% ?: @6 [; e
......% P% g# y  K! O0 [
static struct plat_serial8250_port tl16754_serial_pdata[] = {. g% i% R# a- P8 U0 q
        [0 ... TL16754_PORT_N - 1] = {
; I* `8 L# L( M" k5 @7 P+ H                .mapbase        = DA8XX_AEMIF_CS4_BASE,
4 @* S4 {: _) b3 ^0 Z                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |/ |- {' d3 W0 I& C9 K& R
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
8 {6 ]- `+ s, n9 T) R" G                .type                = PORT_16654,
0 S7 x8 l3 l. U/ P* x5 k                .iotype                = UPIO_MEM,; s# X% _5 @' Q* Z/ J8 g9 ^$ O
                .regshift        = 0," I6 y- }! n; L  R2 H' _9 \! u
                .uartclk        = TL16754_CLK,4 u7 J) f7 w- a/ r3 P
        },
' m8 M4 n6 G0 ^; n1 |2 w- d: o# t        {; O. ?% m5 M2 a: t/ h
                .flags        = 0,8 U% z" j. O( R: ]# _# S/ n
        }," a7 T. k) r, s, m, T
};( _- T4 k) {" p

) n7 C: S2 u4 w......9 k- n2 d" L! j0 r" e1 Y
static inline void da850_evm_setup_tl16754(void)
: w/ z1 ]7 f( _" f* E5 ]& H{
0 n( ?) ~8 B! R: N9 L( ^& y......2 Y. w/ M" e) J7 t8 m, s( O; R
        /* Configure data bus width of CS4 to 8 bit */7 \) p/ `, @5 F) ^
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &, Q( w) M4 n) e1 P$ g6 {
                (~DA8XX_AEMIF_ASIZE_MASK),
; A+ {9 b! c- a# y                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
" b0 w2 ~6 z3 u( C% H# }* v1 X: _0 q" T  s/ t
        /* setup timing values for a given AEMIF interface */
) M# i1 U# q7 ~& @$ B, }        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
6 H2 H  e- L1 B                WHOLD(3) | WSTROBE(10) | WSETUP(4);
' j, F, R" X5 q: i, S0 A3 n
$ N% D: J( e6 X& [        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
+ k! L. ]) t, e0 C6 B+ q+ D) |" a        val &= ~TIMING_MASK;
4 c3 @1 v$ O+ ^        val |= set;
* s( Y) r0 i, G/ Y  I' w1 r        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) d7 S/ b0 X2 z9 ]% o; c+ i
......
* N' \& q$ e, _. ^) N}' Y3 F& _, `* R. A7 E2 h5 N# V

: C6 j+ s7 I/ O7 c1 f  V而且在Menuconfig中已经对7 f1 D. P1 ~4 K/ l/ s5 o
CONFIG_SERIAL_8250_EXTENDED 设置为 y; b9 V* I% ?0 k  v" i  N
所以此模块函数是被加载的,( E/ J. F( j* A& _$ Z' X
  }9 m. K2 u  ~: A' y
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:; ?- E5 U0 m$ v& C: a
谢谢了
4 r! K+ X9 ]/ M$ _# m# r1 Rhttp://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-10-16 22:05 , Processed in 0.049991 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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