嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:
4 q. L2 S) G0 B5 G0 x. Kvoid UPP_new(void)
- ]8 ^6 e. {' `; H{ - A& [# s( P7 I1 n/ B. ^
    PSCInit();
5 S( [& u( p3 Z% G
! E) Z7 Q0 a4 n7 b. t$ Q: `: A    UPPPinMuxSetup();5 w+ `" [* o" J$ z3 ~% x
3 b1 E/ J& O1 }2 r, [3 \
    UPPInit();
/ P& \1 A0 B  |9 E1 d5 p* V4 D" E4 j* R7 Q6 {* i
    UPPInterruptInit();
7 ~( ~/ x3 s1 w3 O2 Z+ n- U1 `4 [
    UPPEnable();
, {5 G( P1 O+ E7 y5 {" [2 o
4 z0 M% L) R/ @6 u) s, p    Hwi_Handle hwi; ) Q( ^1 N  @7 {& |
    Hwi_Params hwiParams;     
* j. ?6 t! Q1 n7 T: I    Error_Block eb;
2 k, P, H8 k/ q  L4 l$ G  X+ m
    Error_init(&eb);' ~8 E6 p; M( n" l
0 j- a; u* z/ `. Z
    Hwi_Params_init(&hwiParams);  
" B6 H2 {6 U$ _7 n    hwiParams.arg = 0;9 f4 }# E/ g& F
    hwiParams.maskSetting = Hwi_MaskingOption_SELF;) D7 x; |$ e5 P( }- j; v. X( ?
    hwiParams.enableInt = TRUE;" j0 \$ L0 |3 Q) [4 q5 p8 S8 E
    hwiParams.eventId = SYS_INT_UPP_INT;6 q6 P# p" t7 x" {/ A
    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);: M. [8 l% T1 `) T: Y

" {' m. h2 l, Q# q* J. m    if (hwi == NULL), m: [/ K5 [2 [* Y: R; I" |% [0 I
            System_abort("Hwi create failed");$ N2 L" Y. |& y1 D0 k5 t
}
. l- ^' T* ]( y7 y
( i5 v1 _; @1 Y每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。; U  p4 P) N: ?# q& ~% [

/ ~4 Y# Y  h+ l* Y( _
. e$ X1 {0 T  T; j  i* b' b0 w8 G
作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?
; V! t# E8 q8 C4 [% m2 u
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务. t" H& S+ \, `/ o0 E6 U

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
& T) c5 ]. v2 T  E! p
作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:176 E' o% [+ ]8 ]# r( ~- B
你是怎么判断跑飞的?

* p0 s4 \6 _. u0 L/ D4 S我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。8 C  w  d( k& ^" W6 W' }9 T

作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17( v& d6 p8 R& u- y# g! Q
你是怎么判断跑飞的?

2 F. S& B4 s8 L$ }& _4 A' q我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。( c# K* L1 _5 y# I

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
& `, Q  y, ]0 z) r创建硬件中断前,先新建一个任务

6 A* j3 }1 o9 M# dDSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?3 g0 L! S' M. {  W. s

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
5 d0 S4 i2 w  Y0 j创建硬件中断前,先新建一个任务
; N+ N1 v8 u) N- ^$ f0 E+ k
我是在DSP接收到ARM端的消息命令后,开启UPP的
% Y  E5 w+ O* j- H, r
作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:359 f! A. @/ Q0 F, @( G9 s7 A( h
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。

8 x# N: f& c4 S9 j* F程序跑飞后一般 PC 指针是位于 ROM 中的~6 g" C# r% f% Z. X; _7 D

作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:20# i$ v& o# B# r2 y
程序跑飞后一般 PC 指针是位于 ROM 中的~

( i& @0 m# r' H% C! ~我刚才又单步了一下,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.。。请问这是什么错误呢?
( }. u" K& u. ?6 r$ T& |1 X
作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:20
; y9 J* U2 H! ^0 D: L. V$ a程序跑飞后一般 PC 指针是位于 ROM 中的~
. ~7 n7 q: R# U- w
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
; J! T" A5 s' G5 W9 n
作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:598 n  H5 o9 U; e. g5 Y% t
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过2 U" h9 K. R# j# N* E% z
...

* L+ R/ j5 L5 b3 j5 X( F+ i出错了....." c1 t2 a4 k& I9 d

+ r/ Z  U5 S) {, @+ a8 `2 o- e把相关代码贴上来 看下
, U4 s, ]" |: }) j
作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑   Q+ C  T5 J8 z6 Z: Y+ Y( J  s+ K
希望缄默 发表于 2015-1-20 11:32- q, w4 \2 E) j, s2 f0 e3 A
出错了.....: \* J: o8 Y8 j" H" l; q

& y( W1 W  N& p" h! ]把相关代码贴上来 看下

+ ^4 ^$ ~% U: i& c你好,我把完整的工程代码上传了,里面有个程序说明
; X5 E" R8 c  N8 h/ @7 F  H; r" Z: A4 T

7 I; b( l2 A, `' K+ Z, o2 q
3 g) y" J& U" V2 L  r$ Z1 }, |
作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:320 }& Z! x) |6 n; u3 r) ?7 G, n/ r
出错了.....- J! ?! U' U  F- z; `+ f
: Q" l$ ~+ _* |  q9 a1 p& D
把相关代码贴上来 看下
9 d0 s; j$ \) n* h6 H! y
能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。. B9 c- T/ a. k9 Z/ i

作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50
" O, v, d' G. ]) u5 I9 G6 o能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...
0 b7 i" N1 h/ t, a) {
把错误提示截图也发上来吧
1 ^" r, [) r1 r/ z3 V
作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:53# X) v' J7 V6 G/ B1 l, Z) E
把错误提示截图也发上来吧
/ Q8 B9 p/ T- Q+ j3 F8 [
错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。% i% q' A: _9 n  Y; a

作者: 希望缄默    时间: 2015-1-21 10:06
378087736 发表于 2015-1-21 09:59
! ~$ R3 Z7 y" d. c. t( F错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

0 i9 T, ?, m4 s1 W# h2 @截图+ h' E* l5 c% ?- K$ a$ j

作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:06& p+ y! I* e  j" R+ h2 P
截图
& |# D% I  m3 p9 S
请看图0 y* `9 T4 p, k5 J2 ?. S' X
; [# D4 M2 c% l4 A: P* [. ^

作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
! {2 U4 R# p4 _) c  U
希望缄默 发表于 2015-1-21 10:06' h4 Q+ M) P% r5 z- X
截图
! a$ c. ^- N7 k7 ~3 h& @
请看图
2 Q9 h2 T7 O- l, s. [+ d
+ d1 V8 y7 g( i3 r( `. |: n4 G2 t1 f* C* W( d

作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:29
& F  j2 J. ~( w' h请看图
; _: ?7 A0 v8 Z
看样子是还没有执行到 if (hwi == NULL) 就出错了~
3 b+ Q; E: V  G2 `7 @1 T/ Q+ ~/ H7 h" V1 V
这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的
2 s6 x8 R% @6 P: T3 S" E' C; {) B/ u
作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
/ i0 T' S! G2 N! `错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...
# W8 q  g$ n3 I4 w
我重装系统了 等我配置好环境 我再试一下" q$ G  r1 P5 f3 h+ L" {5 _9 |- y1 d

作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10# V# i$ C' y5 H* ^" U
看样子是还没有执行到 if (hwi == NULL) 就出错了~- E* x( E0 L. S, e6 l; {
2 V& c9 r5 E& ~' M6 j& @% ^5 Z; ~
这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...
( s7 U/ s' B7 |$ Z5 j
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。3 M+ ^% b; ], u# q& _

作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16$ T) O* J, ^1 F% l+ M2 g. Y
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...
( j$ d: \' V4 j! `" n& Q" b/ i
好吧 解决了问题就行
" R/ b  q* w% a4 E% r* }
- ?2 C0 M1 t4 \估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断  [7 i! s  v+ E( `6 U& E





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