嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:' {. o9 ^8 d; r0 B, B+ _9 a8 z, o
void UPP_new(void)  a" J' I  t) |5 g" B/ O! N
{ 1 {' a8 K& V* U' i) o
    PSCInit();' E4 z0 |4 A9 u
6 E& _: v: u" h2 D8 {. a
    UPPPinMuxSetup();
# [+ t5 A" D0 }/ `# r% p; D! F+ w7 G8 c) s4 q+ |
    UPPInit();  P8 b2 t; x' c! X0 W
5 r0 q" H7 r* Q- ?! p% C' v
    UPPInterruptInit();
7 x: a% x* m0 y: i, i  _6 ?6 G7 A, t* l
    UPPEnable();  t+ x. G: Z. {3 q* T

: M0 {& \: s: ]' L    Hwi_Handle hwi; 8 G; m/ t7 Y$ b7 T1 g# S6 C0 h
    Hwi_Params hwiParams;     - ^5 O$ y! U. k6 _& C& O  A% N
    Error_Block eb;- s- q4 K/ A9 U' M8 \

$ Z6 ^; E* p5 k    Error_init(&eb);
) A0 s% N" W/ s! ]1 |+ K6 G" ]$ D1 k& D  @9 @+ d$ u; C
    Hwi_Params_init(&hwiParams);  5 o2 Z8 @7 O9 i# N. X' T6 y: u
    hwiParams.arg = 0;
% ?1 M" n" k7 e/ e    hwiParams.maskSetting = Hwi_MaskingOption_SELF;8 I' Y" D( ^. \4 ?3 ~8 l+ x( W# K
    hwiParams.enableInt = TRUE;) g: u) A+ ^8 [  A
    hwiParams.eventId = SYS_INT_UPP_INT;
4 X: q, H4 [* _; @1 G    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);6 T- ?2 F% Q. W" V* i/ w* }
! q0 {# L2 j$ b/ |/ m
    if (hwi == NULL)3 R' v7 J0 Z5 Z6 r' o: X' o
            System_abort("Hwi create failed");
' C& E& k, \. P, V! d2 g7 F. X}
" s! L4 l7 p' B2 G( P% {
: X: u7 J, Z* c2 O" L0 B" W每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。) j: N: E. F# Y7 N& j3 o
- b# T8 v0 c: i9 r
9 ~: x% @5 m1 H4 t' v% z

作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?2 m- T* G# K/ d3 W+ E$ n

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务0 A, p2 a, u$ c, B+ a9 @! E

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
8 t2 u4 i! M9 X  v* S
作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:17
$ k" q, a. q( x4 V6 n( j你是怎么判断跑飞的?

1 t( {7 D: q1 ~8 }6 T我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
+ A' s2 H' G6 |  J- d
作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17
; X4 W) [/ I$ ]% b9 X' r你是怎么判断跑飞的?
" h: F: Q5 r- O3 n
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。1 f6 d/ j- Q2 C. K5 r

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45% l* g* f1 Q# l8 R$ R
创建硬件中断前,先新建一个任务

6 y# I' A  r; IDSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?7 S6 U6 ~. d4 n$ s; R

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45( I9 c: |7 ?$ f# M* Q! |8 }  q
创建硬件中断前,先新建一个任务
- Y7 X9 s/ U7 V5 Z( d7 {9 Z
我是在DSP接收到ARM端的消息命令后,开启UPP的
' o7 O8 I8 Y  u. |0 C
作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:357 D2 f! [2 \; I! i# M9 b5 O  p. o( Z
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。

; ]0 b2 r+ t  H$ b/ ^- T  p9 }/ k0 F程序跑飞后一般 PC 指针是位于 ROM 中的~
7 ~, A1 t; r  C! O( ~& ?
作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:208 f) g" A0 I1 F! V
程序跑飞后一般 PC 指针是位于 ROM 中的~
0 ?0 M" ~. o, e! V; }( H
我刚才又单步了一下,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.。。请问这是什么错误呢?4 e4 ~0 h+ |* z; w7 O8 B- t

作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:207 L4 z1 z9 {8 G. I
程序跑飞后一般 PC 指针是位于 ROM 中的~

1 J: k) ?4 G. T( w# d9 D这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过  `7 h" H3 v& S/ r5 \* Q5 o

作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:590 j; i, f& _/ T
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过6 A7 U7 G: V1 w# H
...

9 m3 ~1 u5 H# {' |8 ~, O/ r出错了.....) J; Z! b+ P: O# |
5 ~# F8 J3 g+ U
把相关代码贴上来 看下' d; r( i2 h) c: _

作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑 2 \# u& a0 V) C; V
希望缄默 发表于 2015-1-20 11:32' m9 N7 H8 d4 v( N. P0 f2 H2 q7 q
出错了...... b; y9 f7 p. r+ L+ k( T  |

9 F# g6 F' @& x把相关代码贴上来 看下

# |: e+ l9 C" ]) k& J0 D你好,我把完整的工程代码上传了,里面有个程序说明
* l, X% f  }' ~: @* y0 q: Y8 i. R- f( z, O
; r- g$ F% K2 I# M/ N7 _

  y5 b) m' z+ _% c# L  T% f2 `/ }4 Y; Q
作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:328 e4 P2 U0 E0 R# F% Q( I# `
出错了.....- U) F9 Z: O. O5 R3 L3 g

2 N$ L9 s" u; ?; g把相关代码贴上来 看下

( c4 i# }7 ]9 t0 c* |- B能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。
% q& O9 y+ |) J4 d! g
作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50
( n9 V: K8 H  b- @能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...

- ?0 ^+ Z; l7 Q9 `, U" D2 S# j把错误提示截图也发上来吧* k) @! B9 U5 F8 N/ t" L3 v3 E4 |& S

作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:53
8 |0 A0 D3 n5 j' q, e& Z把错误提示截图也发上来吧

/ H; \4 ~. y) \2 V! b  X/ U8 p, L错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。0 Z8 V% |! w9 l

作者: 希望缄默    时间: 2015-1-21 10:06
378087736 发表于 2015-1-21 09:59
6 s! B2 r9 m( }" Y# O错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...
& g" l5 v7 H$ l" C
截图3 [6 P  r- e1 I. [  A

作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:06
4 D5 h- L; e3 V$ B7 e8 n( G截图
; t3 x- j! A5 U2 ^7 \- v1 I7 P
请看图
2 ]% V4 J4 C2 Q( p6 o: t
" ]: l) q/ |' ]! k5 l
作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
4 s; f$ L- R+ n
希望缄默 发表于 2015-1-21 10:061 Z# \, G: d) N; U
截图

# G; m" _1 j/ y+ ^/ F请看图
; I2 P% B' N$ Y7 s! ?2 ]6 Z7 }: X3 D6 W% ]) ?- }9 S

; Q* a# }/ n/ X* g
作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:29
2 e; T* D4 L7 ]7 B  B/ ?, ]: o请看图
, f- }; b& ?7 D
看样子是还没有执行到 if (hwi == NULL) 就出错了~( @1 ^1 l0 k! E+ E* |9 _1 T

+ v, [+ D8 k* d' e6 i1 C# v这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的0 b3 S; H* ^7 k, i+ U& v

作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
( f- F$ a9 V8 ?. H; o3 _错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

7 ^/ d+ `  w. w. ?" E. U+ i+ b8 C我重装系统了 等我配置好环境 我再试一下3 I# [" Q% J9 S1 d* y

作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10
9 l$ U' Z' z2 f! w# z看样子是还没有执行到 if (hwi == NULL) 就出错了~2 `# O) _; {+ u+ J
5 l7 g1 v5 q" D. g8 t5 U0 a
这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...
) J- ~8 p% t* `) n: W
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。
) U, d( V9 Z6 P- @
作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16
# r3 y4 i$ C3 h5 w; w' e非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...

2 p0 ^; t- t$ ~好吧 解决了问题就行' M9 l6 [; F2 e0 E% A( \. ^5 ?

' b8 X$ c  }7 P, i- }* v' i估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断
8 D0 N" U+ S0 C9 W. j




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