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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5814|回复: 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) {
: S$ ?$ A# I* T* [2 }. p4 x. V6 U        /* Power on the EMIFA */
3 e% U1 t  r/ B7 m- v9 {        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,( W7 c# d; L5 {" Y& n' _! Y. W1 y
                        PSC_MDCTL_NEXT_ENABLE);+ Z$ z0 Q. D# V4 y, y
' E  ?! K) {1 \- P7 Z( b! P
        /*selects the EMIFA pins for use*/
8 G/ ~: D! y7 _) |        EMIFAPinMuxSetup();, ^4 w# r3 Y1 U; @1 J  P* L5 V

; }* Y' a% b, u        /*set the buswidth of async device connected.  16bit*/
. M5 v: f1 L- e7 m        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,6 H2 d+ c: u2 b) A" K' b
                                        EMIFA_DATA_BUSWITTH_16BIT);
: P4 _+ P) B- H& W
6 O9 M+ A8 [6 y( q/ t        /*selects the aync interface opmode. :Normal Mode*/
8 V- {, f7 M9 Y        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
0 V; V' q0 V, P0 o8 J  F        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
1 C$ I' A! a8 c" B; j, D
) H4 M" e8 r, N5 ^        /*Extended Wait disable.*/1 J; @, X$ |: d) G
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
# f9 q7 H( X: C2 z8 E        EMIFA_EXTENDED_WAIT_DISABLE);
# D7 K* K3 H* \1 g7 i
: ?/ p+ u; G4 }7 c        /*configures the wait timing for the device interfaced on CS2
. Y  E9 Q1 a5 z* R& O        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
, n- a# Y7 _# N4 ]        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
, u! v# O, j3 C# U1 f9 r                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));1 u2 n1 _* ?: c5 A# v6 N

( ]- ?% r) o9 W  a/ z7 K# G}
' {+ B7 D7 ~% l0 `. ^: Y: Q还有cs4引脚的复用:
6 [: N4 p2 I" G6 jSYSCFG_PINMUX7_PINMUX7_11_8
' s: a7 [0 m/ Y# N# J! U$ t6 q6 ^3 u
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
& f' b3 n; ~" I( }+ c谢谢!- n7 p( |4 W0 Y

6 a0 v. e* a0 \9 M5 v- x4 R% P
5 ]/ R" |# Z7 ^! y+ V" [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,( g( N3 R! I; a7 w9 v8 F
#if defined(CONFIG_SERIAL_8250_EXTENDED)
7 }" z& x# d7 W% `2 I+ J5 ^#define TL16754_CLK                14745600
: ?" s# h% H+ B- b2 ~$ s7 |5 W#define TL16754_PORT_N                8
8 b) c1 l( A  O......
3 M6 q5 u' h( R1 ?! astatic struct plat_serial8250_port tl16754_serial_pdata[] = {9 ?1 |% ]* B' c
        [0 ... TL16754_PORT_N - 1] = {
9 n) u- F) s2 |5 ^                .mapbase        = DA8XX_AEMIF_CS4_BASE,3 h) G: u  D4 t; o& C7 G* ]) U
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
: ^5 ]  e" p! `                                        UPF_IOREMAP | UPF_FIXED_TYPE,
6 D+ h1 N8 ^8 B, I. D2 B                .type                = PORT_16654,5 \2 r' j6 e. c7 {9 Y5 T/ M. e, C" Z9 C
                .iotype                = UPIO_MEM,
: m- x1 ^7 v: o7 f* K" r8 l: c1 w                .regshift        = 0,+ {* `0 k. l3 n% x$ _
                .uartclk        = TL16754_CLK,, l! }: N0 \' ^& \, j. e
        },  L: n: z4 p' m0 e. Z
        {
* O! i1 a! I; S2 d  q8 U, f                .flags        = 0,# `5 r' S' L7 v+ h4 ?
        },: q" z0 ~* f; y6 H
};
3 I) f7 T3 R- v$ w3 A7 Y1 K  ~/ A
& M9 F# m$ s/ a3 t......3 z" ^( R$ Y) E1 |0 ^4 m  r' f
static inline void da850_evm_setup_tl16754(void)" d! N& z5 t0 r, ]% r1 K: s. y
{, G4 A4 g1 K8 Y% I0 @5 P3 u
......
, L, e! Q  u$ M# A, V9 q        /* Configure data bus width of CS4 to 8 bit */
  ^! X9 Q& i* m9 h        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
4 G% X) s- C" x" u0 b0 ~& Z                (~DA8XX_AEMIF_ASIZE_MASK),$ t6 ?6 ^6 S# a" g3 B
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
' g; c  D& [5 V; R' M$ C: \. u; H) ~4 Y
        /* setup timing values for a given AEMIF interface *// b' C6 s+ R# ^8 ?, v
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |$ F% |$ j' h, r# }" X
                WHOLD(3) | WSTROBE(10) | WSETUP(4);: ^; _/ L' R& K7 T0 O/ t; E

5 i. u% h0 `2 k( T" O$ A8 Q        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
! C6 Y. K$ A  }" M: V2 R* B        val &= ~TIMING_MASK;
: {* @0 m: U3 R& I+ T5 U: `8 ~! O        val |= set;
2 W. q0 y5 {  b: m        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
* O* j* s* ^, Z! q0 o" E  Z; E......
0 H/ U: t# x) P" P0 R- G}" b: k2 X  t6 s: \

3 f1 N7 w7 F5 C9 e而且在Menuconfig中已经对
; y! h, k4 Q7 |# Z* ZCONFIG_SERIAL_8250_EXTENDED 设置为 y; Y: i; o" W( K! P, ?
所以此模块函数是被加载的,7 x7 K/ v: g& K; X! T3 s1 [

( ^  K3 N2 ]7 i, }% I  r+ O请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:1 x3 A: W# Q) J+ s% d4 k
谢谢了
1 p; V# L$ F1 \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, 2025-9-18 18:12 , Processed in 0.039831 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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