嵌入式开发者社区

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

作者: 汪洋里的小船0    时间: 2016-8-27 09:37
标题: 多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
1 u* M: f8 S# G3 f( a# k3 {2 S4 l问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?/ Q5 @$ Y/ J8 O
补充:不能改变工程及文件结构, A1 J$ D; \! Q2 X2 s# ^
请各位大神答疑解惑,必感激不尽$ S4 r# Q+ I9 Q: b, M. c

作者: 希望缄默    时间: 2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00
* x3 m7 @( o; K) M: b& f& X: y1 t) v# f% I) Z
  1. /****************************************************************************/5 F4 |* {" U4 W9 P
  2. /*                                                                          */, p2 a5 r' w2 }( R6 z, R
  3. /*              BootMenu                                                    */
      U3 A& W! M  {7 {& s
  4. /*                                                                          */, }! J8 l: X( s4 K+ _* Q
  5. /*              2014年11月07日                                              */
    ( T; D7 E4 e. F/ a; \5 Z
  6. /*                                                                          */
    5 z0 Y5 s: H& `) n
  7. /****************************************************************************/
    - E) [; N- R2 n( c8 J" ^4 l
  8. #include "uartStdio.h"
    ; n, {2 ~1 J! \& x- S& {* \- D' C

  9. 5 O: V: s# b" X
  10. /****************************************************************************/3 W1 [1 s9 J+ G5 g+ @6 w# m/ B3 B
  11. /*                                                                          */6 F5 E. |4 ^/ s0 P
  12. /*              宏定义                                                      */
    ! P7 z  ~% \( i, ~8 N
  13. /*                                                                          */5 n) d8 Y2 A. \" A- z  D% L
  14. /****************************************************************************/
    2 a  F. B) |6 j1 o2 j1 q
  15. 4 `9 o2 Q! K+ x! s0 d
  16. /****************************************************************************/
    8 m: T2 @; y& Q" Z9 }: l( p$ w* D
  17. /*                                                                          */
    3 D, E2 h9 x% R7 ?. R& K8 ^
  18. /*              全局变量                                                    */
    4 j# {  \) t* {& {, w; S
  19. /*                                                                          */: e- O1 W0 I: f1 l
  20. /****************************************************************************/
    / _% p' K3 I% G/ f/ V4 q
  21. unsigned int EntryPoint = 0xC0000000;( o/ _# v; K6 g& Z. p

  22. / ^4 V4 w+ V: ^1 @& h( o8 w
  23. /****************************************************************************/, D5 P% p. W, z' \+ c; f* z9 K
  24. /*                                                                          */$ ^/ a! Y+ F; o7 _% F) e
  25. /*              函数声明                                                    */0 Q2 H6 o0 |$ N1 w  v# q* a
  26. /*                                                                          */& t; O/ {+ {  W: W! j0 l
  27. /****************************************************************************/1 Z, }8 [! A/ r' W# H0 H9 p3 N8 ^7 R
  28. void (*AppEntry)();  D* Z# {: C" O9 b) |7 }
  29. # U; ]8 N7 @" `# ]* B- i1 A2 K9 r% i
  30. /****************************************************************************/
    ) M) v4 q9 O  C( e0 B
  31. /*                                                                          */8 I! u; J# h( h9 F* V
  32. /*              主函数                                                      */: v9 o. A" {. d4 y8 |' K
  33. /*                                                                          */& l( y- ^; M! P2 [
  34. /****************************************************************************/
    2 H9 {6 m. ~! G: z' ~
  35. int main(void); j9 L6 z) Y6 |0 [3 T, E0 F0 m$ F5 |
  36. {1 [/ a' @( Y2 {
  37.         UARTStdioInit();
    " `4 m9 I5 g" h) B
  38. ) p) t$ U5 j; Y8 S' l
  39.         UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");+ z" X: q! e. V7 N$ \

  40. / V" p8 Q, X- y
  41.         UARTprintf("0.StarterWare LED Test\r\n");; E  |1 ?; O8 z9 F
  42.         UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
    9 h! v. g: [; W$ F+ U
  43.         UARTprintf("2.StarterWare USB OTG HOST Test\r\n");3 p5 a( V  D8 k
  44.         UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");% }# A9 z9 i. f' L' ^
  45. ! }5 n) i. a, @
  46.         UARTprintf("\r\n");0 k& S( N# H; o- i) W+ W

  47. " c/ y' @% G/ f6 N+ ]9 |- O! H8 k# a' w
  48.         unsigned char val, status = 1;% U! e" p3 Q* [& x
  49. Choice:1 R; A0 s( j& n* g
  50.         val = UARTGetNum();
    " v! T: d5 S0 P  }  S+ M: O1 j
  51.         UARTprintf("\r\n");
    4 f! m9 n* f  H* y  e+ a' {# L

  52. % v' [* k3 y1 K2 C
  53.         switch(val), A& Z/ a% o2 \. u
  54.         {
    9 u1 ]- a# A) f* y/ Z" }2 K% p: `
  55.                 case 0: EntryPoint = 0xC1000000; break;
    . o, J' H( ]" `+ w
  56.                 case 1: EntryPoint = 0xC0251FE0; break;4 w. u" L3 O$ u% v
  57.                 case 2: EntryPoint = 0xC2000000; break;3 D9 G! g. D9 T) l5 w% n# ]
  58.                 case 3: EntryPoint = 0xC541DEE0; break;# _" p7 d9 D6 c( c1 b. v
  59. * x# S4 |9 l" [2 I5 e& ?
  60.                 default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
    $ K: `# @! L4 E& n5 J- W' {
  61.         }
    6 R! ^5 W: n0 L* d( K
  62.         ! j4 K2 _$ v: f) H
  63.         if(status != 0)
    1 U0 l' q- e; H0 @% ~- Z2 w
  64.         {
    / w% O( d& r% D
  65.                 UARTprintf("Starting Application ......\n\r\n");# S$ w" l- T5 c0 x0 d- j

  66. . j$ F2 F5 g* i! F
  67.                 AppEntry = (void (*)(void))EntryPoint;
    3 c5 ?( O  s6 C3 z7 f0 r  u' }
  68.                 (*AppEntry)();
    , D; T$ e% \2 b4 u9 \9 y
  69.         }
    5 x3 X" _8 D1 e) S

  70. : j8 k0 w1 V( w2 C2 M* u& d+ Q
  71.         return 0;
    ; h. S% T6 t9 N$ h! Q4 U* X
  72. }
    ! {- O7 ~6 U3 _# X) z/ c9 o8 G
复制代码
4 c$ T2 u- S; ]" k: {7 t5 @( F& ]
6 S& \, [2 v! n- c' F6 W3 ~

作者: 汪洋里的小船0    时间: 2016-9-4 20:48
您好,我试了一下这种方法,结果报错了9 J+ L9 ?5 i! \2 y
" _, W+ h7 i/ |! e3 {1 s/ B9 @! [





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