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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6466|回复: 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) {
$ w: v6 Y! ]) Q8 Q8 L3 e* e( B        /* Power on the EMIFA */2 h8 t0 e9 w, ~
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,1 I  D8 @' ]. ~* B: W
                        PSC_MDCTL_NEXT_ENABLE);: x& G8 e6 J- p3 A: m
1 Z1 s. j+ n7 a
        /*selects the EMIFA pins for use*/
3 r" H/ G4 \% t: z        EMIFAPinMuxSetup();
7 K& \" R5 B& w5 p/ N1 I+ _/ L
( X  T$ p' X, \1 S: f        /*set the buswidth of async device connected.  16bit*// a$ y5 R. E$ @: F
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
, U  \" k: x# m7 V; q7 ~                                        EMIFA_DATA_BUSWITTH_16BIT);8 x, q, J; I# Q  d* L
1 T8 I1 a4 x, ?2 l$ @
        /*selects the aync interface opmode. :Normal Mode*/* B; L9 z" ~/ V6 ^
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,2 e: W( g! o2 _" \; Q, U5 d
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
. i: \! W' h8 D! Z) m* @1 z* l' P1 @: Z* e' @
        /*Extended Wait disable.*/) S, W& @, s4 p, y. n
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,% a' n" M$ o: \
        EMIFA_EXTENDED_WAIT_DISABLE);
3 @! |  J$ {. _" k- G( V7 _' H/ w; z5 F" I/ T( }- y
        /*configures the wait timing for the device interfaced on CS2
- v+ M6 @, J0 O) d% N. B) |5 ]        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/4 e/ Z  A3 x' }1 @; q
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
; z4 m$ x8 _' [% U$ F( b# {  b                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));# Z2 x3 Q# b: Q3 O

4 k1 Z! o& Y6 l9 w+ w6 ~}
/ {" ?: u8 z6 [/ U9 m9 [还有cs4引脚的复用:
7 N) S$ ^0 G1 F& {* V/ N. OSYSCFG_PINMUX7_PINMUX7_11_8& P: E! {, w" U9 q
. ?& Q, x6 ?3 b3 [; K3 n  y  m+ j
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?; B& N, x/ a2 G, F) V; L+ Q" X
谢谢!
: B; G) _9 v; B, F5 `5 ^! i2 E3 o0 i
. W/ r0 ]  ~; f0 c8 `" J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,' c" F2 e& h7 M3 S$ q0 v4 p8 ^
#if defined(CONFIG_SERIAL_8250_EXTENDED)
! C; e* b9 G0 t! R2 b, c" Q( s5 u#define TL16754_CLK                14745600
& _( Z4 l6 ~% q! W9 z, t, H3 `, U#define TL16754_PORT_N                8; M  S/ s, ]4 j& M+ E* F7 A
......
4 z/ m7 ~+ z5 ?static struct plat_serial8250_port tl16754_serial_pdata[] = {
, j+ e* l/ J3 v4 ^; h& l: r        [0 ... TL16754_PORT_N - 1] = {- c9 G7 e# E) ^4 w* \! R& W: {. f
                .mapbase        = DA8XX_AEMIF_CS4_BASE,% t! x2 M9 ?/ f
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |  k# q4 ^% `  x3 d# K5 O/ {
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
" x; h4 ^7 d2 b9 S5 V3 B5 ]' }% F                .type                = PORT_16654,8 D0 ~3 u6 S8 ?, w3 x
                .iotype                = UPIO_MEM,
% e0 J! L3 t6 p4 P& t' t( [" M3 L                .regshift        = 0,
/ \; j: L! s3 ^- H                .uartclk        = TL16754_CLK,
/ \) @8 L8 J3 X0 J5 G7 x        },4 N1 k0 f; r! z+ {
        {
+ F' G, ^, o( T4 @/ s- I% F                .flags        = 0,1 A7 r: J. ~0 X" S1 E; p
        },
! L! A+ k. r. @8 z( ~6 s};
1 ]1 b! V/ `) e3 o8 {
) X3 x, F7 a2 R/ W/ f......
9 _- E2 O1 M) e" L* Y7 _1 M( Kstatic inline void da850_evm_setup_tl16754(void)' e7 p) o% G' v7 l& i/ X
{
# G2 q/ V. C4 J3 s......# n$ J- M# v  c  a1 {$ B
        /* Configure data bus width of CS4 to 8 bit */" U* p- D3 q1 t- s  z8 i% u8 J
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &# p3 n" @/ _# c9 r) t) z
                (~DA8XX_AEMIF_ASIZE_MASK),
# V2 Y7 K' p4 B, }! D' E                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
' f7 E  y$ Q' Z% m; e4 l) Z) o) u" }. ^0 ~/ F# Y
        /* setup timing values for a given AEMIF interface */5 |5 F! y: c7 w9 E2 @
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |4 O; e& O5 V$ H
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
4 q" G0 e# C# H$ E2 G$ {
1 x* v( n" S, H  F$ l* {* C        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);* E4 {  ?. G" o. J
        val &= ~TIMING_MASK;2 ~8 N) [6 D/ D+ E# s1 ~0 T3 w
        val |= set;1 E  l- s. [. a9 q9 t4 {. o& r2 U  P
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
0 j2 @( A" C' f4 u6 }- Q) C0 R% ?......- y& Z! J% F9 ?8 U: F( `7 {/ g
}
2 y$ I3 T, w% d$ p, B5 s) n; X
9 k9 B- p* w: ]! n3 N: S2 R7 @而且在Menuconfig中已经对8 H7 W* I+ S8 x. }
CONFIG_SERIAL_8250_EXTENDED 设置为 y
. R2 _: M7 K6 }0 `( u" x所以此模块函数是被加载的,: ?$ x2 i! \) b8 [
( A! t  J6 `$ ~5 {" f, |
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:# M' U! [8 A% [" J4 k
谢谢了/ N3 T2 e1 ]1 B3 T
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-13 23:50 , Processed in 0.041720 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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