嵌入式开发者社区

标题: 双核工作下,UPP不工作 [打印本页]

作者: tulipyyf    时间: 2015-1-29 09:38
标题: 双核工作下,UPP不工作
创龙工程师:
' b" [6 P; H/ _0 {( i     你好,我是保定炜达电力的9 B; \3 M3 t& R6 S- B
     咨询问一个问题,我OMAPL138的DSP核部分已经用DSP仿真器调试通过了,使用SYSBIOS系统,UPP采集FPGA的数据,只使用UPP的A口,在初始化UPP时,修改了贵司的初始化文件(XDATA数据线因与LCD公用,所以修改)" X  ]% `# u- G- n2 l6 a

" r# f& M' Z* z& s2 u* m& o$ {5 z; Zvoid UPPPinMuxSetup(void)
' P, h$ Z+ m& L{6 B& Q# w" b. C3 |4 W) ?& K
unsigned int savePinmux13 = 0;; Q% Y& U1 m  Q8 ^; N! {
unsigned int savePinmux14 = 0;- W( C* d# F+ t  H1 F; {
unsigned int savePinmux15 = 0;7 {) j' z8 m  D9 D+ x# q) H
unsigned int savePinmux16 = 0;
; {' v8 F+ A* }. W unsigned int savePinmux17 = 0;  R1 s1 i) u) ]4 k. b$ M- ^
unsigned int savePinmux18 = 0;+ \' Q1 h+ }. N6 S
/* all pins (channel A, channel B, DATA, and XDATA)*/3 ~6 Q5 ^4 x8 ~3 U* b" y) _
savePinmux13 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) & 0x0000FFFF);    //不要的输入F
9 c% s8 E* J' R; k" c3 c savePinmux14 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(14)) & 0x000000FF);
/ f) |6 h8 e- M& r; ~" f8 A& v! S( z savePinmux15 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(15)) & 0x00000000);% C' a4 @0 |$ {' T7 s4 f: f. N! O
savePinmux16 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(16)) & 0xFFFFFF00);; g1 Q8 I$ |8 x2 A2 ^
//savePinmux16 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(16)) & 0x00000000);1 w3 Y& R8 L3 L% M& t3 V
//savePinmux17 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(17)) & 0x00000000);
8 {2 p- n" [1 s* T, s, e2 v1 I8 a //savePinmux18 = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(18)) & 0xFF000000);
7 o, I5 p! E$ A/ g% J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x44440000 | savePinmux13);
. B: J9 N  W2 f7 a2 u. q3 q2 p$ |4 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(14)) = (0x44444400 | savePinmux14);
/ W/ N6 s6 x. Y  v4 V8 G5 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(15)) = (0x44444444 | savePinmux15);2 {6 z$ n" {- a; m- Z8 m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(16)) = (0x00000044 | savePinmux16);
8 L5 y5 ]) H! n& ?. U //HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(16)) = (0x44444444 | savePinmux16);
1 ]. g5 g$ V4 E& E4 P  G4 p //HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(17)) = (0x44444444 | savePinmux17);! I; ^1 O' D! z0 C: ?
//HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(18)) = (0x00444444 | savePinmux18);
, ]1 h8 ?' \/ ~8 d( J! v}. [7 M4 B$ U$ \( I( h+ p3 u
9 {$ H7 x0 ^1 ], b
     现在我的问题是,我DSP核心独立仿真调试没有问题了,但是现在OMAPL138 linux系统启动后,再加载DSP核应用程序,居然UPP中断不工作了,不知道是为什么,是不是LINUX系统与DSP有冲突,麻烦指导看一下。
% k0 [+ Q" O; h5 G

, T: ]; p, [% W% c3 R* i: a+ L) I' j
3 p4 y6 K: z' q( g  c- a; x. e) ~

作者: tulipyyf    时间: 2015-1-29 09:57
补充说明一下:按照贵司说明独立调试的方法是:
7 S8 {5 R$ F' {1)CCS连接ARM核心* {& K( K. W  x6 b$ {
2)加载omapl138.gel后,初始化相关操作后,唤醒DSP核心
& K  W  ?& z) W2 k+ J3)连接DSP核,然后调试仿真  
! l8 u; G. [, s
; ~) d. s2 T1 J初步联合调试,按照贵司方法如下:
( L: a! c9 Q7 l5 g9 e/ m, @( S6 c" s1)启动OMAPL138  linux系统
7 G0 D  E( d9 E/ A1 i: |8 u2)进入系统后: J" e7 x6 u/ @1 E; p$ x2 ^
insmod /lib/modules/3.3.0/kernel/drivers/dsp/syslink.ko TRACE=1 TRACEFAILURE=13 X3 C/ U+ w% g2 U- B$ L+ |
3)然后再次连接CCS ,连接DSP核心1 L$ M. {4 z  j6 m
再次在线仿真,就发现UPP不工作了,其他功能仿真正常。
! {% f; j7 O; P2 B" k4 S8 b  ~. Q; ]9 r$ z# e1 W: b
! u* t7 S2 o& `3 {; h) S  i4 g

作者: tulipyyf    时间: 2015-1-29 09:58
再次补充说明 LINUX启动时已经如下设置,DDR不应该有冲突
) G  T6 |/ @# ?9 \: n5 J, \6 Esetenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 mem=32M@0xc0000000 mem=64M@0xc4000000
( K2 L  \/ p* K* l
作者: tulipyyf    时间: 2015-1-29 17:14
问题解决了,原来内核文件要用旧的; \) m! [% \  \6 R9 }! c

作者: 8225621    时间: 2015-7-31 12:13
tulipyyf 发表于 2015-1-29 17:14# X  I/ L9 B- d+ }, D% }: E1 v
问题解决了,原来内核文件要用旧的
' o+ a& V! v" o( {  t! y
不好意思,打扰了,我现在所遇到的问题和你一模一样,看了你的回复说;内核文件要用旧的,不知道什么意思。麻烦告知下,谢谢
作者: tulipyyf    时间: 2015-8-4 08:27
当时应该最后是因为内存使用一致性问题导致的~~~你可以查看一下内存使用一致性文档~~~
0 A! L& C7 `4 k4 q( o6 Y+ P“TI C64x+ DSP CACHE一致性分析与维护”那篇文献写的很清楚
作者: 8225621    时间: 2015-8-7 14:42
tulipyyf 发表于 2015-8-4 08:27  U5 I/ |" _! G* P* ~
当时应该最后是因为内存使用一致性问题导致的~~~你可以查看一下内存使用一致性文档~~~5 @! Q/ w& \4 ?* T
“TI C64x+ DSP CACH ...
6 L) s0 s# \7 _+ ]1 @4 r
我看了下,好像没有使用缓存,应该跟一致性 没有关系吧。
作者: tulipyyf    时间: 2015-8-7 16:38
我当时是upp定时从FPGA中读取数据,upp存储的数据直接放到DDR上,所以DDR上是存在一致性问题的~~
作者: tulipyyf    时间: 2015-8-7 16:38
DDR存储使用的是缓存~~~
作者: 8225621    时间: 2015-8-9 16:54
tulipyyf 发表于 2015-8-7 16:38) n7 n% _# L% c7 J8 F
DDR存储使用的是缓存~~~
7 N- x2 {9 Y, }: S: G
哦,但我还是想知道你是具体怎么解决的。对于内核文件要用旧的一直不理解。
作者: tulipyyf    时间: 2015-8-11 10:13
本帖最后由 tulipyyf 于 2015-8-11 10:15 编辑 6 P4 v+ p7 e* c" S

: t9 W' Q$ u: `* z9 Y9 p3 w: a+ h; x内核文件不用后来证明不用旧的~~~
4 Q: e* d% z3 `9 m4 }2 F实际上我就是在创龙的样板上进行了修改$ `2 B1 k- }3 l1 K: N. s
主要改动 1 移植到SYSBIOS中运行8 m/ `" }7 s) [
               2 因需要时刻储存,所以FPGA发送一次下降沿脉冲,DSP核心中断收到后,执行一次完整的UPP重载,只是重载时,需要把DDR存储接收地址更新,然后开始接收UPP数据# R; x% j4 u- c+ P
               3 重载之前,需要 CacheWBInvAll();                        //更新cache& F- r+ r) q7 {/ X2 @

: a+ p4 ^- K! d希望能帮助你  




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4