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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6306|回复: 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) {
' ^* _; K9 ^8 X3 y6 g2 c4 w5 Y        /* Power on the EMIFA */0 l+ Q! P2 J9 g- a' V: t9 O# M9 R4 c
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
( L1 k' w3 x) [6 r; ?& |) k                        PSC_MDCTL_NEXT_ENABLE);
/ f0 V, q. U+ g& l" g5 ], v
& R, {$ b: ^) x! u) [! z; s        /*selects the EMIFA pins for use*/
% I1 F) n: Y8 n# a* L5 |1 Y        EMIFAPinMuxSetup();
% O3 A7 e  |6 F# b1 n/ ~5 f" C2 m! y
        /*set the buswidth of async device connected.  16bit*/
: W; ]# }0 \6 A$ Y2 Q, Y        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,9 t7 \! W  g; e% _$ p
                                        EMIFA_DATA_BUSWITTH_16BIT);
5 T9 b& J  p9 g. t/ B* W  E
; I, {! C$ T9 B1 S        /*selects the aync interface opmode. :Normal Mode*/
% `) Z) w! a+ ^' I, J: H: A% r( |        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
& v+ }8 j7 |9 J9 c5 p# j3 n6 J8 [+ F        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
" a' z0 I- A! ]* U0 ^$ |* b, b$ ?# n- E/ g  d. K6 U6 m& e
        /*Extended Wait disable.*/1 D; T! h) |* R  w( U" v2 ?
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
* n# \6 m8 @" V1 ?, i- o) `4 Z) _# t        EMIFA_EXTENDED_WAIT_DISABLE);' I6 T' X% i% y3 l1 {6 d, {8 S
2 }2 u" V' {0 u" N1 v0 E+ b+ P
        /*configures the wait timing for the device interfaced on CS2! C; y9 x* U9 t, O/ f
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
4 s' f4 L" \/ q& B. U        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,% ?2 }, {8 c; c# E
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
* j8 u" z8 E. K+ b" c, Y2 W7 k# U: @' }- D; r  p" S" a
}4 I% a; Y" J! Q4 P& Y6 m
还有cs4引脚的复用:) B' x& ?4 a3 m/ p2 J
SYSCFG_PINMUX7_PINMUX7_11_8
% @# x4 K' Q! _! n  P0 H3 a
1 `# P4 p5 a/ o最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
( u4 Q+ G  ]+ N  b8 d谢谢!9 V9 ^3 l8 n! M0 L1 `, _
! t! j, o9 X) j/ S3 \1 ^

) l" l$ O$ ?% L( ^9 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
' F- _: e' Z# H3 v8 N#if defined(CONFIG_SERIAL_8250_EXTENDED)
5 k! W( {; R, k  T# c! }#define TL16754_CLK                14745600
4 @. C9 F7 B, m% {% x, Z#define TL16754_PORT_N                87 \; B; h! q, f
......! G+ Z+ |7 f4 l0 I1 _3 _! K" K
static struct plat_serial8250_port tl16754_serial_pdata[] = {
) e  H1 C. X% F. R" m( Q- d        [0 ... TL16754_PORT_N - 1] = {
& ^+ C* j( [. W8 b, c- V: I+ V                .mapbase        = DA8XX_AEMIF_CS4_BASE,3 f  l# D! Y, S# m# U& V3 S+ r
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
$ K: ]9 ^' W( R: ^) R                                        UPF_IOREMAP | UPF_FIXED_TYPE,
# i5 W8 u, a7 s' T3 A                .type                = PORT_16654,# N1 n7 k  j! a
                .iotype                = UPIO_MEM,
7 y, a+ z0 G  a5 H/ Z/ T+ V' Y1 A                .regshift        = 0,
: N# F  H8 z, M* Q) n3 V                .uartclk        = TL16754_CLK,
: y+ |4 d1 ?5 x5 @        },
: s4 Q) T% e+ }) K9 q' B- ~        {
2 U. p( x0 {3 n+ Z8 n* k; T                .flags        = 0,
* h* d1 e( \. L        },
, M' R+ q( E0 [2 ~) b};
  M# K5 Z! C0 D- J! B3 e; r1 t5 I8 ]/ `# J/ K* X
......5 |2 @6 k( V, S
static inline void da850_evm_setup_tl16754(void)
! _5 c7 f. s8 C) y5 @9 q! @{
" c+ H' m2 b4 t# r% F......1 [0 {( T, `7 S- }
        /* Configure data bus width of CS4 to 8 bit */: {0 b9 t4 b7 w# ^5 N/ _
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
2 r. b/ f) F5 P7 [% [# H: ?. q                (~DA8XX_AEMIF_ASIZE_MASK),
% I# C5 E& X" N% ?, J+ l& x2 @                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
- j8 c; J  x6 z' q6 H/ y2 U* S4 V% H  G3 T2 K! D- `7 ]
        /* setup timing values for a given AEMIF interface */
7 d# Y+ O9 L+ |; |" N1 m        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
  n8 m8 S4 a4 D: \4 S9 p/ b                WHOLD(3) | WSTROBE(10) | WSETUP(4);  y4 g/ `( q! v! F) L& v& H4 b

& M! S* F/ s: X        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
  ?! j+ C- d( C" \2 l( l% D  P        val &= ~TIMING_MASK;
( b, F/ G" Q. x" Y        val |= set;
. g! A% U9 V  x7 L) o, m4 i        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);, _* w' c7 B$ }; P; S: d! _$ Q
......% |! H4 m& ^% s1 L/ G6 c
}* ~9 l1 @; @# V- q' h( `) }
+ C0 c1 Q/ }0 b2 X6 Y9 c8 H
而且在Menuconfig中已经对7 T3 K' O1 a8 E. \1 Z- z
CONFIG_SERIAL_8250_EXTENDED 设置为 y
9 G3 R  L+ \/ p/ T! s所以此模块函数是被加载的,: ]. E, x+ M# }+ ~- C/ Z9 p: B: @

. F4 |6 W: ]9 I请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
9 l. |. u% f- \8 f5 ]谢谢了* k1 m3 t2 o: u3 J9 i3 p- S
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-1-31 01:03 , Processed in 0.055205 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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