嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:1 G7 y+ Z6 h) E5 u: K2 H, h
void UPP_new(void)2 Z2 F8 A# G+ C$ I
{ % p+ Q# ^; U' C) k
    PSCInit();# j& U3 X$ z( r' o4 S/ ?
9 j  f0 N. f3 {& r
    UPPPinMuxSetup();7 g" T% L9 r# `2 R- W

' N6 Z3 E: W/ u" e$ Y8 s1 j    UPPInit();
" {! k" N/ a% o% K* j/ d! s! v! E# X- ^- t0 Z
    UPPInterruptInit();
: x7 o7 g# ~; R- I$ |' I1 u1 T* }" Y, H9 S4 F
    UPPEnable();
, O7 Z- V- `3 X3 o- F
- e( i: F" A. z1 h" N    Hwi_Handle hwi;
- F% {1 ]. ?5 K/ F    Hwi_Params hwiParams;     " I; z6 V/ g$ A) R) e" A
    Error_Block eb;
! l) L2 d) w% h+ i9 {% U9 D: k2 n/ T" k- l
    Error_init(&eb);
1 ?) D' i3 R1 c7 z# `3 z2 G
4 i. m2 V  l0 K    Hwi_Params_init(&hwiParams);  
( k% E1 J1 G1 ]/ W8 W2 y    hwiParams.arg = 0;: E3 ?8 o. T4 \0 h$ b
    hwiParams.maskSetting = Hwi_MaskingOption_SELF;; j; N; U% v8 p7 ]) [
    hwiParams.enableInt = TRUE;, u! L: t* J0 _9 f9 e7 B
    hwiParams.eventId = SYS_INT_UPP_INT;
3 _" S1 u- N# l) ^9 ]    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);
- h! q' i9 [9 g" e; f) F. f: ?# G8 e, h3 W# q; X( O) c
    if (hwi == NULL)
4 c* D1 U) Z+ T& F+ @; h            System_abort("Hwi create failed");
* K- B/ P0 a5 r  P, N# x}' w% J5 X0 i, u5 ^" [1 E; ]/ t
9 u8 s; u  f" C) F& [$ d
每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。
$ o* H+ r8 {! {# B# x" w3 l; N( m0 s" y
$ y' t1 Q  }2 f. m

作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?
' d  O" M0 @  i! f0 y: G
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务! G+ i4 K3 s, s  g8 _, Z. d

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
& n9 p  ?& _! r+ M+ b% q
作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:17
$ ^0 Q# h! ^% V- ^( U$ k* n! D& T你是怎么判断跑飞的?

+ @4 M' w0 Q1 i( R4 r我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
" t4 M" c5 M' ^+ P8 v: z! Z: `
作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17; f, K$ C( f$ m5 v: R
你是怎么判断跑飞的?

1 K; L' N2 y! q& z. ^6 y) j! x我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
/ {3 U% @9 t7 b5 N
作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
+ U. |5 O4 z0 a! O, k+ n创建硬件中断前,先新建一个任务
$ Q$ t7 H2 j. O% @0 S/ d* S
DSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?
( l# u' V  s6 ^0 P
作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
' q) @2 b& b2 Y- p% K( R! l: C创建硬件中断前,先新建一个任务
# {+ r! F4 ?' H5 x! }
我是在DSP接收到ARM端的消息命令后,开启UPP的4 U- O- x) s( E5 J! X$ s6 s$ j

作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:354 m/ o  V( i! h7 ]/ G
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
1 s  q! x0 F0 c! F, K
程序跑飞后一般 PC 指针是位于 ROM 中的~  E6 H" ?: @% @( T

作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:20
# }! F5 t# n% L$ Z程序跑飞后一般 PC 指针是位于 ROM 中的~

8 d( ^5 v+ V" 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.。。请问这是什么错误呢?
4 U: P9 z) W; O
作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:20
# h% u* m# e% `2 y( C8 z程序跑飞后一般 PC 指针是位于 ROM 中的~
, [: H( d! t/ t! l8 V
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
; n5 I+ W) e3 a( l
作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:591 f5 ~" m; a7 e" Z" e- S
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过) T* ~8 F8 _# U8 Q
...

3 i1 A) V$ x5 P' |! l4 x出错了.....1 z) j+ F( ?0 c" Y' |$ @2 f

7 j: n# Z2 l& }7 ^. z+ f# Y2 t/ }把相关代码贴上来 看下5 n4 Z, l$ Q1 i+ m! e

作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑 ; @$ m5 }9 d5 M- \) b
希望缄默 发表于 2015-1-20 11:32- s# w  E  a5 g/ F% i5 o. [
出错了.....
2 C9 J+ w6 w2 X7 T. [/ \  g: F0 f
把相关代码贴上来 看下
& S# |( ?; ~+ b3 B% X7 J
你好,我把完整的工程代码上传了,里面有个程序说明
2 b! j+ Q, F% ?; w' b3 q9 ^; w. y
- G$ s$ j5 w' M0 C* \! u
3 J: c, O( ^5 Q; i

作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:32. q$ Z; r2 P5 _
出错了.....1 M$ O8 Y) `$ n9 I
) g% z0 t1 `+ A/ j
把相关代码贴上来 看下

$ c5 M- |0 S. V& W8 x能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。6 i0 t& l! `( ]1 ]' L& n) B

作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50, U5 L) h* t0 ?8 g
能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...

' _! o5 o9 w' Z3 `) k4 t把错误提示截图也发上来吧$ h2 d" G9 S) p, ]4 N

作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:53
5 p6 D& Q$ |0 _# ^" B把错误提示截图也发上来吧

5 O$ s$ L5 G1 a6 M  z8 @错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。' g0 ?& N# J& @/ ]

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

$ v; q2 Q% T0 q: O8 {) _& \, D截图
7 j1 i2 X4 U9 ^+ j% n
作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:063 }# a7 f% Z4 O" m9 @
截图
( e* s6 E4 q- {; o
请看图
6 N3 N: L" ?( \, H) n& a. q, Z( [, C2 O$ P# B  A- D& ^3 }4 h! M. C- b

作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
+ f! F' O5 `$ k! F3 V$ M4 n
希望缄默 发表于 2015-1-21 10:06
) N0 T) t( x4 j# u' m截图

" v0 l3 S" X" i2 o: O+ u请看图/ c+ b0 P8 b( J" A9 M6 t
/ q/ m9 ^* N" _
& O$ ^5 m/ \  T" I7 h

作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:293 B4 Y. X3 d% K7 g
请看图

/ ^0 z6 b% k& D5 [) G  A& t看样子是还没有执行到 if (hwi == NULL) 就出错了~
; C+ c- ]2 d, ~; T8 r- d' z. z1 Y2 ^" a4 _& X; M
这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的; a8 o! T. f- @# w- ?

作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
! a( W) b: H( V  u9 ?8 L错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...
7 {5 i3 `+ s: l6 P/ r) o, {8 I
我重装系统了 等我配置好环境 我再试一下
% ^* B5 f* C. x& I7 B8 b+ |+ l
作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10) v  _/ N* a3 S2 G% E2 g3 a+ F0 Z
看样子是还没有执行到 if (hwi == NULL) 就出错了~
. w1 |+ M/ E: G* q. W
8 V8 J% a2 B  i! y( c这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...

2 w7 W* K8 j! Y非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。
$ e2 m8 F& i* J
作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16
" U* e, w( {5 O( F非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...
5 ]& u& {% o# n6 Y/ R  ~
好吧 解决了问题就行
$ H2 @. l4 C& a0 C2 l' c2 J
, F7 l: F% O  M0 ~# C估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断
" z: |7 ]( f; N! i




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