嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:
  G: Q3 T1 Q5 l, Z" O8 ]5 f% Uvoid UPP_new(void)9 u+ A3 ?/ J/ B9 `+ @5 z1 B6 G7 R5 [
{ ! i4 E9 L. f( v+ n4 O, e4 t+ ?" P! R
    PSCInit();
/ ?. u8 x9 O. S0 ?. d( c- X  ?7 T# E( f
    UPPPinMuxSetup();% [5 o- x+ O, ~4 ~# m7 F1 y$ v+ H

2 l3 e% T+ J9 X2 x6 V% j$ c    UPPInit();! @# T( X, }+ [
) U) @; {) r  A" Z
    UPPInterruptInit();2 l3 s& r5 p2 x; T0 l6 H

$ f  O' {: R) ~3 i: z' o4 c& w! w( G    UPPEnable();+ B* C6 z8 e$ J' g4 {0 t+ W0 K
1 j4 j* J9 k& M/ L
    Hwi_Handle hwi; $ |* y. |9 n1 N7 m& Z( k$ S, c
    Hwi_Params hwiParams;     : R$ }/ R) P1 o1 V" P$ G5 D
    Error_Block eb;. i% t5 ^2 R! M$ z, h$ f

2 Y/ s* Z! @5 u. u    Error_init(&eb);# g9 F/ t5 i! ^7 \5 J% F2 D

9 u5 I1 S8 l- I/ [$ G& Y    Hwi_Params_init(&hwiParams);  + m  p" v9 T" I2 R
    hwiParams.arg = 0;
8 O" R1 C  v3 k' Z% R    hwiParams.maskSetting = Hwi_MaskingOption_SELF;
/ G( b6 e; T2 M) w    hwiParams.enableInt = TRUE;+ @" g: ~* z4 L  v, C" y+ b2 X# t
    hwiParams.eventId = SYS_INT_UPP_INT;8 P- v" m7 W+ s3 m2 v4 ?, @
    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);
& m5 n0 @2 ]# q
; e2 s- w6 U# M* K  e6 j    if (hwi == NULL)2 H  \9 t, M1 d' \7 e
            System_abort("Hwi create failed");
( L# B6 z' b! T}  G2 M9 D* a& n! R! o( |8 M
2 S! `' n# B* R2 }3 j8 s9 x
每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。
- h* H8 Y# Y( v7 z# o  J$ M
" E! Y9 O: A5 N# {) [6 B6 C4 e: r4 X* |8 Y1 H  E3 U

作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?! i7 X/ x. E+ m7 g- |8 C8 M# U

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务1 A/ }  \; ?, b* D' ^# g

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
. O! _$ M+ k. O* I
作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:179 O9 `6 r* o+ l, T1 \
你是怎么判断跑飞的?

5 K! x- }. W2 {' C8 k/ B  c我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
  N( H! V+ K9 S* J! B3 \* h9 g7 C
作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17! r! d& w, e1 k" e4 K( Q
你是怎么判断跑飞的?

; G) G  A1 Q) J5 A" r: l8 i我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。7 {7 n5 g6 R+ z  S; P. u$ o

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
, ~  z% }8 R( q7 u创建硬件中断前,先新建一个任务
( C: {! m4 j& z+ a; Y9 q
DSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?7 ~! ~1 T* \7 b' i3 I# e

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
5 }' [" J1 Z$ B3 |创建硬件中断前,先新建一个任务
# q4 q0 l' A5 Y! m7 d* O
我是在DSP接收到ARM端的消息命令后,开启UPP的8 _/ d2 H  \4 k" d: \# ~: q1 ~, }8 n

作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:35$ ]. i: v; H' g0 ]* E+ R! J' T
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
0 D2 b1 L+ Q; k; |6 [
程序跑飞后一般 PC 指针是位于 ROM 中的~$ M9 E8 M/ I! \1 p7 H. X5 m

作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:20$ X! n) d. o. [0 A
程序跑飞后一般 PC 指针是位于 ROM 中的~

7 c. o% f' \! `4 V- A# N/ ?. 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.。。请问这是什么错误呢?6 v, h. ?8 X; g2 L6 n% i# \! l: X

作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:209 i% C9 I0 O0 [! e. M
程序跑飞后一般 PC 指针是位于 ROM 中的~
% o4 g% N9 @3 D. k0 }- K
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
  L6 A( n8 w0 y
作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:594 S* H+ j5 S3 I+ t
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过+ l* R( b* @5 E' c
...
9 G2 a+ r& Y/ ^" Q
出错了.....  ?9 Q$ V. r2 F$ f# R  D

- a. E& V0 Q; [/ ^把相关代码贴上来 看下" j8 n+ Z4 @( T' o

作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑 ) f1 m) Y* w& ?7 D) }
希望缄默 发表于 2015-1-20 11:32# q/ ]& e! z( h2 m# g
出错了.....- O  L- ^0 h4 ^5 q! ]; q

1 W. o2 V1 Q/ d2 t% t& z把相关代码贴上来 看下
0 h/ X  |. r. r
你好,我把完整的工程代码上传了,里面有个程序说明
. d8 ~: i- z) q% O2 ?% C, j$ h( d2 T) R
( I" Y9 J& E9 z1 T% W
4 s' J. U! n9 @+ f

作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:32
; g# C$ x5 M6 f$ O8 w* ]出错了.....
6 d; }1 o; N) ^# L. i, v9 ]: \
! x' v) a- @  P把相关代码贴上来 看下

, ~0 ~4 g/ |0 n能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。5 \/ n% d) D; _/ f: e) W6 F

作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50
+ ~4 K) \% j5 D( {/ g- e. ?# p能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...
2 w# i5 m& j% z9 J
把错误提示截图也发上来吧& s$ k( s- G, c# Z+ |: I  z" x

作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:53, K- ^# R+ q8 Z  V; s# ^- m" C
把错误提示截图也发上来吧

6 p5 @  G  r% @' O$ h错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。8 r" f6 B% C* E0 @. x

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

. G/ V; c+ R" _* l6 [' G# A截图8 L, Z& n, q% w* G- v

作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:06
8 w& k2 u( w+ t9 w& x: y截图

. b8 V1 f" a) _& x; ^" S请看图6 @& X! D% C% j, E- O  a

% l/ b8 P' H  {3 ]' Y* r
作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
9 y1 V' ~/ ?. x1 [: P$ s4 ]
希望缄默 发表于 2015-1-21 10:06
; }4 v- ]9 H& w: H. q截图

. H3 ?6 u2 ?0 R* o. c1 U3 h: }( j; ^请看图7 n5 {# P7 m# W, n4 x1 W8 B
* k  T8 u( `0 P6 j6 w. ^% [

+ R  a+ w+ v- _! R: ^
作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:29
" i0 Y9 V3 X2 r请看图

7 L+ x5 ^* ]9 F; m, b% p9 f. H看样子是还没有执行到 if (hwi == NULL) 就出错了~, t  U9 T% n6 F- ~) X
2 X; m6 r) E3 x; b: T! ^
这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的
$ q+ S- |( j" R$ R
作者: 希望缄默    时间: 2015-1-21 13:14
378087736 发表于 2015-1-21 09:59
0 {) ^9 u# ?9 e; l! Y4 r错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...

5 `+ Q+ {7 a% D3 E( m! d* z我重装系统了 等我配置好环境 我再试一下& g: k2 ^3 _8 ]  q

作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10
; f! i" U3 o" T4 \) i( ~2 U. b看样子是还没有执行到 if (hwi == NULL) 就出错了~
$ I9 m: @/ D# ~/ d8 a9 r! _
7 r) n0 K- U! C/ ?6 ^这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...
* h3 I4 S4 \- V6 I; Y. A
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。
/ i2 g  [: w: k. I" s7 x& H! A
作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:162 P1 S* p8 [  {0 s
非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...
* E2 }/ ~6 [2 t; N$ v' ^+ ?! I2 T
好吧 解决了问题就行) o* B" T+ g6 l1 P, u

/ j4 ?* L# ^7 s; |估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断
9 r) P1 g5 k# a+ M0 E




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