嵌入式开发者社区

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

作者: 汪洋里的小船0    时间: 2016-8-27 09:37
标题: 多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
  k" j# G$ m$ o& M) g. ^  w7 k问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?
7 w1 ?, C( e) \! g, G! E" V- z7 G补充:不能改变工程及文件结构) v" \- b6 o9 g, M, z6 |! E
请各位大神答疑解惑,必感激不尽+ Z# h; J& C- f" [

作者: 希望缄默    时间: 2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00: c+ M2 S! V) ~3 q9 {
8 Y. n7 ?4 C! Y. J, S
  1. /****************************************************************************/
    + w/ T' u3 a7 r' y, J
  2. /*                                                                          */; H5 I: x* D' r2 r' X0 h7 k
  3. /*              BootMenu                                                    */
    + q- |9 S  y) w9 r( X$ m5 y5 r
  4. /*                                                                          */
    * O; z. D. l6 h0 `* L
  5. /*              2014年11月07日                                              */3 E* m+ \! I2 D2 k. S
  6. /*                                                                          */
    ( V. B4 b( r$ c, `
  7. /****************************************************************************/
    ! }" k; Z; |$ F7 w
  8. #include "uartStdio.h"
    " P/ W1 j6 y% b) j* c

  9. 2 K* X5 }: p3 p
  10. /****************************************************************************/3 i' z& q6 b' E
  11. /*                                                                          */4 s! i3 {6 y5 [9 E
  12. /*              宏定义                                                      */
    3 t* Z; d0 [  t( H# }  `, i
  13. /*                                                                          */7 l7 G. P. i+ B; X# C
  14. /****************************************************************************/  |+ e, }1 X" _0 E- k! u
  15. . q$ f% a( W% Z& d( T/ P
  16. /****************************************************************************/
    3 n* h6 n# q! W! E, J0 ~4 y) r
  17. /*                                                                          */# {: B5 M0 I7 z
  18. /*              全局变量                                                    */
    ) s$ _: C0 n# m, C- {
  19. /*                                                                          */) C6 B" d  o" G5 Y& e6 R0 D" p
  20. /****************************************************************************/
    " F2 F+ v( h, Q- q
  21. unsigned int EntryPoint = 0xC0000000;
      }# I6 l9 y+ B. |1 J* k- t

  22. 4 z7 L0 o% p: E" @2 r5 }& O' y
  23. /****************************************************************************/% K  `3 G; X+ t# Q
  24. /*                                                                          */
    2 d" `2 V5 L( @, ^$ n
  25. /*              函数声明                                                    */
    5 f" U7 n/ j! p: h9 n
  26. /*                                                                          */
    / q& Z7 o* ~: a4 d  M* G7 V
  27. /****************************************************************************/  q: U' d4 Y% D9 V
  28. void (*AppEntry)();
    ) w2 r. N. r; @6 C
  29. 8 _) k4 B! h4 N+ b/ e( K/ M1 }
  30. /****************************************************************************/2 C1 F+ E& L- c  f! x, D7 o- x
  31. /*                                                                          */* }* I1 @7 r/ S9 ?! G
  32. /*              主函数                                                      */
    $ r8 p& g0 s  O; {" Q
  33. /*                                                                          */
    7 s  o$ v- ]- D* j: n
  34. /****************************************************************************/
    ! L. c& Y3 ?) [
  35. int main(void)) r; a6 g( I8 X% {$ m
  36. {
    $ A  c) i0 e% ?3 |5 d) U6 ]# J4 f
  37.         UARTStdioInit();+ ]) x7 v- @- `, ~. y' B

  38. # K( \& j  I& o" W, {2 n  \5 |
  39.         UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");& K6 v6 k: B. S* o4 |- I; B
  40. : y+ K. R; D9 f0 U1 t8 c! ~2 K3 M
  41.         UARTprintf("0.StarterWare LED Test\r\n");
    0 N+ P- M1 |- ]/ H8 p/ a  \/ m
  42.         UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
    : [9 h: R! v8 t, y
  43.         UARTprintf("2.StarterWare USB OTG HOST Test\r\n");% Z( |0 F& V# N, Q, ]& V
  44.         UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");: ?# f6 o% n% I; [3 K! j% I
  45. # Q% {0 A& V4 H2 D3 d
  46.         UARTprintf("\r\n");3 {- t- i$ n3 g* D3 I

  47. $ F3 P" I3 t4 S$ f
  48.         unsigned char val, status = 1;9 H9 c" i7 H0 e  F
  49. Choice:; ?- _4 B5 d! ]8 d8 `& U& V6 o1 L
  50.         val = UARTGetNum();. t2 {+ Y7 P1 d* Q# j3 H  s8 A1 R
  51.         UARTprintf("\r\n");( E/ m2 F6 M# i
  52. . N+ E! q; F" P9 n+ [$ f" s3 l
  53.         switch(val)" r! v/ {+ z1 `2 v) {
  54.         {9 a! G- Y- T* z! X) v, J
  55.                 case 0: EntryPoint = 0xC1000000; break;6 a# ~) D3 u- |8 ~; B1 m  U3 S/ [! X
  56.                 case 1: EntryPoint = 0xC0251FE0; break;
    7 N- F; q# u; K6 r  @1 S6 l
  57.                 case 2: EntryPoint = 0xC2000000; break;3 y6 k2 Q$ g) @; r
  58.                 case 3: EntryPoint = 0xC541DEE0; break;+ N7 P, \3 I/ B

  59. # W) Y& K. M! _3 `
  60.                 default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
    ! I: T* A* q+ K' a
  61.         }
    - g6 e) o4 ?9 c/ e! C9 Y' v" K
  62.        
    ( J7 i3 p) S0 m
  63.         if(status != 0)
    : p5 ?( F( a$ t1 |3 j- w
  64.         {
    6 x+ i* C  u, w7 D5 i* U
  65.                 UARTprintf("Starting Application ......\n\r\n");" E; r% H1 q5 Q4 Y# n

  66. % _1 C$ B) [+ c5 F
  67.                 AppEntry = (void (*)(void))EntryPoint;
    9 H' E- {! m/ p- |& B9 g
  68.                 (*AppEntry)();
    3 K# d4 s) F; H2 l' |
  69.         }
    : m9 t  u4 A" P+ b2 [5 H$ ^
  70. # s# `3 a. H& U. l0 R1 l7 c
  71.         return 0;7 s7 u* v9 p$ r
  72. }
    ! E2 I' ]5 z) I, R
复制代码

8 r' v8 \: d5 l, H6 m
, ]- `' Z7 h9 B  o6 y) k
作者: 汪洋里的小船0    时间: 2016-9-4 20:48
您好,我试了一下这种方法,结果报错了. V) F" @, ?. m1 d

$ h" b- {  ^. n0 V7 J




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