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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6309|回复: 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) {" v" m- ^+ A  ~% i0 S' e* R
        /* Power on the EMIFA */
5 N0 r* d1 h  U' U/ `        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,5 G8 o- Q4 a7 I. ~8 g
                        PSC_MDCTL_NEXT_ENABLE);$ v' E3 Y& p' y: U

; ^; t3 _7 y- J$ i! _8 ^! {6 f) M        /*selects the EMIFA pins for use*/- k- ]' t& d. D4 W
        EMIFAPinMuxSetup();
9 i3 k1 I+ F# a* ~0 t  P
% y$ o( }& |- @6 Q5 F) R  V! x        /*set the buswidth of async device connected.  16bit*/% h) E0 r8 F% [5 H6 S
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,8 H$ S& _  k5 b$ E% ?* U
                                        EMIFA_DATA_BUSWITTH_16BIT);- }5 w6 S2 W' K/ F$ ~) W

) s* j3 G& o1 L9 ~8 a& v8 c, V        /*selects the aync interface opmode. :Normal Mode*/8 x8 C* e. o9 C- t0 Q
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,3 V3 P2 V9 X( W# q4 J8 K- v
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
+ u, D* X& Z9 z0 Q7 J7 n- Z, ?! ^! a" n
        /*Extended Wait disable.*/; \: c. i: F0 k8 k; ]" `* o
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,; E8 A% r7 r. s/ s
        EMIFA_EXTENDED_WAIT_DISABLE);
: ]8 ?; y5 L3 _# F% M0 A
% ~" M7 B3 \. ]5 i' z        /*configures the wait timing for the device interfaced on CS2
) `2 d1 u' B6 m+ S/ i6 D( m        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/! M4 \1 [1 U. |4 i5 b/ }
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,0 Z0 J! n' a( a7 y$ r
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));  b* D8 {" ?4 n1 P8 a# g
9 u5 ~( |9 u- z2 X8 j$ ^  L. }- d
}: Y. k9 T1 s! X4 F7 ]4 ]
还有cs4引脚的复用:
/ |" }+ u: u! N. l; T& Q" JSYSCFG_PINMUX7_PINMUX7_11_8
- A0 h( m( l0 O; ?" U; b
  K+ q' Q! ]4 r$ ~' a最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
: e& y) V# o0 M* ^4 Q' F谢谢!) A/ V/ s9 W( `) W  [4 ]; F* e* {4 Q
: {9 R! {" \2 h9 M7 H

7 y. K  E- T* X# r# _1 l  X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,: q; o  x" r7 D
#if defined(CONFIG_SERIAL_8250_EXTENDED)
$ {: h  g7 d2 e) @8 s3 F# v7 v#define TL16754_CLK                147456003 k' a2 ]4 J" B$ R( ^1 t% y; A
#define TL16754_PORT_N                8$ I' K5 K+ |; y) K* n* B2 i+ j
......
, m7 f4 H1 w! E+ \static struct plat_serial8250_port tl16754_serial_pdata[] = {0 X1 Z. o: B8 \4 E6 P2 E
        [0 ... TL16754_PORT_N - 1] = {7 |0 v9 o- c/ S* g" r5 I# A
                .mapbase        = DA8XX_AEMIF_CS4_BASE,: U1 n, m4 W4 D
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
, t  ]" p0 K" Z. X, q7 k5 G                                        UPF_IOREMAP | UPF_FIXED_TYPE,
( `" q8 a( |( W9 b( G                .type                = PORT_16654,1 ~4 u8 j( J1 L+ b2 P
                .iotype                = UPIO_MEM,
7 [* I, z9 r2 y2 `' r                .regshift        = 0,
- Z+ f. |( j" w* }  w! @1 c                .uartclk        = TL16754_CLK,- t5 z1 [6 L8 ?5 q  o2 q9 _
        },# Z4 C" b7 N: z
        {
, E9 ^) F2 [4 g. C7 G* N                .flags        = 0,
4 M7 k* R7 T4 }' c" s3 h        },
/ z2 D+ D, p# G) `};
- i3 C: q, r8 f0 I! f* y# v2 H5 U( [3 `8 x+ e/ h% R
......# P* d. V7 N  Y+ h! y/ `0 V" `. d
static inline void da850_evm_setup_tl16754(void): G5 N, [7 a; Z+ C. X
{
% P: B5 p  b4 Q' w# y......
$ H; q4 M$ v. _  h# `. D7 D        /* Configure data bus width of CS4 to 8 bit */: s+ j1 a$ f# p# e9 r
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &) B3 i& A2 \6 T) r
                (~DA8XX_AEMIF_ASIZE_MASK),
! x7 i% T4 c, z7 \& R0 U  v                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
4 b( i7 t0 _& _6 k6 {  ~7 v9 F
  ^% X. f4 i( Z4 y. u. ~        /* setup timing values for a given AEMIF interface */
4 [3 f# I: r# s! v( ?, C* o. N8 W# b7 g        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
8 y% K" {0 _7 |8 A* j. t" i                WHOLD(3) | WSTROBE(10) | WSETUP(4);
# U$ G8 l+ U" Y9 s" ]8 @2 o+ q; p( K- ?( Q2 E% [/ q
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
# E& X, Y/ b; |3 p1 r9 y        val &= ~TIMING_MASK;
: V% [0 D8 w+ R" `        val |= set;2 s- d3 |% d9 u
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);, Z6 `+ B, n( `
......
. [) H* V1 y, F$ |; y}: D0 Q. H& `- x9 W$ b) c3 F

) |, b1 _# t# B/ p而且在Menuconfig中已经对" }' G- i# m1 F, a) Z- Y! _
CONFIG_SERIAL_8250_EXTENDED 设置为 y# i$ |1 j0 [5 _, q. z- w
所以此模块函数是被加载的,) F$ d1 i# Y6 P  U) q9 ~" u! O: Y6 Q

+ p$ N" X- F/ J' E# g$ R请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:: L/ B! B# s9 B! ]/ R
谢谢了
) r! q+ {! Y# uhttp://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 05:07 , Processed in 0.041526 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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