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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5616|回复: 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) {
5 q; [0 M, t: M4 y% o2 R9 o        /* Power on the EMIFA */
( H$ S6 J/ j- Y! O1 n2 z3 b; [        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
0 P( _4 `. U, i4 R5 [2 r% c; Q( k$ w                        PSC_MDCTL_NEXT_ENABLE);
9 o4 l2 P, `. H, s7 N
( r8 g8 o2 f' a        /*selects the EMIFA pins for use*/
. R. d0 n( I6 t) X$ }        EMIFAPinMuxSetup();
5 N7 h/ V+ O( {5 k* e6 f- b( {* |3 }( b6 ^4 |# `
        /*set the buswidth of async device connected.  16bit*/
0 g0 `: `) A: `. q9 n        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
; E* R$ j  F9 a% C% @                                        EMIFA_DATA_BUSWITTH_16BIT);
! t5 L5 K$ r/ ], }/ ?; R
! M4 w/ V( c0 P" E$ e' I        /*selects the aync interface opmode. :Normal Mode*/
! k6 E( |1 i: s2 ~! B; l        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
- ~1 H6 c( O6 z7 d: C' w+ q% o& [        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
4 f7 S# t# i9 s$ U7 l3 j
( a1 V9 ^! m) i9 Q3 S! {+ N! w        /*Extended Wait disable.*/
8 @3 X' c. x9 i6 W: q        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
6 g5 `) w8 v! e; F' A% w        EMIFA_EXTENDED_WAIT_DISABLE);
7 z& L1 J+ i, D8 x" L* Q, _- [# c  {+ ^  X' n1 W/ J
        /*configures the wait timing for the device interfaced on CS2
: ^! v6 N9 d- L3 v8 }7 E4 ~/ g        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/: a4 s8 @* J' z2 M: x
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,1 V# P+ g: @, u  F" j5 p4 }
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));0 _8 b) |: s7 D3 }, j+ R% }: a: O

) Y/ m7 G# J; r}0 [  n1 f7 r( H3 O8 V) E2 {# b5 Y  [
还有cs4引脚的复用:5 g3 N. j) J1 _9 _, P3 w2 S
SYSCFG_PINMUX7_PINMUX7_11_80 g6 W. u& U6 i

* y7 w7 |6 @# [最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?% N' Z4 H  P' O, M
谢谢!
  f6 ?8 P) I$ P, V0 A6 n! e
9 P: E4 i  X% d5 t: g+ y  `
) F& s0 O) G5 Y1 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
0 c: T, @. V" f; I! R* K#if defined(CONFIG_SERIAL_8250_EXTENDED)* }0 Y/ u* O7 E3 x
#define TL16754_CLK                14745600
( a2 U- z# d+ Z4 ?7 g, u  P9 ~#define TL16754_PORT_N                80 g- p' E+ t3 g
......
7 ?, K1 y' o1 w. i; f7 O) rstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
4 Q! L! x5 N! X" U- P$ r7 l        [0 ... TL16754_PORT_N - 1] = {
1 b0 Z2 K* V* r1 S+ G( F  z1 {                .mapbase        = DA8XX_AEMIF_CS4_BASE,- a( d3 V  t% K8 c4 ]
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |- `0 O* Z7 @% H. y  Y
                                        UPF_IOREMAP | UPF_FIXED_TYPE,& Q: F# f" R& }, X: |- ?# ?+ h
                .type                = PORT_16654,
! K! c/ ]' L0 N+ G( z' q& a( g                .iotype                = UPIO_MEM,- B: W+ m8 O" L$ j. |
                .regshift        = 0,0 Z! k* D' G' t
                .uartclk        = TL16754_CLK,
9 \" m6 h+ X0 i8 ~& u/ s2 b        },! X% K; J! [' ^
        {
' l: P0 q9 m8 k* i; i7 F7 `$ H                .flags        = 0,* A' F0 c# X! n' l. u( \: q
        },
5 ?8 y- k. C5 @( g; m9 f3 r  A};
7 ~* f3 T9 i: K
' h4 A& \) y: V" w9 ]2 c' }......
+ f3 T9 ^; z) U* Qstatic inline void da850_evm_setup_tl16754(void)' j" b! t4 S' P6 G$ |$ l& e7 {: z
{
- a. P. }( y$ M7 |; m. U. J3 O......4 z- H  u- \" J- d/ b
        /* Configure data bus width of CS4 to 8 bit */
; @6 F$ W4 o5 J; I  t9 b2 e        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
/ \. }. j) R  s& Y2 C                (~DA8XX_AEMIF_ASIZE_MASK),
5 p1 ?. [& h. E% v) v- h: J                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
6 N0 v; ?7 @9 H3 q5 T$ m& R
. e& t2 G6 C) F; e, d/ i. ?        /* setup timing values for a given AEMIF interface */
  b0 j7 `2 O$ A) f. ~1 b* w( n        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |5 |7 V1 C$ R' [; U
                WHOLD(3) | WSTROBE(10) | WSETUP(4);4 |  O; v% g5 Z
: T/ z  R/ l) U, z( Y$ ?. p1 V
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) O0 v' K; R2 ?, \; A8 n# V
        val &= ~TIMING_MASK;
4 y( E8 M! O/ K6 h% R- \; S        val |= set;
: u( |. l6 t7 }; a        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);/ {4 c  f: z0 [$ `8 i3 Z: h
......
0 @, o1 h) F3 u' [}
: I: w% w- x+ X5 b6 N/ e4 U, M7 _) h, d
而且在Menuconfig中已经对4 Z" x3 I8 Q- h* x+ E& ?4 Q
CONFIG_SERIAL_8250_EXTENDED 设置为 y
5 J' m$ f% `0 s1 ^所以此模块函数是被加载的,$ P7 f% ^' {" r: Q' t& D# g
9 c1 Q( N/ e& t% h" k
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:3 F% Y! D/ c- `7 O4 F
谢谢了
; l/ p" l% R. q) rhttp://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-7-15 04:39 , Processed in 0.047040 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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