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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5641|回复: 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) {' a  \; V4 p& h0 T/ V; {1 H9 n/ V* |
        /* Power on the EMIFA */2 G- }  I. A# _) S6 S5 u2 S
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,# p. h1 H9 @" x& c' v8 i& V
                        PSC_MDCTL_NEXT_ENABLE);
( b8 n5 m' S& x3 r% I" X% ]/ ]2 n% l  b- G8 Q- @
        /*selects the EMIFA pins for use*/
7 w9 K* ^' D; h) m$ g        EMIFAPinMuxSetup();
2 c4 ]2 i( \5 h" r$ Z
) O5 K( \) {. {9 Z        /*set the buswidth of async device connected.  16bit*/
3 w5 z& O7 K7 h0 j        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,+ K7 V- g# s( l* w; G4 `4 b
                                        EMIFA_DATA_BUSWITTH_16BIT);
! j! v8 @! V$ Y; H- {; w( J
9 p. N: `5 @3 y# n4 S8 X        /*selects the aync interface opmode. :Normal Mode*/2 K. F" A  y/ J5 ]1 w
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,9 h" X7 Z, k, o; G7 n. [' V
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);5 D' t9 T" [$ o' ~
+ Q! V9 v- v1 |8 s& t/ Z" M
        /*Extended Wait disable.*/
6 R8 p$ V# _7 h1 r. {        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,& M' r4 Z5 E) n
        EMIFA_EXTENDED_WAIT_DISABLE);; K) Z+ j% }+ }  w* d+ W  A
& N- Y( y, O% M: [2 R' r1 s
        /*configures the wait timing for the device interfaced on CS2
2 \' N) r: `# Y- I        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/: j4 d0 e; H# J; I; k5 `
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,3 X: S0 [# \. }& ]7 d  s1 c
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));; ?  H5 y* A* G2 U( Z
6 m% w# X0 n/ e- Z: v6 X4 {/ T
}
6 ?( Y+ ?* U9 g还有cs4引脚的复用:
  F' p$ q9 N- M. k6 ^SYSCFG_PINMUX7_PINMUX7_11_8
" [6 ~& w' E1 N* I: U" {
8 X4 y/ W* Q+ D8 [) K最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?4 N9 l! Q1 n4 u. c' t
谢谢!# z3 U4 ]9 ^/ N; |4 g

$ o4 b) j! e2 e$ b2 E4 \' U6 p" A: @2 M- Z" N% ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,$ ?' Y& M3 x& j5 J6 `- `
#if defined(CONFIG_SERIAL_8250_EXTENDED)
0 w* ]% Y! D8 M& @, z) n#define TL16754_CLK                14745600* L1 I0 n9 b+ f* h7 g8 P) V
#define TL16754_PORT_N                84 n6 ~; @+ B2 a8 w) S
......- M' X; ]  P$ r9 F% Q
static struct plat_serial8250_port tl16754_serial_pdata[] = {! {! o$ I" i+ T) d, |1 g8 W
        [0 ... TL16754_PORT_N - 1] = {; n* Q2 w  W( T3 B# k1 R: _
                .mapbase        = DA8XX_AEMIF_CS4_BASE,. q: k* k# c* O5 S& t& j6 {
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
9 F. D6 Y9 N" h- _5 \0 g$ i8 f                                        UPF_IOREMAP | UPF_FIXED_TYPE,
. B/ l; P# @' z& @, ?  Q# i( [; T' _                .type                = PORT_16654,
4 j* h" E; A8 N( [                .iotype                = UPIO_MEM,8 U6 R6 w0 O7 F1 S6 A4 S+ q
                .regshift        = 0,7 z  P* H/ S4 n( {+ \, g
                .uartclk        = TL16754_CLK,* z" Z8 l5 p( g$ o/ `! R
        },
4 G8 `$ l( o" U$ X        {! R1 N- r/ }5 E
                .flags        = 0,
- [. m. n1 U* }" A        }," g( g  u  G$ B6 T0 Z
};/ k2 Y+ h0 O! J5 `+ B# S" N

. d( u: F0 ]9 R' B% H* m" {......8 z: H( ]4 R+ n: g! u2 v. \
static inline void da850_evm_setup_tl16754(void)
' C4 W( |6 F, j, A7 j3 d) r{
5 b2 A8 y: B# s) ~  U, A......
9 H! T7 W" a( Y# j' T6 Y        /* Configure data bus width of CS4 to 8 bit */
$ ~8 n# ^8 p7 V# Y. p4 ^        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
, N: {, c4 w: t  G9 Q                (~DA8XX_AEMIF_ASIZE_MASK),
7 U9 I* y5 y0 U; ?3 T& q6 W                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
7 B- W' F3 l+ B: N5 h/ L, G. k, R% R( F2 z, y" e
        /* setup timing values for a given AEMIF interface */
# s* x, K& X; _        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
" n. Y9 M1 H0 E' P' f8 k                WHOLD(3) | WSTROBE(10) | WSETUP(4);
& `+ G/ {  w4 S* r" P4 i, W% L/ p; A4 g; n
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
) g5 `, ?: s8 _" V& b        val &= ~TIMING_MASK;& W* n9 a1 k$ d- C, u$ l% ?
        val |= set;
* K- `% f) |, a5 J0 J1 E; c        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
5 L) Y& P4 Q) T3 s......+ _# k* X4 B0 P- |3 |# K
}
+ B* I' |+ ?- q* ]
0 Q0 h: ~& J, ?0 i$ p, {5 l4 b而且在Menuconfig中已经对4 L6 h% V( m; A1 y: W: V4 \
CONFIG_SERIAL_8250_EXTENDED 设置为 y8 N& f" m7 g5 |& k% z
所以此模块函数是被加载的,
% ^3 M( X1 m% H8 E( n7 V. A! @/ R. C: \- h( M0 ]
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:$ O( Y2 ]% ?' V3 Q$ K/ @
谢谢了' z4 ^/ Z$ O1 _' U1 M6 Q
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-8-2 22:43 , Processed in 0.039049 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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