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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4560|回复: 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) {: i$ k" I# f  e. @
        /* Power on the EMIFA */
, c0 h3 O. T! I5 W; }# e) C        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,, U1 Y6 Z" x- ~% E& m7 B( W
                        PSC_MDCTL_NEXT_ENABLE);
' N& \9 ]! a% S, Y
% _/ @$ }# N: k; @0 G2 `        /*selects the EMIFA pins for use*/* N+ N9 @! i5 s- ?* N
        EMIFAPinMuxSetup();
$ ?1 I: P4 {& x" E# C/ l) K
) A* T% w8 Z$ x& C9 _$ l        /*set the buswidth of async device connected.  16bit*/
6 b+ P" R! [! {% \* w2 ]$ S! D! ]9 x        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,/ Q" q! y4 Y" Q( W1 A- K
                                        EMIFA_DATA_BUSWITTH_16BIT);
. h6 z7 x5 S# g6 z% w1 c7 o" \0 ]1 j7 o0 w
        /*selects the aync interface opmode. :Normal Mode*/
* f  C" r; K! q2 [        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,# ~5 \8 `: U/ K' P% O: E: D
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
% O1 h/ i8 ]: r- |2 m3 _
+ r$ q2 y+ b! k9 R3 Q8 B  z        /*Extended Wait disable.*/
, R8 c, d2 b1 J1 q; Q& x        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
4 N/ s% F2 J3 ?0 F- m$ a        EMIFA_EXTENDED_WAIT_DISABLE);
$ ~- {" j5 L+ o( C3 Q1 H; ?% y6 p' F' h& e* A" O/ q# U! d
        /*configures the wait timing for the device interfaced on CS22 h9 n2 h3 b0 w& L$ w; H
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
4 N  b% `1 a7 s% h- p- S        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
/ J) e5 c+ l. `                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
6 r" T& H% Z% ]6 g" o  p7 N# h% w; `' R6 k5 B. P8 ?
}
# D# b0 h" A  ?0 n2 w! I还有cs4引脚的复用:- b: D) v! B; _8 _
SYSCFG_PINMUX7_PINMUX7_11_8  T! a) w) i4 |8 @. Y" ^& ?

4 I0 T' O. M, s' H) q: h9 y最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
- e3 F( g& X" c# S, V) `- \! s谢谢!! Y) @8 g- [2 G

+ Y4 m" {0 O5 S4 f# i( a: X9 c
; V) F0 H% c  k% f
分享到:  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 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:7 c3 d0 N0 u2 e1 L
谢谢了3 `  N/ w) |7 v# Z4 b
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的操作,
$ F! W% H. q3 y6 h4 h! L/ x#if defined(CONFIG_SERIAL_8250_EXTENDED)
+ }: _, O% F( M) {# P, _9 w#define TL16754_CLK                14745600$ w$ g$ @- u$ Q
#define TL16754_PORT_N                8  G; a& \( `( W; Y8 g
......
8 R% ~" g$ [5 Fstatic struct plat_serial8250_port tl16754_serial_pdata[] = {/ @1 ^( o9 ?) k' K9 x
        [0 ... TL16754_PORT_N - 1] = {
& j4 `. o" ]  F7 y7 y, l! S, O3 E                .mapbase        = DA8XX_AEMIF_CS4_BASE,7 q6 i9 m- P( V# G) K4 Q
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
% o, \- y( W8 v* f+ H- }" \                                        UPF_IOREMAP | UPF_FIXED_TYPE,
5 }* l- e& D5 O" _0 x7 @                .type                = PORT_16654,
+ [( F; L7 N- w6 l0 P+ C                .iotype                = UPIO_MEM,5 _  T% D. X  `
                .regshift        = 0,3 u8 T, e& p1 A
                .uartclk        = TL16754_CLK,1 D8 l8 F: r! d. i9 y/ f2 B, y
        },
+ A/ ~. v0 @$ V' a5 @1 O- r: ]        {  K6 V1 E9 e% P1 P% p& F
                .flags        = 0,2 i1 z- H( O# L3 {
        },( R, x: D: m5 A8 T; Z
};
* z1 g/ j% Z9 p* J: y" f
, n/ u) Y* M+ e5 K. N. D......$ }% D1 s/ o0 b7 r# E. D2 W
static inline void da850_evm_setup_tl16754(void)8 F+ z3 h, C; _: N: I# v
{
* ~; E! [( A2 C5 X......$ R; A1 I( E4 w# [4 Y! l
        /* Configure data bus width of CS4 to 8 bit */9 p. q' z3 f$ @( O" u$ Q- \
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &: E- Z% j5 ~( a3 L
                (~DA8XX_AEMIF_ASIZE_MASK),
$ s3 a7 l, g, y; W                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);; I' ^, G  B/ B- C: R
" A8 c6 X9 X: L1 A7 Q! R
        /* setup timing values for a given AEMIF interface */( F* ~2 p. G0 ?1 t  r6 t
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
+ L2 ?" Z, e) S4 Y  x. s                WHOLD(3) | WSTROBE(10) | WSETUP(4);
5 p0 G6 S. E4 R: q4 J  [; k
, |5 E) P/ V9 d  y        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
: O# W) N; p# n  f        val &= ~TIMING_MASK;& P+ I% j) p2 \
        val |= set;
9 K6 ^) K. ?" X        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
  {. N; L# l! z9 E' e0 W9 V......  D  {3 N6 H1 F1 j( w1 n; I5 p
}
/ j2 D8 L5 v& W! x4 _# _
* P7 H/ ^- u* ^; u而且在Menuconfig中已经对
. y, K: P8 |* y* bCONFIG_SERIAL_8250_EXTENDED 设置为 y( S/ }2 ^, m; x* d+ L
所以此模块函数是被加载的,7 M" d# q0 S+ i3 ^% m' D' x
% M4 }& d% Z) {; w, g: E  Y" F
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 13:14 , Processed in 0.038072 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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