嵌入式开发者社区

标题: 多个独立程序之间跳转问题 [打印本页]

作者: 汪洋里的小船0    时间: 2016-8-27 09:37
标题: 多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
: m2 S& J" V2 E6 ~问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?
2 c' @- }2 K$ s5 i* x补充:不能改变工程及文件结构4 M" Q" T3 C( k, H
请各位大神答疑解惑,必感激不尽( |+ [2 U) v! w8 @* M7 b

作者: 希望缄默    时间: 2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00# r6 h$ g& _& G$ y; M" j* V" {; F
, R( n: e0 q7 s) R6 f
  1. /****************************************************************************/- b3 @) N% {+ A; A! j  Z$ x; l& ~
  2. /*                                                                          */! q7 e6 J2 r  `$ @* V) `/ d
  3. /*              BootMenu                                                    */) r- j  q/ A9 M  \; J+ }8 k+ G
  4. /*                                                                          */
    $ X5 [7 \# D' x8 l$ v" L
  5. /*              2014年11月07日                                              */
    0 D; l* ?& m% b& j0 C) D
  6. /*                                                                          */
    ) o+ ]+ T3 p1 b, U
  7. /****************************************************************************/
    # v/ d3 r9 e/ P2 Z8 U& D5 ~8 ]
  8. #include "uartStdio.h"
    ) C' f* u) o; F0 T
  9. 5 w. R" y( M  Z" r4 F# _2 a7 }
  10. /****************************************************************************/" v- c2 ]& m$ `( f9 ?- N9 U
  11. /*                                                                          */
    8 T  y' S. q  h/ R* T0 q, w8 ^
  12. /*              宏定义                                                      */
    6 B1 m% j9 l+ W2 ]- _
  13. /*                                                                          */
    " P2 {4 t" m: j- A* r! c0 ]
  14. /****************************************************************************/
    ) Z9 \- g9 ^: T" l

  15. + S# I; a+ a) ?* ^7 }
  16. /****************************************************************************/: h# a1 }, k& O/ ^6 P! l$ h1 }
  17. /*                                                                          */
    + w1 f5 r$ w6 o' ^* ]% e: O+ U# S+ w
  18. /*              全局变量                                                    */
    ( c  ]8 S/ H: f+ S: f: R: }4 n1 `
  19. /*                                                                          */9 `, f- Z3 w; N1 r) `- u6 T
  20. /****************************************************************************/
    3 ~3 P& W' V% j1 ]& k
  21. unsigned int EntryPoint = 0xC0000000;+ m& J! [0 t  {. o+ Y
  22. , k+ c5 m/ V; Y, y
  23. /****************************************************************************/
    . `3 E$ s( ~" k" Y  Q
  24. /*                                                                          */
    ; _& n5 o" w* Y! d* H1 x4 ]1 K
  25. /*              函数声明                                                    */
    ( ^) U  P+ o9 R' N
  26. /*                                                                          */" u5 H$ `9 W7 ~2 S9 b, F" v3 Z/ N5 Z
  27. /****************************************************************************/
    / Y6 f. F' a" ~: b( c
  28. void (*AppEntry)();$ q- g, `* _0 v7 V5 p4 H* F( o

  29. + }- ?/ M+ j# k6 M% _) _2 k3 E
  30. /****************************************************************************/7 Z, a* T0 @0 I* s4 R
  31. /*                                                                          */' }- ^7 G1 I- g9 f# ?2 S2 }
  32. /*              主函数                                                      */
    8 l, |/ j/ }6 n' C
  33. /*                                                                          */9 ?3 G% Y/ K+ \, }. K
  34. /****************************************************************************/
    3 Q7 h0 _8 R, a1 ]: T" i
  35. int main(void)* Q, e" ?; T& J$ x2 E! W+ s% n' [
  36. {0 x2 J* g- ^: k6 p* k
  37.         UARTStdioInit();
    3 P: v2 l; W9 i* d5 W

  38. 1 t+ V' J) G$ Z, j. |3 k2 |
  39.         UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");1 c4 p6 F- t, g* H% G' X% K- w
  40. * _, C# K* |/ S- M  J3 {+ `, r( D
  41.         UARTprintf("0.StarterWare LED Test\r\n");2 ?. X. @0 D( [5 J8 v% U
  42.         UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
    ' r! Y- a9 G7 |) r: I9 X+ B) J
  43.         UARTprintf("2.StarterWare USB OTG HOST Test\r\n");: w2 v! d- w/ E! U
  44.         UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");& J- F6 }$ u6 Z7 h, N) S

  45. * E5 \6 K8 X+ p/ p" I8 @
  46.         UARTprintf("\r\n");2 Z9 [1 E/ _/ ^0 t; R# U* X" r9 p$ m

  47. 9 R& E* _- D+ `( S
  48.         unsigned char val, status = 1;5 @) C1 s' ~5 b/ V" J( D, L' U0 @
  49. Choice:
    . u# i, t+ b3 F. ?% X2 d1 o
  50.         val = UARTGetNum();- R& t6 h. u" Q: M% W1 s3 |, N. x
  51.         UARTprintf("\r\n");7 s! {4 g8 r( k  |; Y
  52. 7 ], m$ @5 J6 ~0 c* X; m. K
  53.         switch(val)
    1 J5 u9 W8 w& h+ w# N% L
  54.         {
      h% [  t5 q3 ]* g
  55.                 case 0: EntryPoint = 0xC1000000; break;
    0 e4 c6 M- j- I& v6 t0 W' E
  56.                 case 1: EntryPoint = 0xC0251FE0; break;
    ; y5 S9 o; N- j5 G. a( J+ e
  57.                 case 2: EntryPoint = 0xC2000000; break;
    8 A+ M7 `; S6 w" x
  58.                 case 3: EntryPoint = 0xC541DEE0; break;* H% I; [' z/ u6 d6 N6 h

  59. ) O, n/ I6 ]( U( O! \" d; N! D
  60.                 default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
    # }% P5 w6 q2 r2 Q% l8 A: o" T' P9 @
  61.         }6 x8 ~) L6 U* j9 M" p* J
  62.        
    : H0 h- t; M- C# x% f9 y
  63.         if(status != 0)6 s) U1 q; @( S; @0 I" e- w8 L, C
  64.         {3 w9 E9 [' v% g8 I1 }( \/ f9 T
  65.                 UARTprintf("Starting Application ......\n\r\n");
    4 \% w3 }  b3 q) f! m: ^3 O

  66.   q1 v; U, R' T$ _
  67.                 AppEntry = (void (*)(void))EntryPoint;
    " U) Z' R3 P( k0 t
  68.                 (*AppEntry)();. b( f3 E# p( ]0 Z2 T' R
  69.         }  {% C- {  M% q" f% n/ A6 E

  70. $ F  n, w# ^3 K9 W0 v3 C
  71.         return 0;
    $ {3 N# `2 T1 _/ ]! F2 X$ x
  72. }* u7 P; k: }& x5 P% x8 I" ^
复制代码

% x, g* y4 I+ J. K  K
8 {' i6 a( W" X% ?3 D
作者: 汪洋里的小船0    时间: 2016-9-4 20:48
您好,我试了一下这种方法,结果报错了
9 T  L; U6 N- h' X& W3 l2 B/ ?
: l" K3 ^1 i( P$ k




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