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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6308|回复: 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( W3 h6 J  m! [2 ?0 r4 p
        /* Power on the EMIFA */
! ?' }2 Q! s- C$ O) ^! W3 `        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,$ t% ?& L6 Y7 L7 F* e
                        PSC_MDCTL_NEXT_ENABLE);6 I: i( U) q/ y0 D( j
$ m; v  R+ S% |0 R: }& W8 e6 j
        /*selects the EMIFA pins for use*/" ?3 ]# Q+ `$ [& q
        EMIFAPinMuxSetup();$ m: d3 d8 a8 k! Z3 c. w
% T0 |5 y  _4 a
        /*set the buswidth of async device connected.  16bit*/
. a  `& L" @7 N5 D. b# V2 }4 b2 X& M        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,2 X; ~2 M6 L. m
                                        EMIFA_DATA_BUSWITTH_16BIT);/ S2 k" H: P' k" E- v5 U

6 a1 l. Y2 i7 s( ~$ i8 v; d0 b        /*selects the aync interface opmode. :Normal Mode*/
$ v) e2 O! m3 x        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
1 t+ Y2 Y8 N0 j; P7 ^        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
9 b, e1 C' u/ G3 o, e4 y1 Y
  X" ?6 i/ V" f        /*Extended Wait disable.*/4 M$ ?% K1 z7 u, `/ s' P
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,: @/ H* c; v: K
        EMIFA_EXTENDED_WAIT_DISABLE);
5 T0 A1 X1 O  O( b! S5 \( Y0 ]; v3 V' {# n5 a& ]
        /*configures the wait timing for the device interfaced on CS2
" v9 V1 i7 l9 R9 }$ }5 U/ [0 T  j        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
% f8 |! Z" F8 R5 D% y+ H        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,2 G+ ~( ^# e3 k- i) ^
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));8 @: \! G( V7 U% {; l/ ~
4 t+ z' g, [/ d7 F0 K' p- a
}
) O. ]5 U& `% [& k1 j还有cs4引脚的复用:
% a: r# T  g+ g$ x2 sSYSCFG_PINMUX7_PINMUX7_11_87 |% |! M2 H. ]$ r: x

' J! R" \/ \5 p1 o- i8 N0 {最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
0 Y3 P' |# z* ^; M: ?- u谢谢!$ z* [8 z1 a2 _2 S5 d  ^/ ]
# @* `4 T. Y! f4 l5 @
! [1 i  `4 S! Z( i; h5 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,( Y6 R) T: {  u$ t% a
#if defined(CONFIG_SERIAL_8250_EXTENDED)
' `/ r( M7 w4 ~$ k3 j#define TL16754_CLK                14745600) O" R! x) I) R. D, u( A' i! x
#define TL16754_PORT_N                83 v' O& d' G3 b% S
......
, i/ L" b& Q. M8 H2 v6 M5 U5 Nstatic struct plat_serial8250_port tl16754_serial_pdata[] = {% x/ }2 }( [7 |% f& ^( ?; A
        [0 ... TL16754_PORT_N - 1] = {
6 H! {! u; a( R# D& ~                .mapbase        = DA8XX_AEMIF_CS4_BASE,& p' Q; W$ O+ E" l
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |1 W7 K. ~) k" y% d
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
4 s# @: e1 C; y) J- W+ _                .type                = PORT_16654,
) N# j0 L; G1 {0 T: a$ s                .iotype                = UPIO_MEM,
( V+ S$ Q9 [" L6 H7 o% k                .regshift        = 0,7 c, F! p- v9 ?, U  M
                .uartclk        = TL16754_CLK,
# i  I& L: d; J% f& x, k8 }        },
. X) ]0 ]: B* I  W( f+ V! t        {
: B! \  B* g6 ^                .flags        = 0,# q; j# f; ^; L9 p
        },
% N. _4 h- |6 P" l3 |' P1 ]) K  U};
6 `4 C( g& E, v' a( Z
( C% n! z, o7 Z5 q% y8 D. Y9 H......' U9 r& q" V: Q3 W
static inline void da850_evm_setup_tl16754(void)
0 G2 m8 \0 G" N7 c& O3 ]& P9 y{
) U6 F: J  [. r- D" F) U......6 u. g! t4 d: a. e; z# z
        /* Configure data bus width of CS4 to 8 bit */$ k( ]$ e0 A4 [  E+ s
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
; Q, s" [- T8 H: h9 S# {  X4 U# `                (~DA8XX_AEMIF_ASIZE_MASK),, H) B9 R7 h( q
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);8 i4 o6 M1 w3 e3 G, j5 `

1 ~; l; v3 {) g# {" ]        /* setup timing values for a given AEMIF interface */
) ]8 U- p5 k6 S, f2 S        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
; t, [2 F7 N$ d: u$ V  t                WHOLD(3) | WSTROBE(10) | WSETUP(4);
9 Q0 h& b. V( C% z5 G, v5 _
. e/ @* c# g0 N' l8 \5 _        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);! D8 N' p# `& Y$ x
        val &= ~TIMING_MASK;" @4 s. C, b6 p9 u; n+ p; M
        val |= set;/ }9 d+ {4 r# D' V; e- o
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);- T8 E6 A+ l7 d+ s" g
......+ u7 }' c8 q& Z
}
5 T  _5 W6 }7 n8 j7 {3 r% \8 K, M# @; P" j2 ~
而且在Menuconfig中已经对
3 ?" `0 n  |# \$ p/ pCONFIG_SERIAL_8250_EXTENDED 设置为 y
6 V/ r1 q- X' R6 p- }1 U) p所以此模块函数是被加载的,8 t- A: Y7 Y' F) b. ~6 q( |
, x: H1 P) P& y6 F# u
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:. b! g; g! n/ p5 U% {6 m
谢谢了
# |% a) }, P6 k9 r# `; b9 phttp://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-1-31 04:48 , Processed in 0.040312 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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