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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4437|回复: 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) {
! ^( N. _; n& y& @/ f        /* Power on the EMIFA */
3 [6 ^0 r! B; ~- \2 ^3 |' b& _        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,% t( W7 }: q! X* ^; g2 o
                        PSC_MDCTL_NEXT_ENABLE);  {/ }0 t9 c' K2 S! c- ^# ~& D

6 r2 ?5 s& L$ k2 ?5 T" a        /*selects the EMIFA pins for use*/( c9 D9 {$ k9 Y4 w# e- X
        EMIFAPinMuxSetup();8 `6 E7 c7 z5 }' k7 ~" r2 a! t

; k3 A% v0 O0 v& o/ o        /*set the buswidth of async device connected.  16bit*/
. W0 j2 ^+ F6 e6 N& O, g        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,% |6 u( k# N6 T5 k
                                        EMIFA_DATA_BUSWITTH_16BIT);
$ i1 Q; n& ?+ X. P8 I- {4 `
: o: I+ \  r9 n/ p+ h/ @+ ^        /*selects the aync interface opmode. :Normal Mode*/8 e  p9 r2 D8 x/ y
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
. k: d6 n3 n" r/ K' a+ q# U5 s$ Q        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);- v# H6 ~5 O. G) D% v; e1 d3 k/ K/ m
: E0 {7 M8 E/ V6 `' ]+ @
        /*Extended Wait disable.*/
# b+ J7 ]5 @* f, g        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,' }1 p. q% V3 B& k8 j
        EMIFA_EXTENDED_WAIT_DISABLE);
/ ]6 I& ~; Q# ]5 V3 Q* Q( C  x  F/ s% g1 z/ q8 D" d9 {0 n
        /*configures the wait timing for the device interfaced on CS2- b9 M: V: _" O4 y0 d
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
' }. C! }* G; E4 o; U. ~/ A        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,: r' J4 `; {* ~; M. P
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
3 o& S+ A0 o" R/ f0 o$ r8 H8 r2 U
* V! x" m. x9 G}/ d4 a# K+ @/ X# L& B" @
还有cs4引脚的复用:+ I, d: h5 }) N! Q
SYSCFG_PINMUX7_PINMUX7_11_8
& g: x( J6 M0 l2 K  B: H2 H
- D4 s0 N) D2 K6 {% L" ]1 J5 h5 Y最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
# M% x$ G% A* z谢谢!& s- J+ p. e5 _* v/ A" l

- p. W, K0 U" q% Y4 Y/ i0 t  o, F9 t5 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,. t8 u4 M8 C3 p' K% V
#if defined(CONFIG_SERIAL_8250_EXTENDED)
! P$ \) j: J% c5 t#define TL16754_CLK                14745600& ]: a  w2 \5 t, j+ W
#define TL16754_PORT_N                8
: z5 E) @' u6 L/ m! L) X7 i......
4 [* ?8 y8 U) Dstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
+ l  y/ K( e, I1 C- M7 @/ L" K' S: X        [0 ... TL16754_PORT_N - 1] = {( |4 X* z8 X9 o5 ^# ^' J
                .mapbase        = DA8XX_AEMIF_CS4_BASE,# t* i1 C: D- ~3 Q2 r
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
7 v, g7 o0 a/ D+ B- c& K+ I0 _                                        UPF_IOREMAP | UPF_FIXED_TYPE,
+ i* I8 y2 t- a8 }                .type                = PORT_16654,
7 |; B6 j7 S3 `; X3 l: e                .iotype                = UPIO_MEM,0 N7 f( j; ]  M( k* }. B
                .regshift        = 0,
$ _: G* D9 Y: R4 L+ X; A0 o                .uartclk        = TL16754_CLK,+ J4 H; ?2 N. v- g9 y3 n
        },
8 y5 n- }" J$ z- C        {
0 J' r' y' n+ U( Q3 i                .flags        = 0,
3 e7 W) F8 j3 G1 i, L' m0 H        },
4 ^. u' c+ d( i};
" l, R2 W5 g# a% U+ C- Y; _0 }: s- e- R. V( k' f) q
......; V6 e9 b! `9 g0 R0 e+ `: b
static inline void da850_evm_setup_tl16754(void)
3 E) p- W0 H+ y{
" |4 ?4 o" {/ i  U( w$ d3 ~4 r) S3 d......
( ]( a6 r: H+ S/ X! {: ^) u8 e        /* Configure data bus width of CS4 to 8 bit *// S8 x; _* d, H* W8 `4 N
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
; p% @$ ?0 u# O                (~DA8XX_AEMIF_ASIZE_MASK),
: P& X) l9 \+ B+ Y; Z                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) }1 [0 L: l7 K

- H8 B5 [- \3 |. y        /* setup timing values for a given AEMIF interface */
- Y0 `' M7 _7 N4 t        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
, f1 H! ^6 O7 Y$ n4 O                WHOLD(3) | WSTROBE(10) | WSETUP(4);, L) J9 |( V% J
) M* J/ e: s, r: v. N
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
( X1 z' W8 }/ h: H  {        val &= ~TIMING_MASK;; }% w( W4 g+ z( K; x7 H
        val |= set;
7 U  f3 n) P: s- j' h1 A2 V: f, S% {        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
, ^) G/ d  j/ l......1 i; R4 q$ ~0 C( [% g
}
; A; E7 M' I2 D( y1 S$ e( Q) j. E1 t1 k  y, h+ }
而且在Menuconfig中已经对
6 c+ ~: p3 s9 C2 hCONFIG_SERIAL_8250_EXTENDED 设置为 y
! h' w) j6 l! b! w5 |$ r& O所以此模块函数是被加载的,
0 H' J: [1 m) K; W1 M7 f- H
' N& Z, Q; C5 _- Z; d8 q3 Z; |请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
/ _5 |8 \! V8 n" V) P谢谢了( e  N- r4 H. R- [2 s; G" Q4 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, 2024-5-5 02:10 , Processed in 0.040232 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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