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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4488|回复: 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) {
4 |. ~2 L( O. b+ @        /* Power on the EMIFA */
3 _/ T$ W8 x, Q" |' v; O        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
$ B, W7 d6 o% M: N  ~8 Y                        PSC_MDCTL_NEXT_ENABLE);2 s5 W+ i; q2 |: T

3 s+ M9 f  U6 O# I  p2 J( o, u        /*selects the EMIFA pins for use*/
9 f2 j/ |3 \; f1 S# Y) x4 F        EMIFAPinMuxSetup();: W7 a" B  F! p0 g  c
9 d8 F9 q/ l8 [  P8 Z
        /*set the buswidth of async device connected.  16bit*/
$ {' Z; u6 C; b: O. j: r0 |( d        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,' _2 P, x6 v. f5 c8 z' y
                                        EMIFA_DATA_BUSWITTH_16BIT);
" v& Z+ D3 z9 q2 R6 d$ ~
+ F. Y3 `1 v8 N( b; z5 [2 D6 N7 J        /*selects the aync interface opmode. :Normal Mode*/! n" H& y( r% c* K4 Q% q
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,) j8 l. A( m# s( e
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);$ s4 g6 a7 y! Q0 z: D3 t  s
" y7 C  K- L- Q7 J* R( j
        /*Extended Wait disable.*/; g& |: e6 {: `3 k
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 }; \$ ]2 M% \( k        EMIFA_EXTENDED_WAIT_DISABLE);
+ Z& b4 z, m0 Q) x6 R/ \: `
+ v3 s9 X2 r6 w3 ?; r: o        /*configures the wait timing for the device interfaced on CS2
! L5 M, u5 \; M" B        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
$ i0 ^' m6 H: V- I# o, y: Y& f  |' F        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
: ]0 r5 [' P* `6 W; ^                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));& R; n' Z$ N" c! m) j: K8 g& [
0 M3 W( s8 h2 n! [$ p9 E. e9 V
}
; \2 F& Z2 ~, C- ]# @  v' Y3 y还有cs4引脚的复用:
/ m+ s$ P% Q  sSYSCFG_PINMUX7_PINMUX7_11_8
+ ^6 |0 c% b8 g4 }  ?: v$ q9 d/ K8 M1 |
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
+ U  u4 d% y+ o+ V8 J谢谢!
- d" S$ \5 ], D7 i; [
+ h0 b. R$ ^7 m  h) I
/ W* i9 u: ^1 Q: s4 W/ P; g$ b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-6-2 08:54:31 | 只看该作者
厉害
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
& k6 L) @  z0 F; S3 ^谢谢了( }9 A/ t" v9 M- `
http://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,( H" {1 U* j' E
#if defined(CONFIG_SERIAL_8250_EXTENDED)1 E  {1 d: h- ?, D  N
#define TL16754_CLK                14745600. d+ q' C+ t* @) R. e
#define TL16754_PORT_N                8" T1 w" N: `0 \6 g9 k" F3 J/ c4 i* G
......
' R; n) h2 z  {$ ~' ~static struct plat_serial8250_port tl16754_serial_pdata[] = {1 v+ y% u% z. V+ k$ a
        [0 ... TL16754_PORT_N - 1] = {* P: [, p  v$ \* H# ?9 l
                .mapbase        = DA8XX_AEMIF_CS4_BASE,/ J6 m1 Z+ b& ]8 T. q# ]( C2 g
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
+ s1 Q/ @# ?5 Y                                        UPF_IOREMAP | UPF_FIXED_TYPE,$ _" T9 c! w- z9 q. t- c( w
                .type                = PORT_16654,* q, |0 u- Q2 b0 G
                .iotype                = UPIO_MEM,/ O; c8 J, E1 q. U
                .regshift        = 0,
- F7 `: {3 A7 f7 k                .uartclk        = TL16754_CLK,' Y* P; M. u4 t& j- f: F1 B
        },) R. @2 `. C3 s3 F9 R9 r
        {
5 u7 y8 Z' b. u! r/ R                .flags        = 0,
5 W- _% d8 N, U0 _& M8 x, r        },8 j/ ]+ e3 F9 h
};
: q" R* k+ B2 ~  a4 C, w4 |. d$ q( R3 v1 v
......
  y; _5 _9 k- H  U% F+ e; hstatic inline void da850_evm_setup_tl16754(void)
4 |* V' C& m+ V* A{
, g- B1 V- g% K/ q......
0 J% p1 n+ z5 v& a1 G8 p( o& G& ~3 g        /* Configure data bus width of CS4 to 8 bit */6 K5 q, g2 w9 j% {+ H/ \
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &# M1 J& J8 o" E9 G2 U1 Y! K
                (~DA8XX_AEMIF_ASIZE_MASK),/ J  y/ ?1 K7 Z6 \; ~
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
4 p& r) g$ Y/ S! X. G/ Q0 E. [& h6 ?; I8 }8 {
        /* setup timing values for a given AEMIF interface */
9 g# o; o9 r% ?* i0 U& ?3 l        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
8 [& m5 U: ?0 Z+ y0 l$ ^* x8 z                WHOLD(3) | WSTROBE(10) | WSETUP(4);8 z7 h9 s" G  k' R3 \
% H1 m7 v7 v! V5 `; A" Z& X, B
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);( E  F. R0 O! o5 b, [/ H: I8 C, H
        val &= ~TIMING_MASK;
, x/ R3 Z) d8 k" R) ]( D. W        val |= set;: [- a% y4 a/ m8 z. g* p) a
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);! B! Y5 o4 I2 u& n4 T$ n+ L
......% q! r8 c0 E5 U# Q
}
3 J$ [3 c  t. [: D9 r1 l7 W- L7 t" }/ V* V
而且在Menuconfig中已经对
  t7 \! t2 `1 ^+ W4 W: }9 t% j7 ?4 m& [CONFIG_SERIAL_8250_EXTENDED 设置为 y6 u+ d0 Y' N8 V+ ]; |: ~5 W
所以此模块函数是被加载的,
( P' ^, l+ m+ W. y+ c2 G* ~
5 ^/ r+ }9 k' I$ u4 B; ~请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-18 16:46 , Processed in 0.039513 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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