嵌入式开发者社区

标题: 关于HWI创建的问题 [打印本页]

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:2 p4 K0 i- T8 k$ Z
void UPP_new(void)# w+ q8 X7 B% w
{
1 i% @3 e2 O, e0 L: K    PSCInit();
0 T* a3 I8 i7 t
1 }: m# X. y8 S. z0 Y    UPPPinMuxSetup();
, H! Q" ^0 A; f7 E7 ]9 d
5 q8 R" y3 K* \% M( l    UPPInit();. F9 X* A2 w9 S* W8 Z

8 Z, H% y( F1 E9 c+ a3 U# [! h  Z& I7 d    UPPInterruptInit();
0 i  D. i* Y2 M3 n* l0 J8 G2 c! s' N7 v$ Q* ^7 h: L
    UPPEnable();
! U; W  S0 O( F0 Q1 t4 r
' T+ K( O) T- ]0 l2 B1 A4 L    Hwi_Handle hwi;
  r7 ~" H/ h- I, J    Hwi_Params hwiParams;     
9 U6 j9 o) L1 E3 c# i    Error_Block eb;+ O( |& B% N1 o) b+ S/ ^1 P0 y$ o

% i! t& S* Y) r; a    Error_init(&eb);
# _8 f8 [9 k5 x" j  F  x3 Z8 A
; ~  g1 K1 A( }    Hwi_Params_init(&hwiParams);  
9 T) V% F# ~) i/ [* z7 E- N9 c/ s    hwiParams.arg = 0;
1 s- V6 e  r8 [    hwiParams.maskSetting = Hwi_MaskingOption_SELF;
/ w6 W* d+ z# U1 e    hwiParams.enableInt = TRUE;
. ]0 L7 c9 E) k& [; G    hwiParams.eventId = SYS_INT_UPP_INT;
' R3 A" [; F' C    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);6 c: n% u5 R0 l2 i0 b8 t
4 `8 W8 l' X7 x# a4 o
    if (hwi == NULL)4 }' ]$ F# M0 u, s7 t
            System_abort("Hwi create failed");; M2 i' T+ M. ~( q+ u/ y0 @( W, Q
}2 ?9 ], K4 c4 j* \& i. n
8 r( x5 ?% y' l5 j3 z0 u* z: V
每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。
9 Z" D! K' D: r5 ~+ r) E" ^7 S/ m
# {8 d& d; K2 b+ U
* d& K5 O1 o* ~/ `+ ^6 f
作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?
, P, \9 X) n8 m
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
7 o0 l" E& f9 M/ A5 g! A7 T0 j
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务# ]) @7 z9 N2 _9 F' X* l

作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:17
0 s" u* d3 m' Y/ r& `2 N) A你是怎么判断跑飞的?

( q, c9 i0 ]8 X1 Z5 ~# S我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。0 l: B8 a4 m- p

作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:179 b4 Y9 k; e2 y3 T# q! j4 I
你是怎么判断跑飞的?
4 k9 G5 l" S& M- s) I, `
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
1 @! ^/ m1 W  l, J/ B2 e
作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:451 V' P8 b0 ~; G" e' X7 E
创建硬件中断前,先新建一个任务

& o& D- `4 k: ?DSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?$ B! P  v8 j) ]( d. A

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
$ w5 s7 k7 Z3 E8 k8 a0 E  y9 ^创建硬件中断前,先新建一个任务
+ _" |% y( U* f, L
我是在DSP接收到ARM端的消息命令后,开启UPP的
  m: l, y1 e6 f7 x4 z% \
作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:35
2 ]) }2 x0 Q& ]# {我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
% \9 }* a' F8 G3 I
程序跑飞后一般 PC 指针是位于 ROM 中的~
, V: x1 \$ V' ~; E% V
作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:201 x; G7 r. P, m8 U
程序跑飞后一般 PC 指针是位于 ROM 中的~
4 {6 i1 W5 l, M( ]$ \2 M4 r
我刚才又单步了一下,PC指针的值是0xC3076F44,还在DDR2中呢,说明没有跑飞吧。然后CCS5提示:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/exit.c。  abort() at /tmp/TI_MKLIB7PNesw/SRC/exit.c:109 0xc3076f40.。。请问这是什么错误呢?
/ m/ i4 z* b8 e* j6 @$ X
作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:20
# x5 h' b) J9 u# V% E1 O( I2 G; g程序跑飞后一般 PC 指针是位于 ROM 中的~
! B( d; t, C* j  T, S- w
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
& M: c7 c- O) M& \/ D
作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:59  ~1 C* E) A1 x6 q
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过1 d: K, r5 q' C: g5 w  Z
...
# T0 e: g0 p' C$ [5 v5 D2 }
出错了.....
, m: L' N% \4 S) l3 h% y& h
& g2 z" E) ?5 u6 O$ R把相关代码贴上来 看下
! N* w, o* _) b) M% E
作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑
& l6 H. d) F3 U1 e
希望缄默 发表于 2015-1-20 11:32
. D% |! B5 H* x( k* M) i1 }" i. j出错了.....
/ D$ L5 A5 d* K# v  i. H& m1 _
0 Y0 f" f( [- b7 ~3 m' x把相关代码贴上来 看下
% z; e& i8 I0 d" `" }  {  k
你好,我把完整的工程代码上传了,里面有个程序说明
% l& s! \' A5 Y, e/ o8 @
0 e3 v" f3 N+ l% ^( b- X
9 r- I( i3 k5 z7 ^$ c4 a
4 ]6 N  \. E& E! ~7 P
作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:32! Z( G  _3 K8 s
出错了.....' z# B) g& c, S5 q% E9 V/ F& j" C
% @* z" W% t4 E! n
把相关代码贴上来 看下

- \, v% B+ }3 P能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。
$ d/ q- V% L1 Q4 A  |
作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50
6 @% t: U9 ?( N- Y  r- r能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...
* E- h% C) J2 [% X
把错误提示截图也发上来吧
, Z3 ?( m9 L% u( U( c
作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:53  e+ D/ r- |3 a
把错误提示截图也发上来吧
3 U8 z5 o) M" d" ^/ f
错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/exit.c。  abort() at /tmp/TI_MKLIB7PNesw/SRC/exit.c:109 0xc3076f40.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。
" A8 @- H7 t% T' T+ m
作者: 希望缄默    时间: 2015-1-21 10:06
378087736 发表于 2015-1-21 09:590 d# c5 l( U4 a, W/ \6 K7 Q) ^
错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

. ^$ [/ W9 O/ u/ k截图. h) v! m$ b! G" U7 S5 B2 p

作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:063 }  W; g5 N4 w9 }
截图
) K/ ^: z4 D, K3 I9 k/ [# }" R
请看图5 k7 R0 e9 [4 e8 H  P* P/ H6 f
0 U2 s' H& c# U. }) T

作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
8 W  U! |+ p2 r
希望缄默 发表于 2015-1-21 10:06
6 C1 Y1 t" z( c( A& j; E截图
4 V6 L- h: Y* y+ |
请看图0 q- M1 x3 ^$ f; R% c) R0 ]" k9 }, K

! v& m; ]: a% C, R+ A2 i, k/ M& p  s; L  g7 ], q& A3 J# X

作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:29
. g2 x: i# f* t- O" k& V( L; q请看图
, `1 V* P/ l9 g2 h
看样子是还没有执行到 if (hwi == NULL) 就出错了~. E! n3 ?" W( i$ k
  @& N! z: w' M* Q3 q1 R
这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的
: H: d- z6 O7 h6 W% A5 s
作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
$ c8 n& N9 s+ |- b+ s, f5 J/ e错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

& l  |5 a4 r7 Z/ F" D! J$ K4 ^我重装系统了 等我配置好环境 我再试一下
) u; q) w: a; L6 W
作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10
4 T0 E; K, ]3 U" L3 r; I看样子是还没有执行到 if (hwi == NULL) 就出错了~% p; k% m- C& W& q5 u8 A  R2 J, `

. C) e6 h1 K2 B4 @这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...
& C/ e5 q- t- G, G# i
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。  ^( g5 S  x& Z* m  X

作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16* A4 c2 l% k5 D+ z2 o! T
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...
* j, z' w) v) c- @; O8 E
好吧 解决了问题就行2 I" {/ f& V+ D* e4 K
) \4 t7 j* u) M0 K2 }' O
估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断
( H; }, ^) i) d" E3 u




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