嵌入式开发者社区

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

作者: 汪洋里的小船0    时间: 2016-8-27 09:37
标题: 多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
7 L# \7 Z( x% Z- ]" d) S2 q4 j问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?
+ C# z& j4 @  c/ c; U" H) u补充:不能改变工程及文件结构. y& h- o5 h7 X$ Y* }3 i! ]* R+ }" L7 T
请各位大神答疑解惑,必感激不尽/ U5 V  J6 n) F1 Y; s+ ~  J+ D

作者: 希望缄默    时间: 2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00
* ^. f& Q- Z& ]; F8 U- L
! `) I; a: \! G! p, E4 @
  1. /****************************************************************************/1 ~' \8 U9 y+ O3 }3 d' |6 O( v* ?! ]
  2. /*                                                                          */
    . p& P- y2 Z+ I8 k  H
  3. /*              BootMenu                                                    */
    / r  {9 n4 r" y! m$ w
  4. /*                                                                          */. f2 |% I0 g9 t1 I& i
  5. /*              2014年11月07日                                              */8 k# ^0 h( f/ N' U
  6. /*                                                                          */' Y. K1 c8 [) M3 y- ~, P% D
  7. /****************************************************************************/
    5 U% I0 A9 Z" T! k& |: Q% S5 e
  8. #include "uartStdio.h"
    ; @  |  S( `) }6 Y% F
  9. 4 j5 V( n* }' N) \7 Z. m
  10. /****************************************************************************/
    / y& g5 F: o4 a( K# b
  11. /*                                                                          */
    $ q9 `$ p# b& R- O
  12. /*              宏定义                                                      */
    ' T1 P+ Z4 M2 U
  13. /*                                                                          */. \" q, M. }. [- U( ^) L
  14. /****************************************************************************/
    . [, S4 _' V' g% l; n

  15. . X! i! w2 w  u
  16. /****************************************************************************/
    9 S+ w3 j. q' R7 _" Z( y
  17. /*                                                                          */
    ; Y: j8 I8 R' `3 j6 T2 T
  18. /*              全局变量                                                    */4 P5 J* @9 E- _7 d! f
  19. /*                                                                          */
    & f, ~# ~4 U2 S' M" v6 Y- ^9 B( V
  20. /****************************************************************************/
    7 I5 B2 {7 x2 n! z' x
  21. unsigned int EntryPoint = 0xC0000000;1 R0 F4 L% t* r9 I
  22. + U! i# |" l4 N
  23. /****************************************************************************/! v+ v6 k8 {) k8 _3 F- V  \- O( y
  24. /*                                                                          */- d( @- W9 I/ q( h9 j; n
  25. /*              函数声明                                                    */4 z* d0 T  ^6 j1 n7 f6 K6 b: b$ \( ], G
  26. /*                                                                          */9 F  f7 O" K4 v% O
  27. /****************************************************************************/7 U7 H) D% d! q2 F6 e0 w" a+ w; Y
  28. void (*AppEntry)();
    / t  i5 q, q" o& s6 T5 x$ t
  29. , h: b  N5 `+ u2 M# w
  30. /****************************************************************************/
    ! j# s- F0 Y  r: r2 S
  31. /*                                                                          */: E, D5 m- n9 M6 \, V
  32. /*              主函数                                                      */1 H5 P8 v1 _$ t* D
  33. /*                                                                          */
    % o% X$ r3 `3 E, u1 `5 E
  34. /****************************************************************************/
    . l4 Z: E3 V$ e: U8 `
  35. int main(void)
    % \- f1 x" s- p+ D
  36. {) s' B& V, _% b0 ^4 C. S: f
  37.         UARTStdioInit();
    6 a8 S& ^# ]; h; d, G& B/ Z
  38. 9 D) G' O" y2 I# Q, J9 q
  39.         UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");
    ; s, q0 q% W4 D* f, T& B0 o
  40. $ A: O  h0 n* |1 ^: ]: p
  41.         UARTprintf("0.StarterWare LED Test\r\n");
    4 ^6 E1 T$ N- u& a) F
  42.         UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
    , v1 D& T9 z: U4 I9 }, `
  43.         UARTprintf("2.StarterWare USB OTG HOST Test\r\n");
    " G1 g3 e, a& @5 [( R
  44.         UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");! a* Y; J- q$ h0 h

  45. - @7 m& X7 L' y/ O8 y" f2 ?7 G
  46.         UARTprintf("\r\n");- j4 L6 A7 B/ _4 j% U, d( j  x8 M

  47. ; m- w) a# q( J' e2 O  g) z; R
  48.         unsigned char val, status = 1;
    9 f% D# O6 \8 j1 Z1 V$ J
  49. Choice:
    & [' b0 T) ?3 i9 D$ m8 M
  50.         val = UARTGetNum();* |0 V& n# I& A
  51.         UARTprintf("\r\n");& q. D/ g$ C1 O/ K* o) h* t

  52. 3 ?0 Z" m0 p' I! g+ M. T
  53.         switch(val)1 b  N% I  k( C: O! w; H" w
  54.         {
    , Q# x) Q) [$ D0 N
  55.                 case 0: EntryPoint = 0xC1000000; break;
    3 K7 P2 F- X5 w3 ?& P
  56.                 case 1: EntryPoint = 0xC0251FE0; break;
    - z$ n* q3 T7 o' @
  57.                 case 2: EntryPoint = 0xC2000000; break;
    : r& Z$ V2 E; s! u
  58.                 case 3: EntryPoint = 0xC541DEE0; break;
    ! P1 P1 ~% z! Y& J0 W# F

  59. + ~* Z8 ], I- d( t. [6 _, ?& G
  60.                 default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
    1 I; B+ K$ D- G8 K4 j1 ~
  61.         }
    8 N0 `' V) L: j" _
  62.        
    - P6 f& b0 v8 a$ j$ E1 A
  63.         if(status != 0)
    / ]' n, U$ U, t, m0 ]9 }
  64.         {
    2 v4 n# J& ^+ V4 c3 }* N0 s# a
  65.                 UARTprintf("Starting Application ......\n\r\n");2 J. e# Z- v3 S% s: {2 z0 x3 L
  66. " X( x2 s4 I  Q* g( h' P, x
  67.                 AppEntry = (void (*)(void))EntryPoint;, S/ k$ a% h7 s* J: [' D
  68.                 (*AppEntry)();
    8 R  \4 x$ Y" j
  69.         }
    ! J+ _" a. ^6 v: Y( B

  70. 1 ~# n  q4 q" ]6 n. ?) A+ p
  71.         return 0;
    4 A; k/ y0 Q3 ?6 Z
  72. }) X# p: z. w9 V- {7 A( v
复制代码

, S  J7 t$ \+ u# ^4 J8 A  B) u
  y; }5 F* X. K+ I9 O
作者: 汪洋里的小船0    时间: 2016-9-4 20:48
您好,我试了一下这种方法,结果报错了
2 H6 R* v* ?% d5 \
2 K) }4 C2 O! l+ ~; c% g




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