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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5918|回复: 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) {, K* j" ]* Z( s) P4 e2 f8 V8 k5 ~; l( T
        /* Power on the EMIFA */* b7 h1 R: k  z  M9 `! K
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
. \% V/ v( \" P; m1 H5 C: a) ]                        PSC_MDCTL_NEXT_ENABLE);
( Y* A/ F* G0 r2 a+ ?7 X+ z% o: x! l/ u. u
        /*selects the EMIFA pins for use*/
7 x7 H; t$ P$ s: r; K: q        EMIFAPinMuxSetup();' |  @* n/ j9 T9 i

3 Z! d, n: r& u, \        /*set the buswidth of async device connected.  16bit*/" ]% M. p/ E* `; t( E8 A1 E# S2 m) `
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
$ x9 E0 o+ {# M  h                                        EMIFA_DATA_BUSWITTH_16BIT);5 b% ^. i* a6 k) \/ ~

# c1 Z4 i8 y9 u& V3 `% m, j! K        /*selects the aync interface opmode. :Normal Mode*/
3 k' A" I% N, B) B% x1 x        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
4 o* M8 {5 f  d        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
1 M& F3 ?. V# T) l8 n7 t1 q+ {+ f) w  Y. f! F3 M
        /*Extended Wait disable.*/
  k( z8 D4 ~" W  t- U        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
1 Z8 ]' b: `5 a+ M( Z# Y" G        EMIFA_EXTENDED_WAIT_DISABLE);* w% `+ c/ H' s* D( b

& W/ @4 N& w' M        /*configures the wait timing for the device interfaced on CS2
: m7 E8 x  r- }8 j$ d: X        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/  H4 \3 ^# @1 I! i. w# Q
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,2 ~5 B: o' l% u% {
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
7 D. c6 D9 H+ t& Y+ g4 b/ k( O' g, d4 w1 N  y: M
}
3 g4 c) `1 \& E3 Z- G% ~还有cs4引脚的复用:/ @. m8 H4 ?( e( H$ h6 q9 Q
SYSCFG_PINMUX7_PINMUX7_11_8
; @4 [+ B9 B1 p' Z+ e8 a! e$ ^5 F' s, }' {7 I& l
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?% N$ |6 e- S3 M# d* [
谢谢!- N; X3 T7 t! l! `1 F
% z: `* w+ Z" A% V
) q  a. S4 w$ E0 e9 s# W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
! H% n& Y, z7 m4 `  f: o- M, A4 S! m#if defined(CONFIG_SERIAL_8250_EXTENDED)4 b8 j; D* Z( |" U3 g  k8 B
#define TL16754_CLK                14745600* \" ?# s; I, b0 r0 E
#define TL16754_PORT_N                8
7 ?- e4 V4 W, N5 a; z- h0 p: A. R/ ~......
7 P" b( Q' `* A% r! T, p& Tstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
) ]8 S  t( A6 ?# ~7 f5 U0 t5 r! n        [0 ... TL16754_PORT_N - 1] = {
/ c  |, l- I5 P' e; N: d5 B/ [  D                .mapbase        = DA8XX_AEMIF_CS4_BASE,
  W3 @. _7 ?2 k' s                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |9 }6 w2 @3 E2 C' k
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
) i9 ?+ V% T7 ]                .type                = PORT_16654,: n2 I' \# O% e% p
                .iotype                = UPIO_MEM,
. L' K! ?) i9 H' _3 C. o& O  O                .regshift        = 0,; h# U+ V' N( k; A5 B9 P) B
                .uartclk        = TL16754_CLK,
% m: ~/ |! U. P. u* S        },
/ _6 g5 j5 g; v) ?6 X3 L        {9 T5 }" V; Y6 w4 L- b) q' I
                .flags        = 0,- b. d' v' u7 h, G
        },
, W* u! c( x  R3 V1 y# z5 v};
$ m' ^- p* h  w7 C7 n% ?* u$ S% e$ @7 U) m) L8 a/ t' w, `
......" F3 I8 c& n5 Y" J8 m
static inline void da850_evm_setup_tl16754(void); n, H% Z* A" l
{
- f! ]3 v/ m. f  Y9 B$ _2 @......3 a& }6 q. q  w8 c
        /* Configure data bus width of CS4 to 8 bit */
* Q0 y! W' T: L+ ^# `2 A! h5 C        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &0 _* e- p. z/ V" Z
                (~DA8XX_AEMIF_ASIZE_MASK),
9 |0 R# W/ v# `3 W% x                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);5 _, Q/ {! _4 q% \" h- D9 `1 [2 e
% Y4 y4 V- I$ ^% p% ?9 j
        /* setup timing values for a given AEMIF interface */
6 ~# o5 f5 t8 l        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |2 T4 j3 k6 u1 J& t2 i' j. ?) U( s
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
/ f  y, z, S1 o; k# @* P# M+ H8 u
+ \' k# t: U1 \        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);6 N; |8 O( t% Z
        val &= ~TIMING_MASK;) @3 f& o# m" w) c' ?$ N8 z
        val |= set;
7 _. ]  [- C. O) {        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
; w* H* l1 N1 L......
3 k. E0 R8 ~1 M0 V/ V}' F% X/ ]/ G! g  L; H" e
& j, h9 n3 J# G7 |
而且在Menuconfig中已经对$ a2 C+ y+ j: u+ T* o# ^
CONFIG_SERIAL_8250_EXTENDED 设置为 y
/ }; D# M- l9 H) J所以此模块函数是被加载的,# g, ^5 A1 q8 b: I; \$ H4 u; R

( k* w4 f- u! q/ F0 M请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:% M5 F# |! f8 m
谢谢了* v- S3 j) L# D# E" F
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-10-16 22:06 , Processed in 0.055896 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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