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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6304|回复: 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) {. x2 Y! i% M9 j3 c8 v. M
        /* Power on the EMIFA */* {/ l  n3 q- D2 S
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,3 M% G! W4 }3 N
                        PSC_MDCTL_NEXT_ENABLE);
5 l2 K# A; ~9 w0 g
( q% z; v( `$ a        /*selects the EMIFA pins for use*/
6 h) y% H; Y% g# i$ ~$ U        EMIFAPinMuxSetup();
. f; g8 M' y8 U+ t, c9 i2 N, s6 }0 K+ a1 ]
        /*set the buswidth of async device connected.  16bit*/7 {) l* ]- N2 q9 Q2 X* @3 |$ f
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
* @7 V9 H# p6 K" B& H1 y                                        EMIFA_DATA_BUSWITTH_16BIT);
1 X! Z: o# o' V4 _% S
. q1 s8 P6 b0 ^        /*selects the aync interface opmode. :Normal Mode*/0 {3 |4 l( P' W* P
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
) W6 i% z5 R& H% g3 `        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
$ h8 X7 m( v' c  j/ n9 s/ O% E- T6 u3 X: B, `; M
        /*Extended Wait disable.*/
! A* U5 z# R) [( y3 G        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,6 I, o5 h* u9 K; ^) a2 {. x  ~+ |
        EMIFA_EXTENDED_WAIT_DISABLE);+ u$ y! M6 e' C: Y  d8 ~4 r7 @
( v4 i9 x- }+ p, t- t6 p/ D
        /*configures the wait timing for the device interfaced on CS2
3 S* x4 b/ H% t0 w9 q  o( h" J        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
% l7 a: H3 S7 @, u, \4 v8 {/ r        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
; d3 D% ]0 M: t, ?/ H0 z7 B                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
" e8 W7 R! w4 K( ^3 @/ n2 e
! Z) g9 ]2 f8 e6 m}
: D+ X6 f1 T3 `6 }! l6 N( _还有cs4引脚的复用:/ P, T3 N1 X1 A, c
SYSCFG_PINMUX7_PINMUX7_11_87 w7 K2 |8 U0 i# v& C; a) b

7 D" R5 E- I. A2 x9 L* ~最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?/ m2 @# q9 @! _. S9 i
谢谢!( h: M8 Q$ q2 R

5 u% Q# F. g3 Q' {
, M5 {# @4 p' w6 S4 W
分享到:  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 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:% u5 @3 \, @" n' k
谢谢了* E: {7 s. J5 ]3 k$ u
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的操作,! @8 r  t+ P9 y/ i
#if defined(CONFIG_SERIAL_8250_EXTENDED)
2 K; r: {! l7 S0 b9 }: ^#define TL16754_CLK                147456004 G2 r$ M- ]% ?4 u& T+ P3 a
#define TL16754_PORT_N                87 B6 q! [7 i( \3 D: u, S
......  V8 a' K! M( t
static struct plat_serial8250_port tl16754_serial_pdata[] = {3 |1 `% r; l; g9 ?# F# @
        [0 ... TL16754_PORT_N - 1] = {
' r. N" L2 R/ Y" c                .mapbase        = DA8XX_AEMIF_CS4_BASE,: Q/ y/ C1 |: D# K7 W! Z. o
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
, f0 b: q! G2 {" b                                        UPF_IOREMAP | UPF_FIXED_TYPE,# M+ [. q- T6 w
                .type                = PORT_16654,
2 z# d) N: m# h                .iotype                = UPIO_MEM,2 I% U# \% {3 H) l
                .regshift        = 0,0 t% v, f' K0 k/ k) e
                .uartclk        = TL16754_CLK,5 y& k7 n1 v: v! T4 b
        },# _: J3 q4 F' {2 ~; ]( G
        {
: ?. Z& V, l( ~; n/ @                .flags        = 0,
/ ~/ `" Y) j' t7 J8 D- [        },4 R0 L* i# W0 F! h( l  ~! K7 d5 ^5 {7 x
};
6 Y& l$ v' k1 b- s& g% r8 d" v$ o# h3 M- v5 R
......+ Z# p9 X7 q: K$ v0 s
static inline void da850_evm_setup_tl16754(void)
1 @+ X* i$ X1 l$ W{
: M, h3 @1 b* Y& u6 L; T9 c......
" L. N( P4 i6 I" }" I        /* Configure data bus width of CS4 to 8 bit */
4 z; y: G+ ^' E* X7 y* [9 a        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
. A  D/ U+ Y) w: ~  z                (~DA8XX_AEMIF_ASIZE_MASK),
+ K" F: n# x6 l$ l9 ]                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);4 u  Y9 l, p5 K* V" M" D( P2 j
$ @& l- V# d1 U+ h0 e
        /* setup timing values for a given AEMIF interface */
! ]  h, B; z# v1 H        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
! l3 `6 w# H. g) i0 ?                WHOLD(3) | WSTROBE(10) | WSETUP(4);% S! s. T* q9 l& L9 \+ u3 k: ]

$ A' y4 }" ^  ^        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);8 N: g) A* h0 P' L/ }
        val &= ~TIMING_MASK;
" F" E1 g; ]9 F' l- k8 N0 n% [' r        val |= set;  k% s. B0 }" e8 c& n/ e
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
0 w; b2 ~6 C# l2 P0 ?......
8 }2 F4 t% m# C+ F/ \: W" N* v}. i$ R; \2 a  Y, i. {. f
7 E3 f; W1 L1 _
而且在Menuconfig中已经对9 h% I' a! j- L, t
CONFIG_SERIAL_8250_EXTENDED 设置为 y
; a# S4 A  q: l0 D0 a所以此模块函数是被加载的,
: Y0 y1 r' }2 P$ H* ]
: H- T5 D$ Y6 w请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 01:00 , Processed in 0.044531 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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