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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5560|回复: 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) {
( R: O, J1 O6 f2 I9 ~5 g! W        /* Power on the EMIFA */
2 a! R9 e# s: `' R8 ]- g) a" |, L% M1 _        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
7 R' J- E8 E/ s/ [# Y                        PSC_MDCTL_NEXT_ENABLE);# ^/ {9 t4 ?: u3 q( Y( b2 h: J! M

- F7 z+ W$ @: |6 F/ d- `        /*selects the EMIFA pins for use*/1 A7 p2 u$ u! N: C# y+ j! W
        EMIFAPinMuxSetup();
, L+ g- w: ^/ f1 e' w1 A
$ v) _0 R4 _' e8 S0 o# w" e' s        /*set the buswidth of async device connected.  16bit*/8 F9 w5 O& b, a' Y
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
! Y! h8 l4 T- k; p4 `8 a                                        EMIFA_DATA_BUSWITTH_16BIT);7 J: L3 F; _* Q7 ]: t# U( N
. U3 f0 G  E3 A5 D
        /*selects the aync interface opmode. :Normal Mode*/
5 d! ?" o) C$ g) G% A1 f        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
+ A* j9 r& t6 O- A        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
3 v) i9 j2 l9 `* t- E" b' p' r8 L' `+ [# x. p5 q. \( U, N
        /*Extended Wait disable.*/
% J2 r! }8 C# Y  @  r( ?        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,' ?; C( v. o4 m1 Q4 e/ ~& G
        EMIFA_EXTENDED_WAIT_DISABLE);7 }6 ]$ Z2 L9 D5 _, ^* S" ^; S
7 @9 E% K8 x! ]7 J
        /*configures the wait timing for the device interfaced on CS2
& p! y9 v: V0 ^/ s        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
0 Q' _5 Y! Z9 P5 t9 E6 [$ s        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
. j4 H* v, O' d8 q( [                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
: s) ]: `' O# E: j( h+ u3 e2 ?" q$ V2 ]1 H+ E
}  D& B7 v9 h9 L6 T1 P
还有cs4引脚的复用:; G* O- C1 {' T! C- @$ p
SYSCFG_PINMUX7_PINMUX7_11_8
1 u% \# G. U; P+ k% Y- l7 X7 q9 p. q1 [; h' v; B. C
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?7 g" _* D, @- e6 ]! q* T" h
谢谢!
5 W4 O! |' c$ A; S$ E/ D3 n: ?3 z# R+ i% h5 [
$ c: x% M9 o: g! c* ?" }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,) A' k" ~8 c8 w+ k5 |
#if defined(CONFIG_SERIAL_8250_EXTENDED)
$ n# z0 A7 n) h2 [#define TL16754_CLK                14745600
2 H2 v5 O1 C! j  _8 P- t* g#define TL16754_PORT_N                8
: w5 \- N& A) U......
) c+ H- U! }: Q) I. astatic struct plat_serial8250_port tl16754_serial_pdata[] = {! Y/ G5 s7 `2 x
        [0 ... TL16754_PORT_N - 1] = {; P3 v* \' n1 @$ p) j: |1 q9 T
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
7 `, p3 E& A7 \8 A6 \                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |8 H% U2 ~$ N# W. k, \: X
                                        UPF_IOREMAP | UPF_FIXED_TYPE,. @" M- G8 [. K' @
                .type                = PORT_16654,
( o. _7 W) Q2 e8 F% j                .iotype                = UPIO_MEM,' x3 z' H3 s, y* O- {( o: P
                .regshift        = 0,
4 }/ u/ n' D: I* l1 d                .uartclk        = TL16754_CLK,
, a3 x' A, H5 M( R2 K8 d4 P5 ~        },
6 d& B! P0 F. a- v        {
1 A# J1 P* r5 M7 I- v: H1 \                .flags        = 0,' V4 ^- R% l; X% }$ j9 @
        },3 e" X- }7 Z1 A# K6 W! n
};5 w% x% I. b1 O& h. i
$ Z2 ]' @0 p2 i
......
+ C% G* r: Q) D6 ]& Ystatic inline void da850_evm_setup_tl16754(void)
" K: c" c7 m' c- J( x+ s{
9 ~9 y( p" `5 ]4 w& k: H* z; O......1 O6 f* z- k! M. H( t& v8 ?7 Z
        /* Configure data bus width of CS4 to 8 bit */; z( @* A$ W6 M2 C9 j
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
4 V: f& }" B/ N                (~DA8XX_AEMIF_ASIZE_MASK),
5 p" o" y" L  J' W1 y: g2 u                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
9 a0 H/ L0 n# C' B# r
7 D  Z! k. L; |# L5 B% `& n/ v# G& d! C        /* setup timing values for a given AEMIF interface */
; q/ @. E, D$ s% _6 |        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
6 _; o% g& S) F                WHOLD(3) | WSTROBE(10) | WSETUP(4);6 W' c6 T) H) r3 a
& x$ @! @' e3 ?5 L! _  {6 [
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);3 `' Z% B# M' j+ z6 `7 c5 x! ~
        val &= ~TIMING_MASK;
" H9 }. F* n: o* x  ^) `( X        val |= set;
! l/ t+ y' \7 f& d  u& ]: ~  w( J        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
; ^9 Y4 j2 g5 W7 z......" U. K; o. W% q
}
+ V/ G/ ^$ K! c5 s
+ r5 s" W+ a# _+ g5 V3 \而且在Menuconfig中已经对
7 S$ i4 [% O# |CONFIG_SERIAL_8250_EXTENDED 设置为 y
6 r3 W+ q1 t3 Q# n所以此模块函数是被加载的,
* {# L3 u' S( y1 F, ~5 v* h4 Q2 l$ z3 ~% q
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
, A; o8 e5 c4 O谢谢了
# V7 v5 y2 Q9 n5 u8 @' b0 Ihttp://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-6-17 06:22 , Processed in 0.045750 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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