在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6477|回复: 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) {; p# q$ W2 m, M1 i  Z
        /* Power on the EMIFA */
& N6 u+ b8 L6 G6 I        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
" F7 |7 B" @# U% u& _5 _# \( A$ G                        PSC_MDCTL_NEXT_ENABLE);/ W3 z0 z+ @3 f
( C; c7 k6 x0 k% M$ ^! ~' i' m
        /*selects the EMIFA pins for use*/0 ]! P# r" p' N# Q
        EMIFAPinMuxSetup();/ N6 g$ N6 ?/ _6 ^$ V# G8 F" F
: R6 z, S, C# Y" Q& W+ \1 k) n! _
        /*set the buswidth of async device connected.  16bit*/1 @, y4 {# @) M3 x
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
; v- R! \8 ?( y% y                                        EMIFA_DATA_BUSWITTH_16BIT);! m  T$ q7 l% b. C0 [

$ Q. [0 J9 R; w: r% R! w* H        /*selects the aync interface opmode. :Normal Mode*/
& v. K# _% x# I- A! C! L$ v+ e        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
) E8 m, g* y# y. w1 g5 p        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);" Z& p% m. {/ D, I

% v4 A: q0 G' Q        /*Extended Wait disable.*/) x/ _  X; b2 H! J
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
* x4 G+ c7 `4 f        EMIFA_EXTENDED_WAIT_DISABLE);) u  c; Z5 G) Y
9 G- Z4 U; p. c4 W  p1 @
        /*configures the wait timing for the device interfaced on CS26 b& S, F6 V( _9 E" _: J
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/$ g$ e. G. W% B+ [8 ]9 l2 s" v  A  I% d2 F
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4," r* D, K: O2 i+ G  ?
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
, o" P5 H. ~5 c0 G6 f* i4 |+ ?* I1 i8 X1 @: u/ n6 p0 {( H
}
. ~; n. q6 x5 X8 g8 h: D* [3 C还有cs4引脚的复用:5 H0 B% w- m! i
SYSCFG_PINMUX7_PINMUX7_11_8$ r1 |: F' u- I( q7 w6 V2 ?0 W

+ N3 b) e  b, ~/ q. f最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
% a* z, t" g7 [/ `2 E7 @9 N谢谢!% U" C! {& d+ }+ D5 R

* `  k- [5 E& m* t9 ]  L7 Y. P/ ^) j. }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
+ S3 a+ C6 T/ j0 T+ n8 [* m#if defined(CONFIG_SERIAL_8250_EXTENDED)( Y% b4 f+ _, f. t/ K+ I$ Q
#define TL16754_CLK                14745600; H' X* D8 M1 n, z& p! @7 q
#define TL16754_PORT_N                82 d" q6 D" y2 i  U4 j7 q6 Z0 j
......  B# z5 Z/ F) I# K0 ]- k$ T: n( i4 ]
static struct plat_serial8250_port tl16754_serial_pdata[] = {- ]" @& W  T( T8 u  j# S- k* g8 @
        [0 ... TL16754_PORT_N - 1] = {
4 ^* ?3 H7 [. U9 l5 q0 [+ _4 s                .mapbase        = DA8XX_AEMIF_CS4_BASE,
" [% Y# ^" [1 o" c' h2 J                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
+ b0 G. E$ t2 d3 G. ?' b/ Z                                        UPF_IOREMAP | UPF_FIXED_TYPE,& W7 k; K+ Y4 e) A; {
                .type                = PORT_16654,
# F2 Z8 |5 W( U0 n3 S                .iotype                = UPIO_MEM,
  h, K+ k+ t! ~- }0 X0 Y                .regshift        = 0,
* s1 }% g5 z- H) n                .uartclk        = TL16754_CLK,5 r  f, {- J* v. u" e' u! W
        },. O! a( J- |% T" c& K" X9 r& o! }+ P
        {: q. g% m- Q! m. P
                .flags        = 0,
, P4 z; |" X. K8 |4 V        },
: `" X. {1 n0 `8 G2 w+ m4 ]};
% o' \3 p  y0 c/ {0 [7 h8 ]3 W
! _( m9 m9 L! U* ?. |7 x......5 R) d! F  S7 ~# i  F  I
static inline void da850_evm_setup_tl16754(void)0 T0 z- c1 h* `0 M7 j
{8 O/ Q( x3 {/ t; D0 r) X1 v
......) ~- |, m0 r7 q1 M# V& U1 v/ w
        /* Configure data bus width of CS4 to 8 bit */
7 s+ A& g; p, T        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &, b# F* z% W9 |( c) G8 |7 E# u
                (~DA8XX_AEMIF_ASIZE_MASK),! V2 b; q1 m# i0 f& Q9 Z
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
+ P, K+ [6 \- h8 J/ R' k8 S+ D
        /* setup timing values for a given AEMIF interface */; b+ X" a! K, N# ?
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |( C. B% z5 h: \! D# |% [2 Q
                WHOLD(3) | WSTROBE(10) | WSETUP(4);: ^- D3 Q1 B; ^

# K6 `& M& @! v9 E6 J        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
: F& L5 m. d' P% l+ ~* E        val &= ~TIMING_MASK;. {) b- b, I8 G/ |% ?' A
        val |= set;
2 a& U$ d4 V% o        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
) m5 F* a3 p  L......
: n, U- p! B) F# f}- Y2 A. i2 p% J  q

# ]- q6 j% F  S7 J3 l% Q$ k. j. l而且在Menuconfig中已经对
2 o1 Z9 w6 \& m2 l) p1 H# _CONFIG_SERIAL_8250_EXTENDED 设置为 y9 B4 N3 W% M- d4 X& W
所以此模块函数是被加载的,
- K$ Y$ ?7 _' A' o0 l& |+ L# l4 e3 T: G% |% c
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
& a: L4 B% E2 r5 F$ m' b+ [5 b谢谢了! N; n: Y: G1 b' R
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, 2026-3-17 07:54 , Processed in 0.040254 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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