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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6024|回复: 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) {) c" v- `5 s, o( W! a2 E
        /* Power on the EMIFA */' H  P8 D/ N4 k4 ~
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,/ H* C% H0 Z( r. `) v8 _
                        PSC_MDCTL_NEXT_ENABLE);) D, o+ `' W$ D0 T# C, r$ a$ {
1 }# Z+ B" s0 P& M9 V
        /*selects the EMIFA pins for use*/
; K+ R, o+ W3 \+ [4 o) }5 D        EMIFAPinMuxSetup();. B4 D3 \8 P" Y( d6 x- f
/ T/ d6 Y) |( N% J
        /*set the buswidth of async device connected.  16bit*/5 P5 z' G0 m# C! C& w( N
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,1 G: E/ C; S* R- o6 B
                                        EMIFA_DATA_BUSWITTH_16BIT);  k" E, w! Q  n8 G1 z5 @) U% m
; Z! h3 R2 Y) `4 {( ?
        /*selects the aync interface opmode. :Normal Mode*/
' }: u, D- f1 B! |4 I# i        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,2 M% Y/ o+ _! x4 |! i  K
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
: |+ T2 ~" r- }# M# q" i& a
6 L# j& S/ `/ @7 s, _. D  z        /*Extended Wait disable.*/) k; v; J4 C1 ~7 a0 i
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
# Y) j4 b1 w; \  g5 L% h6 d  k        EMIFA_EXTENDED_WAIT_DISABLE);
7 x% `- K% B' u
2 \9 I; {5 o- r$ s        /*configures the wait timing for the device interfaced on CS2
* V5 D2 Z- s7 B6 p6 {* p% n+ U3 a0 B        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/, X: C8 M" M3 Y' H/ O( n5 X- O
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,1 X; B! V! _, K( {8 x
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
% m% s  `; _. p0 i. a7 O( ?3 W4 x1 _) L7 g, }& y
}3 t0 F3 o8 Q9 x% K8 t$ H9 o0 d, ~
还有cs4引脚的复用:% o9 `' ^2 R2 }) l9 \
SYSCFG_PINMUX7_PINMUX7_11_8
6 s$ v) g9 Z' ]" Z. s
$ C% Y! g7 Q& ?% J最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
* j% @7 ~8 ^5 \1 g, @& ]谢谢!0 M% Q  D: x! ?/ I- v, N/ K

% l% e+ J5 y  t! v! d" Z
- D4 x2 L) f( u# c- i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-6-2 08:54:31 | 只看该作者
厉害
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:! t. D* @- O5 O! o8 q
谢谢了) |5 \5 t: j# B
http://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
* `7 {( V- z# i  t1 c. V  J9 Y#if defined(CONFIG_SERIAL_8250_EXTENDED)6 v0 n( Q8 z1 I2 [0 V7 e. f4 _
#define TL16754_CLK                14745600
( V) Y% J( w+ |; D% ]#define TL16754_PORT_N                84 I0 q3 l# o4 @
......
3 ^" y, Z2 s: k9 Xstatic struct plat_serial8250_port tl16754_serial_pdata[] = {+ J; [- w* k" ^; ]
        [0 ... TL16754_PORT_N - 1] = {5 j4 K( W- ~" J' t/ [
                .mapbase        = DA8XX_AEMIF_CS4_BASE,4 q0 G- S; M6 C
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |! Q) u1 ^1 C, W3 p: F4 O5 O
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
$ M" O5 `0 g# E5 w- i                .type                = PORT_16654,; Z, ?2 W% j: @) W% y7 y/ k1 w
                .iotype                = UPIO_MEM,
! O# J; A. |+ E                .regshift        = 0,
% x5 Q8 a* l2 W) L& Y: R4 Z( }/ _: O                .uartclk        = TL16754_CLK,
4 U" G4 y# o2 Y. ^2 u        },  b+ Q  n, W/ ]4 e6 U( p1 s
        {
2 B5 y5 S, m, A" C7 x                .flags        = 0,; W- Q9 I, j2 o1 S6 D- K
        },4 ^6 e! d* j: x
};0 R9 b/ C; o: Y$ i" W

; `" T0 k" h2 i# W......0 M  x2 q4 d! H: X
static inline void da850_evm_setup_tl16754(void): j# E4 o6 O* H$ i3 ~
{/ q# ]4 j# X3 w8 o) W
......$ W& ^/ {( `/ o7 r$ z) `  u& }  T
        /* Configure data bus width of CS4 to 8 bit */( o) b3 V7 l6 c0 O8 N  I4 Z7 B
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &$ L: e! G4 z/ k$ `6 i
                (~DA8XX_AEMIF_ASIZE_MASK),1 y) j* k6 t/ @5 R+ ~% g# ?
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
! Y( @+ Q  L: W# ], l) j' k; s
3 W* I( G8 I  M: g" `        /* setup timing values for a given AEMIF interface */" n' @6 O+ N* P6 V2 R" Q
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
* L, W# `2 o( i% i/ p0 R% m+ q/ O                WHOLD(3) | WSTROBE(10) | WSETUP(4);
. I" m& d# d1 E0 j9 d- K" [' d9 t( k( c) N5 i6 v4 Q9 o  j
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);' S, G9 b* \% o  a  _
        val &= ~TIMING_MASK;; |  ~0 T+ \1 d( `5 |2 {( P3 Y
        val |= set;, k8 r5 Z! C6 j$ k
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
4 N5 p: S" R/ W# s1 h' G% `' W# g......6 h: ]- H, o5 ~& e
}
7 I' U2 }$ c/ |/ [2 O4 S5 V8 o4 [+ i1 R6 F, _7 {+ y5 a
而且在Menuconfig中已经对
5 \9 I6 g& c: ^% W# Q% w2 O1 ^! c( \CONFIG_SERIAL_8250_EXTENDED 设置为 y5 z+ c9 q. p% r" J. o! Y
所以此模块函数是被加载的,
( W: N- [" \) b' c# m
; g4 J  N  x5 v) y请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-11-5 15:32 , Processed in 0.040204 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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