嵌入式开发者社区

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

作者: 汪洋里的小船0    时间: 2016-8-27 09:37
标题: 多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
4 X' @; z. [- }. L7 P* t3 }1 ^问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?
" u* [, A4 S" G% G7 ~! U8 S补充:不能改变工程及文件结构# W3 D" X: z9 ~. |
请各位大神答疑解惑,必感激不尽/ X9 i: {- s* f- l, _1 J5 }

作者: 希望缄默    时间: 2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00& g# f% f/ x8 x1 `7 w0 ]6 U8 G
. Y- |3 [2 d8 Y2 x) I
  1. /****************************************************************************/
    % D0 j) Q4 ^3 M$ J, `# {
  2. /*                                                                          */9 r3 [. D( d& n5 `/ l" C3 G
  3. /*              BootMenu                                                    */9 d! H; Q5 e5 i" W- L
  4. /*                                                                          */
    , j; N+ p9 p$ Y# X3 s0 O
  5. /*              2014年11月07日                                              */) S2 Z" A4 I7 q8 a1 E5 I
  6. /*                                                                          */
    ( a, G% g2 C% k/ W; n% F0 S* p; N
  7. /****************************************************************************/
    0 t" m2 [+ J: z
  8. #include "uartStdio.h"
    9 Y1 f. ?& v. l* N2 j% t* _3 b8 M

  9. 7 S9 }( X' P' I$ {4 g
  10. /****************************************************************************/; H; n9 e. O0 I7 Q( {3 a
  11. /*                                                                          */
    , M& W1 f( a, h: a8 L! r8 ?
  12. /*              宏定义                                                      */: a- M0 @6 f; t! p
  13. /*                                                                          */* {2 G. b& D( W
  14. /****************************************************************************/
    0 c, C" F4 W' e5 N" a( P
  15. , w+ Z$ ~& `5 x1 |
  16. /****************************************************************************/6 N1 p% e& z5 o4 q# M$ Y5 X
  17. /*                                                                          */
    / r3 y0 M+ I* D) A3 H
  18. /*              全局变量                                                    */
    ' n2 y0 C" V: r1 N0 w6 ~; x
  19. /*                                                                          */+ I% J, d$ o" m- W! J1 a9 W+ Z
  20. /****************************************************************************// K7 V& A8 A( ]* C% R
  21. unsigned int EntryPoint = 0xC0000000;8 _3 f( L& {1 Q+ B0 m6 ]
  22.   R6 N# ?5 S! |. F0 r% q4 k
  23. /****************************************************************************/
    ! V6 D: T. n# X8 N- y/ o& R5 c
  24. /*                                                                          */% A  Q( m. M! D2 v4 ]
  25. /*              函数声明                                                    */9 z* Z/ q* |0 O7 v0 ?: Z% I* e5 K! Z
  26. /*                                                                          */
    0 j- q* D; f' a* y
  27. /****************************************************************************/
    0 O# z+ `5 J- a: u9 H
  28. void (*AppEntry)();
      o. p# e$ g" f5 p; F
  29. - X" {/ C. P! Y8 t( @8 ]
  30. /****************************************************************************/
    - b% t  m8 a3 `/ ~" T
  31. /*                                                                          */
    0 v. [/ R; {0 F- _% z9 S/ }8 o
  32. /*              主函数                                                      */- F$ E2 M, `/ S1 Y# t. q& v
  33. /*                                                                          */
    - v1 V9 s, `5 {% Q
  34. /****************************************************************************/
    ; U" H6 v$ q( p: ~
  35. int main(void)* e6 R; G8 P& [! l% I$ @9 U; b% T
  36. {' z( F# Z7 x& }, t( U
  37.         UARTStdioInit();
    # x. B. Z" }+ P. p+ [

  38. ! o9 Z7 Z9 t9 \5 N
  39.         UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");
    3 [  M- I0 X4 m% v
  40. 4 t" o% O% W8 t, A
  41.         UARTprintf("0.StarterWare LED Test\r\n");
    ! R' ?+ T+ o7 E5 p; ]. p/ i8 `0 H3 b
  42.         UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");/ A7 `- a8 [* Z2 ^& o5 s( d! V
  43.         UARTprintf("2.StarterWare USB OTG HOST Test\r\n");
    ; \& P# B9 K# Q" V5 ]
  44.         UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");9 p& s8 V3 t  j2 S4 p7 Q' h! q

  45. + ^; m0 y3 E$ h: E# j, h" P  e
  46.         UARTprintf("\r\n");
    $ F' Q! e' D0 B+ D

  47. & j" S. d# M: H; ?' `! K2 N
  48.         unsigned char val, status = 1;$ r  C! k& x$ L+ r
  49. Choice:
      S8 f/ w' u" x0 W  K
  50.         val = UARTGetNum();) v  g5 g# ]: E& W6 q0 [! S9 y
  51.         UARTprintf("\r\n");4 q7 ^  y7 e/ ?9 ~

  52. % E9 H/ b1 z# v) T. w3 t( |
  53.         switch(val)7 j$ }# c2 j" w, P  F+ S
  54.         {
    - p% O/ M! t. j, d7 q
  55.                 case 0: EntryPoint = 0xC1000000; break;8 z$ o) @0 v) I/ T' h. ~4 {
  56.                 case 1: EntryPoint = 0xC0251FE0; break;, i# n. A" D+ v$ ~+ l: [* b
  57.                 case 2: EntryPoint = 0xC2000000; break;
    8 m4 D$ s% v6 o; n
  58.                 case 3: EntryPoint = 0xC541DEE0; break;# z/ E9 S7 d! _) X/ v
  59. " B/ H% ?# r( L% g, S
  60.                 default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;. _( L( W5 s( {9 [; Q6 S  [
  61.         }
    ( C( i/ m' C6 l6 \1 c
  62.        
    : X0 ~/ S+ |, e& `$ i
  63.         if(status != 0)
    / Q' C* H8 D, i% t( R- L7 e8 o
  64.         {, k% o+ g) p& g9 i
  65.                 UARTprintf("Starting Application ......\n\r\n");0 }5 U" ?$ d9 M1 G
  66. / R" z/ Y: t$ N6 V  K
  67.                 AppEntry = (void (*)(void))EntryPoint;" m, b& e) S% h3 u7 ]. G" V1 a! {
  68.                 (*AppEntry)();
    ; \- n/ _4 Q( N1 F% H) Q
  69.         }  D$ J1 S% z. i- L# l: b1 d
  70. ; I5 c4 z8 \& X. P, m) a/ `
  71.         return 0;: Q, d* P" I1 y+ R' T3 Y9 c6 ^
  72. }
    % ?' x; _: P2 D- J
复制代码

7 p2 Q( j% K* ~8 Z" q* q7 ?
, Q+ v# b3 m! \
作者: 汪洋里的小船0    时间: 2016-9-4 20:48
您好,我试了一下这种方法,结果报错了
4 l2 |# O4 d4 R2 Y: ?
  p5 F  F+ C5 r




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