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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4499|回复: 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) {
: [  q. ]" V" m+ K        /* Power on the EMIFA */
$ q% I) m, p9 B  r! M* V) |; E% ?        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
7 r$ f! G" B- y. Y- W+ [% ~! k                        PSC_MDCTL_NEXT_ENABLE);
2 m# ?8 V7 A2 X0 M3 E4 _8 N' P: k' u! L  r! g8 [5 h  P
        /*selects the EMIFA pins for use*/4 A/ Q$ E5 x4 g4 e+ G
        EMIFAPinMuxSetup();
7 z# v' C1 j. i) ~* n
  K9 j4 i+ _5 \6 J$ y& I6 p  ]        /*set the buswidth of async device connected.  16bit*/  d3 q6 Y5 Z, H( _
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,8 O: z% T; k7 j/ \
                                        EMIFA_DATA_BUSWITTH_16BIT);2 I/ N& ]# k9 I3 Z. V

% ^  b6 X0 c8 ]  @        /*selects the aync interface opmode. :Normal Mode*/
# T, i" b" B! \" o        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,# k, b. X" F6 `9 U1 t/ t3 e
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);, R. K! J2 h+ E( b  {
% q0 V! Z( E) ?  k# y' n
        /*Extended Wait disable.*/0 U% L; t# Y9 @3 ~+ I( }
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
1 D" C4 T2 U- M/ A* D$ @( w3 G        EMIFA_EXTENDED_WAIT_DISABLE);
; Q' a4 L$ j; u3 E+ p/ s
4 O: u9 E6 E7 }+ x        /*configures the wait timing for the device interfaced on CS2) J% j* o$ t+ L# i9 e
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/6 I( M  [1 F- s4 ]8 M
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,& a) e! `+ r3 Y8 i0 f3 ]
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));+ J9 L  X8 w' N$ Y  w; y

* t/ c! J& b- n+ a}$ b, V- b# h. ?3 ]  F* a
还有cs4引脚的复用:
9 s3 |0 O# F( \/ D7 ]0 MSYSCFG_PINMUX7_PINMUX7_11_8- k$ C! H. x. B8 P" j; J
9 y& f( m: h+ \& W' J/ d" s
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
; q. I2 p- p3 ~: ~1 }! Y谢谢!
: ^. n8 D7 P/ k* o" o- V+ C* ~) [$ }7 y
* g+ a- Z) V" I5 Y  u% v+ _! X2 i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,+ Y$ R; w/ P1 _2 v8 Z
#if defined(CONFIG_SERIAL_8250_EXTENDED)1 d& ^; U. t8 m
#define TL16754_CLK                147456008 Q8 d8 g; n% v+ V! I
#define TL16754_PORT_N                8
# x+ _# G. V5 u% c; f......* H& _! E+ w+ s
static struct plat_serial8250_port tl16754_serial_pdata[] = {
# a) f) V  C6 y+ E* o% D. a        [0 ... TL16754_PORT_N - 1] = {2 V1 h3 k2 o8 S; R8 O6 b% e
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
- H+ n2 s" g! Q5 T: ?8 S8 u                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |1 d' i/ i& v2 _2 t8 _: U
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
( @3 ]# C; M; B1 Y4 b                .type                = PORT_16654,- ]' ]1 U( H' c8 K. m
                .iotype                = UPIO_MEM,
1 \* M# D9 k% A                .regshift        = 0,6 Q; w. ?6 s$ [
                .uartclk        = TL16754_CLK,
: r* }0 Y6 H& P  L. d$ z        },; g& j& w( R( Y
        {* C0 e, T7 @8 A: _+ E0 D2 y/ j& A" }
                .flags        = 0,
& O0 G" X" o  i/ v        },% }0 A  I6 M( i) O7 @, \
};
# K' \7 G4 H: c7 c) x9 v0 D) F3 O# X  S1 p
......
. G: T. d2 S# `; k" Q! Z/ pstatic inline void da850_evm_setup_tl16754(void)
  v* w3 i4 P( o: h! N% E, ^{# g- x2 l- i+ O9 R
......
, W( E' ~3 [7 S$ z# V' N" I+ a- U        /* Configure data bus width of CS4 to 8 bit */# p8 v- ]" K* @4 v' f
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
1 n" R" J( @  _, a* T( ?; k; T                (~DA8XX_AEMIF_ASIZE_MASK),
: D$ i, w8 d2 O9 P3 O* m, V                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) F' f% T$ Y0 ~% \" y, w  Y
9 T: W( Q% f5 i
        /* setup timing values for a given AEMIF interface */
$ M1 A4 O, F( N3 T4 V& q        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |2 u3 J8 J3 E, v3 L% _% I" Y
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
5 s! U; i' J8 n# Z6 Y3 a5 m2 i7 W/ ^: u; D9 L
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
* e! {! h; j9 P" ^. u% ~, O8 Z5 \        val &= ~TIMING_MASK;+ H. }# J+ F! p3 r
        val |= set;3 U0 n: N* l' }/ [  x- M7 W
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);8 @9 `! p% I0 z2 ~1 Q+ u
......
( t! E+ J* c' P$ u* C}
# A1 j$ z$ v, R& D2 ?# i, \' g9 w9 F  [. E' D
而且在Menuconfig中已经对
/ \- I$ N) B% @2 a' V. s9 WCONFIG_SERIAL_8250_EXTENDED 设置为 y
1 `3 z3 n- H3 u- p7 z5 U, f4 P所以此模块函数是被加载的,
) ~" k% k/ _# J* `2 Y0 {( q
8 a/ b' T$ w% l, L2 E# x; p$ {请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
8 \8 ~5 _1 h' h谢谢了- W. F9 @, Q: z2 G& e
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-23 12:30 , Processed in 0.044083 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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