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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6305|回复: 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) {1 b# `7 m  i5 |6 H. d
        /* Power on the EMIFA */4 V8 P. F, D! h. d7 t+ _0 l' b9 v
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,, ?! r2 {- T! h9 ]+ Z
                        PSC_MDCTL_NEXT_ENABLE);' h9 q+ k& x. k* x; e; u
, y3 u* C, d3 D3 S" q. y
        /*selects the EMIFA pins for use*/
# r* x4 @* E* z8 U        EMIFAPinMuxSetup();
7 s% A1 ]* B& m+ \8 L  S, d
. v" p& O; d7 E: J9 i        /*set the buswidth of async device connected.  16bit*/
5 C2 n) h7 E8 A' M* H* t        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
- N8 s) A$ j; R: B9 T! F  ~. N                                        EMIFA_DATA_BUSWITTH_16BIT);
3 y1 t* ^4 l7 \' {% S; E* g5 a1 l' t, Q
        /*selects the aync interface opmode. :Normal Mode*/
5 |4 D# j3 r3 Y0 f: _        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
/ c" i! F' ~4 U5 _( \        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);' Y! A4 ~4 Y" v9 S8 g! p+ x' Y
, c8 ^2 V, c7 M1 d3 m! j
        /*Extended Wait disable.*/
) P8 Q( y1 E  m3 D5 N- I0 K6 X        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
3 k) X3 T0 O0 ]6 z, O9 G( T9 c        EMIFA_EXTENDED_WAIT_DISABLE);
: y0 K6 I' @0 V) p/ i' I& f# g( Y1 M! `
        /*configures the wait timing for the device interfaced on CS2
' q: p& U* [8 \) h) n- C% _        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
% ~* C$ I9 C6 ?0 T. ~- H, X        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
' J- M# D! }& I. `. |% n# v1 C                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
+ S5 x9 c2 Z: g& H6 v/ v, V/ i+ E
}; {; o6 \$ x( e' O
还有cs4引脚的复用:
) O6 f3 [" p0 F" ^6 X, E9 E7 `! iSYSCFG_PINMUX7_PINMUX7_11_8
! i% F5 w9 j2 Z( Y  E
8 p/ l, a7 K. p# d5 |最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?& _% _  i' I$ H/ ~2 f  |( x
谢谢!- P$ ^' f/ z9 B) @& n1 B3 C5 }
$ M- u! ]0 b) B) K) y3 K
1 [+ |4 E! F- G8 t# P& h0 C9 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
$ d) A7 p$ T  T! w, l#if defined(CONFIG_SERIAL_8250_EXTENDED): V( w- [4 o% r8 ^& I) h8 z
#define TL16754_CLK                147456004 d3 B' G2 \  z0 _: z
#define TL16754_PORT_N                8# ?5 F  X% C9 l5 |
......0 O& @! w7 U+ {+ h
static struct plat_serial8250_port tl16754_serial_pdata[] = {
" `! P2 m2 G  K        [0 ... TL16754_PORT_N - 1] = {
! N' ~* z! |: X                .mapbase        = DA8XX_AEMIF_CS4_BASE,
) l. B# D& Z' }% _& r+ f                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |, n# b; Y# ~# Q4 r* p- M
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
* z8 F" s: {- }& m                .type                = PORT_16654,2 T7 I2 [- L( d2 x+ y+ w* ^9 C
                .iotype                = UPIO_MEM," d; @6 |9 k& F' c' C
                .regshift        = 0,4 y, a6 _2 _0 [2 |* c
                .uartclk        = TL16754_CLK,
1 w7 \( @7 s3 H( O- b/ u        },
7 v" |9 k6 U# S' c* W6 S& k. n# E        {2 Y) |$ d: s2 \1 J: i
                .flags        = 0,
: D2 p; E* ~" c' m' }& Q$ T! [        },& U8 ~" [4 |# F* g: l! ~! |" r
};0 _9 X! x& Z' d6 {2 ]1 h+ s

9 W2 G" B3 l1 J/ O......6 K" c+ a$ S) r: Z
static inline void da850_evm_setup_tl16754(void)
5 M4 w8 c* y  p. s5 M. j# |1 D{* T2 \1 m# \  E6 T
......
. q+ {3 N/ e( m+ i        /* Configure data bus width of CS4 to 8 bit */1 @( ^8 E( n' D' A  w8 h% J3 x' X
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
+ k. ~' |) I5 s) [: |+ Q0 K                (~DA8XX_AEMIF_ASIZE_MASK),9 F" J: s7 g6 f/ p  s% ~* y
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
) O! i( E; h3 u, Y  x# F" P3 R! k
        /* setup timing values for a given AEMIF interface */
" _) c( V5 Q: n' `        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |+ l1 B* r1 u% t8 \+ Y, m
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
' z2 y# h+ E+ U; w" H5 r' \+ u/ C) {
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);& P9 r1 X% _# Y+ |* E% G
        val &= ~TIMING_MASK;
$ ~7 u% s+ R! z" g5 `" L% J, |        val |= set;
4 i) B' M# f8 L% `& b        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
; ~8 V4 {# a3 R2 O......
0 ?* \* N- i8 R" l# I}
- b) Q. q" ]7 d* q$ U+ n* w5 _' c2 W" m( {: R& ~
而且在Menuconfig中已经对
  ?; J8 g# u- r/ m& vCONFIG_SERIAL_8250_EXTENDED 设置为 y/ B/ s5 Q7 I6 `% z5 X0 `
所以此模块函数是被加载的,+ j1 h! r* _! b7 @7 c7 X7 s

8 u! ]6 a( t, c$ o请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:) R+ B8 H3 u0 F6 v+ z3 e+ V
谢谢了3 p' `0 Z( q/ b7 U, n
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:01 , Processed in 0.039048 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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