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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6476|回复: 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) {& L4 M! m% m/ N  P- K1 h' l
        /* Power on the EMIFA */
/ B8 `. C* q# U8 }6 I. _# c, F: p        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
5 ^  z" u7 T( P; k                        PSC_MDCTL_NEXT_ENABLE);7 o, t& s, @  L; \) T- m8 m+ x

9 G1 Z7 Z9 {) Z: \6 J7 G        /*selects the EMIFA pins for use*/
! [  ]+ `+ b9 I3 X( F& ]( J5 Y$ T        EMIFAPinMuxSetup();
  r4 H- g" U3 A  Q+ A3 ~% E3 H8 B4 X, _. B2 O: p. e2 c
        /*set the buswidth of async device connected.  16bit*/
( e, T4 _& x& k6 b9 F+ c        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
# ~+ G& I6 n+ o7 q% N                                        EMIFA_DATA_BUSWITTH_16BIT);
2 M! R5 N2 G/ d9 @% ]
; r3 {# W. |. P& O7 ~        /*selects the aync interface opmode. :Normal Mode*/
' D+ N* W% F: ?        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
/ k! s1 W2 Z+ |/ R2 Q* c/ f/ ?) b8 r        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
' u; f4 g$ ]6 G+ L6 p
" U% A7 k* r/ q* D        /*Extended Wait disable.*/
4 G7 k) y6 X" k# {+ Z# [        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
3 L( D8 \. E0 p; E4 d        EMIFA_EXTENDED_WAIT_DISABLE);8 ]1 k* T1 f  g6 @- G4 z

7 z2 T& m& H9 g& E- M7 r        /*configures the wait timing for the device interfaced on CS2$ m8 B, c5 m* R* L* X& X6 {7 j. q; b
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
, R. P& M8 w6 F7 f! S        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,5 {! u7 R, r) j
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
, b+ T- ~# J+ c, q1 `5 J. F% w
}
3 n. [" N$ W8 I7 b: ]6 P+ ^& s还有cs4引脚的复用:1 J+ p4 ^, p" u1 ]( X" |" c. l
SYSCFG_PINMUX7_PINMUX7_11_86 J0 \5 O. z- a& d* ]) v4 w

: Z+ g: d$ x. x) B% W最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?& k1 Z% n0 |! h9 Y& @% F) D
谢谢!
+ b) s2 k# ^- F& @
, c1 w0 ~& `9 [! s
* m# l# `$ n1 \0 {" _9 v4 D" d7 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,/ |8 F2 L$ i" ^8 V" [5 @+ k: n8 g
#if defined(CONFIG_SERIAL_8250_EXTENDED)
* R4 t9 ]3 z; r/ ^( S) v#define TL16754_CLK                14745600$ p" V% E5 t1 g, g( l  p
#define TL16754_PORT_N                8
1 F! Y$ E6 ?7 n3 u( ]......
9 ]$ u' W) i3 O' T$ e7 ?* Z+ ?static struct plat_serial8250_port tl16754_serial_pdata[] = {3 D  {0 r+ S( R7 N  h
        [0 ... TL16754_PORT_N - 1] = {( V$ J$ z, U& D+ U  w, N
                .mapbase        = DA8XX_AEMIF_CS4_BASE,) p& z) a* `$ r* t3 _  ~( H" S+ S
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |; h- c( U( Z* W2 Y
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
' A8 c" m: H5 ^, r7 ^                .type                = PORT_16654,
/ M& t4 n5 [6 b3 h                .iotype                = UPIO_MEM,1 J! ^7 D. g0 z$ R
                .regshift        = 0,1 d( A6 o+ m% `9 v& ~! @3 Q6 E9 X
                .uartclk        = TL16754_CLK,2 K  S3 J9 j) B# s+ P: C" ?
        },
4 ^& U1 K: H8 i9 F8 K1 _  a8 M        {
3 _0 |0 a' R' h: h6 U2 Z                .flags        = 0,3 ~; f: ~; P7 P; o
        },( J* b, z2 e0 W  n# j
};
/ e! Y" H! A9 |/ N" T
! R3 T# ?0 V; B7 W7 a* R& o......6 F1 Q! T# o7 D! U
static inline void da850_evm_setup_tl16754(void)# o# b) d3 B" b3 X: T+ d+ s3 L
{
  {0 G7 p8 f2 y7 d: Z. v4 D......
( P+ a. R  n* b' J% F        /* Configure data bus width of CS4 to 8 bit */& J, a3 T& Z! ]/ V! S+ l, G
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
5 z5 h5 m+ }/ x! M& q                (~DA8XX_AEMIF_ASIZE_MASK),0 f9 _3 s4 \# h4 g0 G
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
) Y0 P- O- j+ N/ o& J/ j& ^1 C$ v0 a. Q" x$ w: l* _% r
        /* setup timing values for a given AEMIF interface */
& G9 |' Q' Z2 |5 J* [1 s        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |4 H7 K+ p. Y3 D9 V
                WHOLD(3) | WSTROBE(10) | WSETUP(4);7 \* H0 D0 K4 g- ~1 _) j1 |

9 H. M- L5 N6 Q4 ~0 c+ M9 L: p! g        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);3 J; Y& M9 f" \* e8 @4 b
        val &= ~TIMING_MASK;  m4 f! P/ S% l7 x8 W6 N
        val |= set;
5 X1 h* L6 }: m        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
9 c* e4 k9 f9 j! ?  H# ?......  C; |2 B, B) N& x% _- t# P; F
}
1 C# b( y6 z- ~  F! c2 q
, j/ H) y; B) e- g而且在Menuconfig中已经对* f7 o' A; H! d9 y: ^- [6 L* E5 L( @
CONFIG_SERIAL_8250_EXTENDED 设置为 y
. L4 E/ V$ E& Z所以此模块函数是被加载的,
+ v. H# v7 X( q+ n) k; j: r7 A0 [7 b. s3 w. m% C' X, J
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:0 d+ Z% \" z. O2 a. Q" X
谢谢了8 G( k  U  L, @/ G! L0 X# F8 a, ^3 }
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-3-17 06:24 , Processed in 0.051091 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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