嵌入式开发者社区

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

作者: 378087736    时间: 2015-1-19 16:12
标题: 关于HWI创建的问题
您好,最近我在把创龙的基本startware的UPP移植到基于syslink下面,在进行UPP初始化时,新建HWI中断,但是当运行到Hwi_create()函数时,DSP那端总是跑飞了,Hwi创建程序片段如下:
/ f7 ~& X& V1 E2 S% Z% n7 s0 Vvoid UPP_new(void)! u9 ]0 k* ]& U9 N
{
3 _) G% k, n3 x, U$ M+ H    PSCInit();$ {# O  M; m# q! A# j9 Y

% x5 l7 ^" X, i2 N    UPPPinMuxSetup();  r, q$ o' N* Q( S) s  S" h

: A$ i& v. R: W! _( ~& s! N    UPPInit();2 x# H1 I. P* D' g2 ^$ U' h

; Y4 \8 \1 [2 E( D# K6 [    UPPInterruptInit();
7 ?3 E( o0 D5 u7 F  q0 r, p" _! Z$ K1 V) o3 T
    UPPEnable();
4 R2 b- Z: B; V+ A4 \$ k% G2 Q1 q, y1 W# _9 K6 d1 g4 ]
    Hwi_Handle hwi; % }, K! B1 d1 g/ P
    Hwi_Params hwiParams;     
% P; l: d6 X  {    Error_Block eb;) ?# I) a% X7 d  t$ D+ R4 Q

8 w( r- D  h* E5 [( ^  g$ U    Error_init(&eb);' V$ M8 ]4 a3 F( E/ W
/ v% q8 ^$ s4 g) B+ n+ r8 q; W
    Hwi_Params_init(&hwiParams);  
& ?7 F) P6 X8 A. ?    hwiParams.arg = 0;
, ~7 Q! S' V8 G. J) T    hwiParams.maskSetting = Hwi_MaskingOption_SELF;
( U% c$ N8 Z8 e    hwiParams.enableInt = TRUE;) ?; y0 N1 Q& D+ ]. f
    hwiParams.eventId = SYS_INT_UPP_INT;
5 Z! }9 y4 Z/ ?) d# j2 Y    hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);
) b6 k* z/ P3 A: B% Q, v! j
2 E- z- ]. K, o9 y6 z0 o    if (hwi == NULL)
! a9 q, g* T0 s0 F( K$ u* K            System_abort("Hwi create failed");9 @/ B' ]; V* [, m
}4 T& c& i8 D2 y: k8 N3 W/ y6 N

* ~- c8 J& p. ]0 d5 W! Z: d每次运行到  hwi = Hwi_create(C674X_MASK_INT5, UPPIsr, &hwiParams, &eb);时程序就飞了,实在找不到原因了,刚接触BIOS的菜鸟求助各路大神们。。。+ J9 R5 `3 d* w; Z7 Z) z$ N
4 d( T( S9 u3 D& B9 Q' h6 h

) {$ \& P- o" N( F$ m; W/ T
作者: 希望缄默    时间: 2015-1-19 18:17
你是怎么判断跑飞的?7 @1 Z+ W$ Z/ S

作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务
7 t( S3 |" I; o+ P& Y
作者: Lewis    时间: 2015-1-19 18:45
创建硬件中断前,先新建一个任务4 ]+ q4 _' y9 Q- o* ?5 }; w( a- W

作者: 378087736    时间: 2015-1-19 22:34
希望缄默 发表于 2015-1-19 18:17# R6 @4 T3 }( {/ z) n
你是怎么判断跑飞的?

6 P2 e* v. @- h: ^) ?* D我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
' B, l% v: |3 l  j( a2 K0 M
作者: 378087736    时间: 2015-1-19 22:35
希望缄默 发表于 2015-1-19 18:17
* {/ u8 s0 s" V  z9 y你是怎么判断跑飞的?
4 `& K" |* v# e. N% u! {
我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。
0 o# D6 l! q/ n+ Q3 Z
作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45
- j" V" \4 k! X+ v创建硬件中断前,先新建一个任务

4 p# ^9 O: i2 ?8 eDSP端syslink初始化的时候已经新了任务, 创建Hwi需要单独创建一个任务?6 N' u$ _2 \0 o: d

作者: 378087736    时间: 2015-1-19 22:37
Lewis 发表于 2015-1-19 18:45( ]& n" }/ e# A' g
创建硬件中断前,先新建一个任务
: z% O" L$ ]% }  ^- t3 V
我是在DSP接收到ARM端的消息命令后,开启UPP的. e) {$ l+ S  G8 h1 w9 ~4 p/ `

作者: 希望缄默    时间: 2015-1-20 09:20
378087736 发表于 2015-1-19 22:35
2 q: l" ~2 p+ H我是跑的双核,我用CCS单步进行,运行此步程序就不知道跑哪去了。。。

; _; f9 |6 w" p) x5 n程序跑飞后一般 PC 指针是位于 ROM 中的~
1 e6 d  l5 q" {% ^
作者: 378087736    时间: 2015-1-20 10:55
希望缄默 发表于 2015-1-20 09:20" G& {9 g. u- ^; u8 x( o: L
程序跑飞后一般 PC 指针是位于 ROM 中的~

6 q# \3 N0 j- ]# Q: \% A我刚才又单步了一下,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.。。请问这是什么错误呢?
0 X9 m3 ^+ M! s1 N. V2 O
作者: 378087736    时间: 2015-1-20 10:59
希望缄默 发表于 2015-1-20 09:20
# x% ~' b! u  x) R- U程序跑飞后一般 PC 指针是位于 ROM 中的~
9 A* }2 ^& \9 T" M8 d$ t5 u% F
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
  _0 H. y2 J5 E0 v) k# s+ K) v0 }9 A
作者: 希望缄默    时间: 2015-1-20 11:32
378087736 发表于 2015-1-20 10:598 L$ {; j+ ?6 T1 V9 j& |
这个找不到文件是库没弄好的原因吗,我是照着创龙AD那个例子改的,配置都是一样的,没动过
5 N) V" a. q  }. S- n& D2 M ...

' V3 @( g+ M  [出错了.....6 e/ R8 n$ @- K1 u3 Y! a' {7 X: z
& N! r- `! Y% ?$ }
把相关代码贴上来 看下$ ~9 \. W2 P' c; _8 |

作者: 378087736    时间: 2015-1-20 13:38
本帖最后由 378087736 于 2015-1-21 16:03 编辑
5 C/ r6 h: H9 `
希望缄默 发表于 2015-1-20 11:32
; P7 F8 B3 f6 Q" i% m出错了.....4 O- r/ V* Q  Q6 Y) o
) l6 _3 \% ^, O, L1 J& j
把相关代码贴上来 看下

8 f5 H- E! J& f1 ^* O" `* w% w你好,我把完整的工程代码上传了,里面有个程序说明
; C5 v2 b. _$ X: c  ~: \; O4 s! u5 P" X0 g

1 D) F6 h5 s$ ]& Y9 D
3 S8 n% V' ?$ A, v: \  W) c+ K
作者: 378087736    时间: 2015-1-21 08:50
希望缄默 发表于 2015-1-20 11:326 n2 F5 b; w( K# N5 M0 k2 K
出错了.....
# I* u  w8 c$ w: s/ ]2 [! g. Q( ]9 X+ R
把相关代码贴上来 看下

: O# P1 N5 I" @$ m% t. \能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问题。。。7 n' }. P+ \7 I) M, Q# Y

作者: 希望缄默    时间: 2015-1-21 09:53
378087736 发表于 2015-1-21 08:50
! L; ]) H, t+ q7 N" Z$ d# q" G( A7 P能帮我看一下吗,我在DSP的运行的最开始处main完成任务创建后,使用hwi_create()创建中断也一样是这个问 ...

& F/ G+ t1 i; P把错误提示截图也发上来吧
4 d( J* N! w; A( d! ~
作者: 378087736    时间: 2015-1-21 09:59
希望缄默 发表于 2015-1-21 09:536 F* W( T, [1 z5 I, w! W0 n
把错误提示截图也发上来吧

+ [9 _( V0 B; h  Y" D错误提示就是这样的:运行到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.。然后程序就无法继续运行下一条程序了。我上面上传了源程序,你那能跑一下吗。. v" u/ Z9 o) l( w, M1 Y

作者: 希望缄默    时间: 2015-1-21 10:06
378087736 发表于 2015-1-21 09:59' A  I( q7 D3 C4 \  w2 z
错误提示就是这样的:运行到Hwi_create()函数时:Can't find a soure file at "/tmp/TI_MKLIB7PNesw/SRC/ ...
5 l+ I. ?: u6 z$ m) S
截图% K/ n! k" w( e$ Y3 K' B6 u

作者: 378087736    时间: 2015-1-21 10:28
希望缄默 发表于 2015-1-21 10:06
- {, Z3 x$ z2 j+ T& W截图
1 ]" S* u+ U! s" N4 G
请看图
) U' Q# f% u: h% D' I  A) `7 N& o' q" T$ N) r6 u- r: M* X

作者: 378087736    时间: 2015-1-21 10:29
本帖最后由 378087736 于 2015-1-21 10:31 编辑
! \. G7 c- \8 }( G
希望缄默 发表于 2015-1-21 10:06
/ Z7 a3 }1 @2 z截图
" g3 S# g% V/ m( m9 _' J
请看图* c3 [' f# y& C, Y
1 U0 B5 F! v/ c, A4 S
* a- B5 g$ G  G7 p5 z; ?

作者: 希望缄默    时间: 2015-1-21 13:10
378087736 发表于 2015-1-21 10:299 M7 v$ b0 Y/ q: ?  q- n2 ?0 p
请看图

) }$ B4 f- P1 O9 c8 Q# v3 P5 @, q/ W看样子是还没有执行到 if (hwi == NULL) 就出错了~
/ T; |% y& Y: y6 P' {; b8 Y' v6 N( V% v% O) j/ a
这样吧 使用 Step into 调到 hwi_create 函数内部 看看是在哪里出错的$ k5 L2 {8 U' z' v( a( v

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

3 h+ L! U1 ?. x  H3 Z我重装系统了 等我配置好环境 我再试一下: k5 [& {9 k: {

作者: 378087736    时间: 2015-1-21 15:16
希望缄默 发表于 2015-1-21 13:10/ P$ {; M% m' x# L/ J8 k2 n1 ?" I
看样子是还没有执行到 if (hwi == NULL) 就出错了~- m' g- D& Q6 O- U2 M

$ y# A0 X' u- ~0 P! F! u这样吧 使用 Step into 调到 hwi_create 函数内部 看 ...

4 M% ~, h: V4 p- T( c; Y非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这些中断号是怎么分配的。" w2 Q2 M( k0 H" y& K- V$ o$ V4 k

作者: 希望缄默    时间: 2015-1-21 15:29
378087736 发表于 2015-1-21 15:16
- F4 O8 U& f! ]非常谢谢大神不厌其烦的跟贴回答!问题已解决,我把中断号改成C674X_MASK_INT4就可以了,但是仍然不解这 ...

: h  C; {- }+ d: Y6 K好吧 解决了问题就行
" t2 w, C$ e6 A% ]% l' _- Y3 p- N4 P" h) a' ?# q) M. @* @
估计是跟其它中断有冲突 SYS/BIOS 系统会占用一个中断; d$ Q( [1 G" l% {. J$ [





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