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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6481|回复: 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) {
2 t) O4 T, \; n' H$ W: |        /* Power on the EMIFA */- E# ~# }! P5 y1 ~
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,8 v' A' R% Q# ~9 }: U8 J0 t2 X( J
                        PSC_MDCTL_NEXT_ENABLE);
% V4 J+ ~! }  E: i# R+ O* M
2 Y2 Z3 [7 l. I4 `; H, I$ p& n        /*selects the EMIFA pins for use*/& p/ w1 }# m7 i, a  o, p( M) k3 H
        EMIFAPinMuxSetup();
; y) {6 \6 U& F6 ]3 w. b" h; W0 ]8 C% N4 a. V5 D/ E) S; [
        /*set the buswidth of async device connected.  16bit*/2 [! ~" ~2 U7 G" V3 J0 D* `
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
4 O' o2 C  i7 m2 o% E, J- t                                        EMIFA_DATA_BUSWITTH_16BIT);4 g/ E- ?( k0 m

1 d: S/ ^0 ^- O3 w        /*selects the aync interface opmode. :Normal Mode*/5 q* N* }6 Q5 h& f, ?( g- d. z
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 n: b9 D* S: i7 \8 W1 g0 l5 G1 \  D$ |" `, |        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
9 H: a, y% X: a7 ?9 ^* \  G+ M/ F8 Z) o) N. G! ~  g: E9 x. ]/ ~
        /*Extended Wait disable.*/
3 T0 P) c- a9 {7 c        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,0 J' }0 x) ?) b% i0 y7 H$ l
        EMIFA_EXTENDED_WAIT_DISABLE);4 F( \1 z8 v: A- F) \
, Z4 j$ }, e" ~2 e  N* E
        /*configures the wait timing for the device interfaced on CS21 ~4 d& P1 N8 i2 E$ g$ A
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/- q6 f0 N$ B8 H( u# ?/ s% ~7 t
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
' ?5 y* x9 M  K, {+ Z/ n3 ?8 p                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));. s9 b6 o9 y4 R; s) E  O% `, K

9 N; j7 u. Z& e- Y}
# c2 U2 f6 [! Y& R还有cs4引脚的复用:0 @( G0 G, z2 g* P9 ]
SYSCFG_PINMUX7_PINMUX7_11_8
9 M- s! Q% W3 e- B# w( q( L6 @6 J$ @+ y) q$ T9 x6 [0 Y( s, r% H" j
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?1 w! X  [/ }; n; d- z
谢谢!
# @1 `1 o: F, [! B. m! g/ L% V$ ]2 }, \! x

& z  E  K  d; }- H% x6 p1 Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
8 J( {/ c2 F& }#if defined(CONFIG_SERIAL_8250_EXTENDED)* ]- i) g) q4 r& D6 @
#define TL16754_CLK                14745600
4 [- X1 i% J; F1 {2 g/ I2 O8 v2 e3 R#define TL16754_PORT_N                8; X- [! f! _- W' Y0 m/ y
......0 g' U( e; ~2 _' L, I
static struct plat_serial8250_port tl16754_serial_pdata[] = {- i, J) u- n, a/ E; C2 S- b
        [0 ... TL16754_PORT_N - 1] = {& `0 @( Z+ H" b3 K  `. K+ I
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
- D: v9 _/ R; `6 Y: C  p                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
+ \3 a6 X. |, [4 n                                        UPF_IOREMAP | UPF_FIXED_TYPE,9 {2 j3 n$ Z2 y# [, u9 d$ K" u! A
                .type                = PORT_16654,4 s' h2 ]  c! v$ u8 \3 O
                .iotype                = UPIO_MEM,/ Y- F& X. n, M! H* E+ {
                .regshift        = 0,
: P( a! T, y* M, |( p                .uartclk        = TL16754_CLK,
. z- v6 V" ?, v8 i. U3 V        },( k. i1 |3 r. J; V+ R8 g
        {
' q/ T6 r, m7 i' o                .flags        = 0,
( C" o" O, S6 p5 q        },* |* X, S8 g9 O/ [& Z8 Z2 u
};
! h% H* J+ H. @  B- ~' H+ t! n- w
......' z, t$ {/ ^  r% r- b9 \% i# Z
static inline void da850_evm_setup_tl16754(void)
/ G* M5 {& \. e6 I6 N{, r! D2 ^6 B" S
......* _6 O: \  o# G- L% Z4 K
        /* Configure data bus width of CS4 to 8 bit */
" t" ?$ O. f! i9 L+ q( l6 I        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
6 K& y& x+ Q- m9 D                (~DA8XX_AEMIF_ASIZE_MASK),, U0 c) r9 E! K5 Z0 K7 S
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);  ~5 r- I- c% K; b% y* C4 \5 [
$ Z5 T" g" N$ t3 D3 ?0 u% u) J
        /* setup timing values for a given AEMIF interface */7 t/ N3 D! b$ L% Q
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
4 U" h$ ~( s' N7 W                WHOLD(3) | WSTROBE(10) | WSETUP(4);
  ?9 B& l* l( `. |3 b, x2 J2 ?- p5 k" x
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
, Y( b  \1 j4 T/ [1 z, {        val &= ~TIMING_MASK;
# W. T/ s8 e1 v# X0 a0 ~& X        val |= set;
5 g7 |8 o  A/ S7 \5 b" s        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
" J/ L) U3 r4 ~0 W; r......
2 X* k9 Y( O% P* |" K}
. M2 z8 z7 y- P! N" F, A( ?+ S7 y: @3 H/ J0 J
而且在Menuconfig中已经对
# p  u1 i$ f# ^0 z1 ~9 ~CONFIG_SERIAL_8250_EXTENDED 设置为 y( H1 a' @0 w. b& J/ i& V+ k& J( m) o$ a+ Q
所以此模块函数是被加载的,$ D' ~5 e" a; q/ N" n

& L) c' m# A" q) A/ _请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
% A( J7 O. a7 d1 }, N谢谢了8 R' H% Q- S' m+ _
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 09:16 , Processed in 0.041815 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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