嵌入式开发者社区
标题:
多个独立程序之间跳转问题
[打印本页]
作者:
汪洋里的小船0
时间:
2016-8-27 09:37
标题:
多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
: m2 S& J" V2 E6 ~
问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?
2 c' @- }2 K$ s5 i* x
补充:不能改变工程及文件结构
4 M" Q" T3 C( k, H
请各位大神答疑解惑,必感激不尽
( |+ [2 U) v! w8 @* M7 b
作者:
希望缄默
时间:
2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00
# r6 h$ g& _& G$ y; M" j* V" {; F
, R( n: e0 q7 s) R6 f
/****************************************************************************/
- b3 @) N% {+ A; A! j Z$ x; l& ~
/* */
! q7 e6 J2 r `$ @* V) `/ d
/* BootMenu */
) r- j q/ A9 M \; J+ }8 k+ G
/* */
$ X5 [7 \# D' x8 l$ v" L
/* 2014年11月07日 */
0 D; l* ?& m% b& j0 C) D
/* */
) o+ ]+ T3 p1 b, U
/****************************************************************************/
# v/ d3 r9 e/ P2 Z8 U& D5 ~8 ]
#include "uartStdio.h"
) C' f* u) o; F0 T
5 w. R" y( M Z" r4 F# _2 a7 }
/****************************************************************************/
" v- c2 ]& m$ `( f9 ?- N9 U
/* */
8 T y' S. q h/ R* T0 q, w8 ^
/* 宏定义 */
6 B1 m% j9 l+ W2 ]- _
/* */
" P2 {4 t" m: j- A* r! c0 ]
/****************************************************************************/
) Z9 \- g9 ^: T" l
+ S# I; a+ a) ?* ^7 }
/****************************************************************************/
: h# a1 }, k& O/ ^6 P! l$ h1 }
/* */
+ w1 f5 r$ w6 o' ^* ]% e: O+ U# S+ w
/* 全局变量 */
( c ]8 S/ H: f+ S: f: R: }4 n1 `
/* */
9 `, f- Z3 w; N1 r) `- u6 T
/****************************************************************************/
3 ~3 P& W' V% j1 ]& k
unsigned int EntryPoint = 0xC0000000;
+ m& J! [0 t {. o+ Y
, k+ c5 m/ V; Y, y
/****************************************************************************/
. `3 E$ s( ~" k" Y Q
/* */
; _& n5 o" w* Y! d* H1 x4 ]1 K
/* 函数声明 */
( ^) U P+ o9 R' N
/* */
" u5 H$ `9 W7 ~2 S9 b, F" v3 Z/ N5 Z
/****************************************************************************/
/ Y6 f. F' a" ~: b( c
void (*AppEntry)();
$ q- g, `* _0 v7 V5 p4 H* F( o
+ }- ?/ M+ j# k6 M% _) _2 k3 E
/****************************************************************************/
7 Z, a* T0 @0 I* s4 R
/* */
' }- ^7 G1 I- g9 f# ?2 S2 }
/* 主函数 */
8 l, |/ j/ }6 n' C
/* */
9 ?3 G% Y/ K+ \, }. K
/****************************************************************************/
3 Q7 h0 _8 R, a1 ]: T" i
int main(void)
* Q, e" ?; T& J$ x2 E! W+ s% n' [
{
0 x2 J* g- ^: k6 p* k
UARTStdioInit();
3 P: v2 l; W9 i* d5 W
1 t+ V' J) G$ Z, j. |3 k2 |
UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");
1 c4 p6 F- t, g* H% G' X% K- w
* _, C# K* |/ S- M J3 {+ `, r( D
UARTprintf("0.StarterWare LED Test\r\n");
2 ?. X. @0 D( [5 J8 v% U
UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
' r! Y- a9 G7 |) r: I9 X+ B) J
UARTprintf("2.StarterWare USB OTG HOST Test\r\n");
: w2 v! d- w/ E! U
UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");
& J- F6 }$ u6 Z7 h, N) S
* E5 \6 K8 X+ p/ p" I8 @
UARTprintf("\r\n");
2 Z9 [1 E/ _/ ^0 t; R# U* X" r9 p$ m
9 R& E* _- D+ `( S
unsigned char val, status = 1;
5 @) C1 s' ~5 b/ V" J( D, L' U0 @
Choice:
. u# i, t+ b3 F. ?% X2 d1 o
val = UARTGetNum();
- R& t6 h. u" Q: M% W1 s3 |, N. x
UARTprintf("\r\n");
7 s! {4 g8 r( k |; Y
7 ], m$ @5 J6 ~0 c* X; m. K
switch(val)
1 J5 u9 W8 w& h+ w# N% L
{
h% [ t5 q3 ]* g
case 0: EntryPoint = 0xC1000000; break;
0 e4 c6 M- j- I& v6 t0 W' E
case 1: EntryPoint = 0xC0251FE0; break;
; y5 S9 o; N- j5 G. a( J+ e
case 2: EntryPoint = 0xC2000000; break;
8 A+ M7 `; S6 w" x
case 3: EntryPoint = 0xC541DEE0; break;
* H% I; [' z/ u6 d6 N6 h
) O, n/ I6 ]( U( O! \" d; N! D
default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
# }% P5 w6 q2 r2 Q% l8 A: o" T' P9 @
}
6 x8 ~) L6 U* j9 M" p* J
: H0 h- t; M- C# x% f9 y
if(status != 0)
6 s) U1 q; @( S; @0 I" e- w8 L, C
{
3 w9 E9 [' v% g8 I1 }( \/ f9 T
UARTprintf("Starting Application ......\n\r\n");
4 \% w3 } b3 q) f! m: ^3 O
q1 v; U, R' T$ _
AppEntry = (void (*)(void))EntryPoint;
" U) Z' R3 P( k0 t
(*AppEntry)();
. b( f3 E# p( ]0 Z2 T' R
}
{% C- { M% q" f% n/ A6 E
$ F n, w# ^3 K9 W0 v3 C
return 0;
$ {3 N# `2 T1 _/ ]! F2 X$ x
}
* u7 P; k: }& x5 P% x8 I" ^
复制代码
% x, g* y4 I+ J. K K
8 {' i6 a( W" X% ?3 D
作者:
汪洋里的小船0
时间:
2016-9-4 20:48
您好,我试了一下这种方法,结果报错了
9 T L; U6 N- h' X& W3 l2 B/ ?
: l" K3 ^1 i( P$ k
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4