嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:
4 M5 N9 e* a& \# Z; e3 gvoid UPP_new(void)" \( n( {3 U9 v$ F* Y
{ ; d  n: S  @  U+ Q
    PSCInit();
* C7 |3 m. ?1 r- s9 W( Q# o
. r) U$ L9 Z5 i1 S. T( Y* ]/ c    UPPPinMuxSetup();
8 f! m9 `5 r, h. V8 q( [/ p# P
, \" Z. s3 g4 V: I9 F    UPPInit();
  A# G( ]6 H) j( q5 ?
5 r4 _4 m7 J+ O    UPPInterruptInit();
2 d: x  ?+ c7 ^. n$ L  p) I7 k
1 W2 N' c; O3 C  n* G    UPPEnable();$ n* k( K" U6 H: p! @% N# N0 g
/ S: w$ `1 I8 U. d0 a5 s" ^
    Hwi_Handle hwi;
8 o1 E% z) D2 L$ U& b  K! Y    Hwi_Params hwiParams;     
1 {7 z6 b/ h0 x    Error_Block eb;1 Q" N# a# ?6 Y7 a- z/ D% K

: r  p0 X# K7 S+ d' P    Error_init(&eb);6 [) T# K! C1 ~% D2 X/ d
3 _/ ]  D4 U) C9 F' ?
    Hwi_Params_init(&hwiParams);    t8 N) m- ?! F( H6 O3 s0 @9 U  ?) [
    hwiParams.arg = 0;6 N, o4 a* J( V" Q- J3 ?
    hwiParams.maskSetting = Hwi_MaskingOption_SELF;) x! ]7 k* [9 ?
    hwiParams.enableInt = TRUE;
; k$ t  l8 J. |    hwiParams.eventId = SYS_INT_UPP_INT;
- Z0 V  [  K- U* {8 w    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);: q+ `4 p+ H9 n

; r1 Z% v% A) ?    if (hwi == NULL)+ X, ~3 O9 \* T! f( o* M
            System_abort("Hwi create failed");
; i5 b+ n4 v( z$ [4 ^6 W}
7 {0 c2 b% t! W& i5 G0 P% W  A0 H+ X* l: u, E6 Q/ t
每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。7 q% g: @4 G% V: O, b

( n, {7 s1 s3 b
8 j) l5 E8 ?, f8 n
作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?% _% S$ V$ m; M* Y8 ?2 q& x0 h  L

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
9 P* R9 T0 t& j( ^% R
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
2 L5 N$ _% s% ^% G- z$ h
作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:17
- |1 n4 v  w$ r% N你是怎么判断跑飞的?

* j8 J7 D' w) H% @& x' f我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
9 a! d. ^9 h' ^+ D: w2 M, X! i/ P
作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17
; Z4 V9 z; w6 J' V# O你是怎么判断跑飞的?

! f  m2 K, W+ z; l( C我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
1 G$ X& m- `; M& i2 ~
作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:456 K% i* N! ?/ w! {& p* R6 ]
创建硬件中断前,先新建一个任务

) s+ r' M, v" ^DSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?- C+ \. ?. E% M) t

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
/ c- U5 ]4 t6 g$ m9 T6 W( X创建硬件中断前,先新建一个任务

3 V: Z2 W# M4 ?, `, c2 t我是在DSP接收到ARM端的消息命令后,开启UPP的$ @' c; R+ M. k/ ~# T; C$ C

作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:352 `& h$ f/ ~2 E8 Q" f: w
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
# l1 H( O7 [; E+ m. X5 N: D
程序跑飞后一般 PC 指针是位于 ROM 中的~
* M  Y1 U9 m9 v# L) g
作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:20+ J. t5 E5 S4 j) \* o% ^# d  {' `5 C' @
程序跑飞后一般 PC 指针是位于 ROM 中的~
8 I" b- T: j7 F& h' L0 ?2 [: _
我刚才又单步了一下,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.。。请问这是什么错误呢?- o( i2 E" {9 O

作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:202 H5 i9 e& R6 G. s; _9 P3 I
程序跑飞后一般 PC 指针是位于 ROM 中的~
$ o' ?$ I$ c& }+ D* `! j
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过, _7 j0 A( J; X

作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:595 p- ^  w4 m- \% f8 P$ M
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
/ i3 D) y  N0 W3 y% c' |, [- ] ...

+ h# B0 u- Q; E; U. U出错了.....9 N, z, P2 M/ ?* R4 b

9 z( ]; ?& p: r' D+ J1 c9 V把相关代码贴上来 看下# Y; l3 [# o. h# B8 |% e5 Z

作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑
; v6 u" T% ?; ?( `
希望缄默 发表于 2015-1-20 11:32
& l8 `. B+ B  f8 k出错了.....
7 t- {- K) n# w0 N8 w
: E0 P' l: W& w把相关代码贴上来 看下

- s4 U8 q1 L8 `0 P6 \你好,我把完整的工程代码上传了,里面有个程序说明% g: p: L0 H$ D
  u+ N9 [+ Z/ P

6 Q2 s) ^- F5 l# X+ g* c' l. T; \0 \! t

作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:32+ W$ ^2 F6 O5 A
出错了.....# E6 l2 {; M& c7 w" K% O" ?6 |4 z
, g9 A7 z% t/ A8 O- G
把相关代码贴上来 看下

& _& x" |, K2 z( W2 @' A1 s5 E能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。
* Q$ L7 e& d9 H, J0 `" b
作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50  S! v6 c9 V9 m" Q
能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...

+ K* \7 F* T2 y# H把错误提示截图也发上来吧. d. A; P4 a4 G% x

作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:533 E, W* W9 j. G! q6 Y1 I: T9 A
把错误提示截图也发上来吧
7 a8 w- G$ x* r9 G7 ^
错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。
. L4 J. [  A" C5 \  E
作者: 希望缄默    时间: 2015-1-21 10:06
378087736 发表于 2015-1-21 09:590 \2 k4 r  F  n  r2 O" c
错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

" L: `1 U9 O- C. g) r% ]截图- T3 |  s) v/ x6 C( M6 Y0 F

作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:06
' @3 g+ ~7 m/ M+ q. n$ C截图
2 w+ i5 r0 _5 D$ R: n. u& N3 U( q
请看图
0 g/ f0 ^+ Y9 `# X" p, \+ O& k2 S& a4 s* i8 Q7 Z( c1 u+ o

作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑 7 L0 f6 N8 [1 d+ i& [3 g7 Z3 ]( y
希望缄默 发表于 2015-1-21 10:06+ c6 K* a8 Y% O$ D
截图

) x$ I, c( I- y" Z7 ~4 T, T请看图+ l. c( e9 e! o% K
; j1 A+ T9 f- r7 I$ Y
) x* v* F, t0 ?% |

作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:29
) A+ Y' y$ @0 y0 u$ B  p请看图

# ?2 j9 y4 ]2 i看样子是还没有执行到 if (hwi == NULL) 就出错了~6 Z: [6 \5 S: `' E$ k; R; \

! s6 T" o) b/ Q% S, O; K& h7 R# F这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的0 e& D) w5 u+ a& o+ u

作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
2 [) R2 S5 N: w/ p2 Y8 S4 {错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...
% p; j' F7 T5 A3 F7 b# M
我重装系统了 等我配置好环境 我再试一下. D. D3 s* w  J* l1 F" z, J

作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10: b$ I  A* m+ n  z
看样子是还没有执行到 if (hwi == NULL) 就出错了~- ~- I4 [. C+ a% w0 {% t

% H0 K! W/ [5 I0 l7 h/ ]3 O这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...

3 r8 g# B7 e! n" R非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。
( R8 Q; w( ~/ Q% Z
作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16' W# Q1 Z; o8 Y$ t
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...
5 m3 r$ N1 M& Y; n3 F
好吧 解决了问题就行
4 b; _! O. T+ H' \- S5 m: \+ g, i
6 t9 d$ k4 O3 s7 x6 ?8 k估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断3 y% e7 D0 p- G( O3 m  p" ~3 P





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