嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:
6 N' V+ a  ^7 t: `0 O0 Ivoid UPP_new(void)% u2 E6 s- q8 ~% J8 _
{
; Q, F7 j( ?# @+ W& y    PSCInit();
; M! W% x, M0 U6 @( H1 x, E' k4 _' h' I# Z
    UPPPinMuxSetup();% T2 ?1 G, j' Z/ Y+ [  {& `" S( _

. V( c; B$ p7 f# r: C9 x    UPPInit();
" ~; Y& z) [% ]4 S2 F, f/ \! R+ D2 f  |8 q1 ~$ f! J7 i% F
    UPPInterruptInit();
" ^) h9 V. S9 y- r, @
8 }' O, o8 ~/ {7 H- S    UPPEnable();
6 G9 w1 b4 D* n* t" D1 Q3 [) O( O
    Hwi_Handle hwi; 2 W- Y7 J5 e) ?4 L. G, w
    Hwi_Params hwiParams;     + |2 r! O! B; u0 p: c' P' l
    Error_Block eb;
# y' m0 H/ a! x" O
# m* s# M/ R6 O! j3 @# H, o    Error_init(&eb);. Y+ x! h- D! Z) p! J

) ^# j3 _  ~+ S- W    Hwi_Params_init(&hwiParams);  
, n+ [0 U0 h( L    hwiParams.arg = 0;, [3 x5 Z/ K; `) S& ^+ k5 ?! l
    hwiParams.maskSetting = Hwi_MaskingOption_SELF;" L: A" I1 [7 R7 e  w8 U4 z9 \
    hwiParams.enableInt = TRUE;$ @: G4 }$ C: v( a' A! l; u
    hwiParams.eventId = SYS_INT_UPP_INT;% O# T; y* c7 `  B+ j. _3 D$ H
    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);1 |; _2 V; Y% a
5 K. h+ R- Z& n
    if (hwi == NULL)8 H! C+ `8 J# z; L# P
            System_abort("Hwi create failed");3 x% Q1 K* m4 `- f/ {- C" T
}
: p! X$ \; |' B1 g" k8 v) ?, x  W$ c
每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。
' h- n: r' j9 _: D% c% d
+ R/ h) C! v, M+ m. r  M" q5 b" j, S

作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?+ u. t: B! N5 @7 h& f

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
3 g) j2 m  T2 P
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务8 v# n3 u* Y4 W3 T# C3 I

作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:178 O! _$ N3 A/ M, C( Q( _8 N4 \  d
你是怎么判断跑飞的?

) v5 \$ V. @7 f/ w0 H  _, [$ g' K8 Y; x我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。7 P3 [0 S/ B0 D3 n. r$ l

作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17
/ D4 G) K8 s; u- P2 g! ?. `) P你是怎么判断跑飞的?
* S* F. O8 i0 t; Y- y7 r1 K
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。2 d6 u8 \+ ?- ~: j

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:453 q1 S! C. Q# {
创建硬件中断前,先新建一个任务
! K4 Q7 I" a" A; y9 g6 ]: U% A
DSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?
( U' e0 Y" @2 c+ u! c
作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
% H0 }! R( @6 k1 O创建硬件中断前,先新建一个任务

! d! W8 Q( j5 {1 O6 P我是在DSP接收到ARM端的消息命令后,开启UPP的9 w! M# ]2 g$ O0 P$ c9 }" M

作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:35( Y" |7 O7 z, \
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
7 D7 L. o" B4 o' ^, Y
程序跑飞后一般 PC 指针是位于 ROM 中的~
' Q: O$ k! z7 E1 a$ R4 _
作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:20# W  \; C# f" i+ Q
程序跑飞后一般 PC 指针是位于 ROM 中的~
# d! _& M2 W8 r; P! Q/ L
我刚才又单步了一下,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.。。请问这是什么错误呢?- ]/ c" \9 o6 w8 w

作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:20
" z# s7 {; y3 x; t" e: y; t6 R- a程序跑飞后一般 PC 指针是位于 ROM 中的~
6 V5 ~$ `2 d4 a3 t6 p
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过/ X% h4 J  ?. ?, g8 ^

作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:59
6 K# _7 |# ]3 ^4 e' A这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过) x2 a4 n3 D2 w7 ]9 s- N
...

0 e/ }) h) O6 F: _出错了.....
5 Z9 c9 J& c4 R0 v/ w& v8 Q5 T* W1 |- d0 Y' u3 L
把相关代码贴上来 看下- |3 ?$ M1 n; N% i$ y

作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑
7 |, o$ ^  l5 i9 _' c& V8 m- L+ M
希望缄默 发表于 2015-1-20 11:32, p7 n  v( `" O) h+ {4 f, x, L& Y
出错了.....( |$ L- c: [: Q1 X1 V
; L, r" W% @( ?9 Y
把相关代码贴上来 看下
0 k  c" V4 R) H1 [" F) }& f: l. e
你好,我把完整的工程代码上传了,里面有个程序说明
" J7 Q/ R* h2 r- K
# s  \5 c8 j. e, q" T/ b9 B- l0 w$ U/ |
9 _; Q6 R2 V; a: s2 H& |
4 n- E9 Z" [$ t6 ]
作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:32
' A2 N3 }3 X5 [/ w1 b3 m出错了.....) ~# Q; k, l$ v; K4 s- h
7 }2 t- B. X% |- S
把相关代码贴上来 看下

, ^0 @8 r7 _" X! \' f3 x3 m能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。' A3 X' Z  O8 y6 P7 v% z

作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50
& x+ G# p/ I" v1 u; A  m  ^9 m: l6 b能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...
3 j. W6 _5 @  U9 P6 i
把错误提示截图也发上来吧0 Y! _! l% }! V6 _4 W: j$ {) ^

作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:53
3 X* T) N" H) k( s* q  {# q- A6 G0 {把错误提示截图也发上来吧
6 |! q- ^) Y) d0 {& z2 i
错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。  H( o' a3 |1 k1 ]3 |, e8 B- W! s

作者: 希望缄默    时间: 2015-1-21 10:06
378087736 发表于 2015-1-21 09:590 r8 l) W( W  ^1 z- ?
错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

1 V3 b! j: {  u7 ]. f3 S截图
0 G5 [% q' P2 H3 U, Q& t# a
作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:06
- r. |6 `& ~, P) b0 f截图

4 y4 t* v9 ~/ y; G9 J3 l. T; D请看图9 V2 z, `3 F6 Z2 V- X! I/ S; O

9 d* J3 e' u6 Z% P/ Z  C) ~
作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
7 _2 W& f* d! a" y$ f$ H/ C
希望缄默 发表于 2015-1-21 10:06
, y. `! E# m: p" W截图
1 G9 w" G1 L2 M1 g( n4 J- s
请看图8 i# [$ `7 ^( D/ c+ v
& c: N6 b- {# M) n
; ^6 S! F6 Y! g

作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:295 r/ s8 \* f2 n5 I' s
请看图

1 M7 X. a  b/ B  `看样子是还没有执行到 if (hwi == NULL) 就出错了~' {" O% J- N5 J/ c. j- @

$ ^9 ^% M  b" {' d  ~8 C这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的1 V, Z, K+ k9 N& @$ T3 ]( `

作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
1 s% |/ O8 M' K错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

9 |2 O  u2 p* d3 n4 z$ J" }2 p我重装系统了 等我配置好环境 我再试一下
2 n7 Y1 z  V) ^: o1 g
作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10
3 r- K) G9 p8 ^看样子是还没有执行到 if (hwi == NULL) 就出错了~
8 z) ~: o6 P, K% j  J( a
. o3 K  n/ W: ~1 g$ `0 r. U这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...
( m9 O- x5 x( a* x3 z
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。
+ a( l" o) {2 C1 Y; |  G
作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16  H( Z# y% c" i
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...
- Q- a! ^: P4 [; ^; q* W. x* \! L
好吧 解决了问题就行- [3 D% E5 j2 E$ Y- ]2 L

! c: l( J5 ?: e估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断
/ O7 O4 j* K# E4 \




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