嵌入式开发者社区

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

作者: 汪洋里的小船0    时间: 2016-8-27 09:37
标题: 多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。% d$ L3 B: A  C* o
问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?+ M' Q- t) y) Z
补充:不能改变工程及文件结构& {9 j: j! l6 U2 R
请各位大神答疑解惑,必感激不尽* W+ I! K/ G' U, J  J! ~

作者: 希望缄默    时间: 2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00
: b6 y) v+ L0 W! J4 p# f) I" [; x' y: H3 ?
  1. /****************************************************************************/" r3 _/ H$ |, l5 @% Q6 i2 B
  2. /*                                                                          */
    ) A0 W" l4 |. W0 Q
  3. /*              BootMenu                                                    */& Q9 R" d# ?6 m: Z2 t/ n5 z0 z
  4. /*                                                                          */+ c7 ]7 n7 p8 ~& X3 A" c
  5. /*              2014年11月07日                                              */
    1 t  v8 N+ R/ k. p$ U) w& U, e
  6. /*                                                                          */
    - I# E. W9 r: R
  7. /****************************************************************************/
    6 F3 _% q" @& F9 n0 H+ Z& y
  8. #include "uartStdio.h"4 V+ G3 n$ C  ~5 e
  9. ! ]1 B/ l& V& `1 a
  10. /****************************************************************************/
    5 C# U. ~; @" T9 J
  11. /*                                                                          */. ]+ `2 C9 O3 B1 Y( k
  12. /*              宏定义                                                      */
    * J" C5 Z# l2 w7 {
  13. /*                                                                          */
    - t5 k, X8 F6 j8 z0 X% C& R2 j
  14. /****************************************************************************/* r" R& c( X0 o5 m  N7 e& K( h

  15. ; B+ o8 K) W. Z/ W
  16. /****************************************************************************/
    - n  x6 q/ }3 M; F/ R9 J6 I
  17. /*                                                                          */
    ) X' N1 h$ a5 U3 T
  18. /*              全局变量                                                    */
    & O3 {% ?) B6 j6 ]
  19. /*                                                                          */
    $ a- j; ~5 K2 N3 u* I8 b* l
  20. /****************************************************************************/
    7 t6 P+ o# l5 a1 H
  21. unsigned int EntryPoint = 0xC0000000;) T$ @( ?8 f6 z; ~& O- ^1 G1 |
  22. & G: W4 F  l/ V
  23. /****************************************************************************/6 R# V$ {* m7 N! j# L9 w
  24. /*                                                                          */
    2 g( `& }2 q+ h7 V/ p' y7 g2 |
  25. /*              函数声明                                                    */7 k: s; ~  b; \3 J4 y+ b$ k
  26. /*                                                                          */2 B8 F0 x0 M. s- y
  27. /****************************************************************************/! _: [$ F) s- c' A8 m
  28. void (*AppEntry)();
    / y2 x$ g; c5 Y) l: @# v
  29. 7 w; C, V& `( {2 O2 C: H
  30. /****************************************************************************/4 D: s; N' V# @2 V# }4 ~
  31. /*                                                                          */& f( }# [( z$ V
  32. /*              主函数                                                      */; z' X- K9 H" `: h" N
  33. /*                                                                          */# [8 }6 i# m" ?+ N' ]9 k
  34. /****************************************************************************/
    ) \8 J! V% {5 T9 d2 O( m
  35. int main(void)
    ) t7 C' X, {6 @' W) u
  36. {
    0 N6 b! L2 p  o; Y
  37.         UARTStdioInit();
    2 {6 G2 `% N# }. b  O) i5 T
  38. # R1 V5 r( \+ J' z/ W" {% W/ P
  39.         UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");. u' ^- l1 c3 l7 l. e4 Y

  40. ( n2 I. e( `0 t% N  F+ i. J6 |0 D% S, \
  41.         UARTprintf("0.StarterWare LED Test\r\n");
    - u9 o2 Z8 d( g/ N# z
  42.         UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");; {6 y  g2 M2 @1 B4 d4 i
  43.         UARTprintf("2.StarterWare USB OTG HOST Test\r\n");) u' j# ]4 c; {* V3 T% o& C8 \
  44.         UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");
    / d& ?9 O) A9 G: X! L. \; J! _
  45. , F$ I0 @3 r8 S
  46.         UARTprintf("\r\n");
    8 g9 k# `& Q2 B6 ^9 A& J$ S
  47. 5 q" z( k% k6 O5 c$ I$ ?0 U
  48.         unsigned char val, status = 1;& o" f0 m8 R3 l+ Y! s- \
  49. Choice:/ l/ O7 n3 `: P
  50.         val = UARTGetNum();: Y* z& h  O2 ?5 Q% |8 h* P9 r
  51.         UARTprintf("\r\n");
    + j2 v: Q9 Z* U

  52. : S+ t0 P9 ^) B) s  ^
  53.         switch(val)
    & R+ y& A% d5 ^6 F# H& M
  54.         {# L; S: M2 M8 X1 N9 W0 w
  55.                 case 0: EntryPoint = 0xC1000000; break;# n4 W& k* w1 Y
  56.                 case 1: EntryPoint = 0xC0251FE0; break;
    ( v8 @4 e; p4 u% R, H# ?: x+ Y
  57.                 case 2: EntryPoint = 0xC2000000; break;
    , S+ a0 O. d' A6 J4 p
  58.                 case 3: EntryPoint = 0xC541DEE0; break;+ W$ _1 A3 `- u

  59. # q/ {0 F+ l8 r2 l, _
  60.                 default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;* q) r6 d/ Y* G$ P/ S
  61.         }- l& ^/ ]8 W  C; N4 @3 e- j8 N8 d
  62.         0 P2 \* n8 t. W
  63.         if(status != 0)
    9 F  n, i4 {6 O4 h# B; A) Y! E9 \' U
  64.         {
    & K) Z4 S2 B8 M8 _$ ~3 y9 B) G9 |
  65.                 UARTprintf("Starting Application ......\n\r\n");" Z- L# p8 L8 X# r
  66. ! @0 x8 g$ C: ]
  67.                 AppEntry = (void (*)(void))EntryPoint;8 c6 R* n+ O: A+ e8 [% g& a" ?/ L
  68.                 (*AppEntry)();$ @. E& A1 b, n
  69.         }
    $ {6 b  u: [; X$ b2 Y3 [
  70. , q8 d6 f$ W" H- f( q1 F" _7 N
  71.         return 0;& B) ?+ V# x3 ]% ^& J+ E, ^
  72. }1 \* R' ?. \+ o7 `* b
复制代码
, L, V5 o- s, n+ i: K
! \( j* Q: {- K) _; s4 I" H

作者: 汪洋里的小船0    时间: 2016-9-4 20:48
您好,我试了一下这种方法,结果报错了
! n9 \3 q2 N" Q- a% @0 {/ ]& \# O' J( H+ ?) J) [% p





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