嵌入式开发者社区
标题:
多个独立程序之间跳转问题
[打印本页]
作者:
汪洋里的小船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
/****************************************************************************/
5 F4 |* {" U4 W9 P
/* */
, p2 a5 r' w2 }( R6 z, R
/* BootMenu */
U3 A& W! M {7 {& s
/* */
, }! J8 l: X( s4 K+ _* Q
/* 2014年11月07日 */
( T; D7 E4 e. F/ a; \5 Z
/* */
5 z0 Y5 s: H& `) n
/****************************************************************************/
- E) [; N- R2 n( c8 J" ^4 l
#include "uartStdio.h"
; n, {2 ~1 J! \& x- S& {* \- D' C
5 O: V: s# b" X
/****************************************************************************/
3 W1 [1 s9 J+ G5 g+ @6 w# m/ B3 B
/* */
6 F5 E. |4 ^/ s0 P
/* 宏定义 */
! P7 z ~% \( i, ~8 N
/* */
5 n) d8 Y2 A. \" A- z D% L
/****************************************************************************/
2 a F. B) |6 j1 o2 j1 q
4 `9 o2 Q! K+ x! s0 d
/****************************************************************************/
8 m: T2 @; y& Q" Z9 }: l( p$ w* D
/* */
3 D, E2 h9 x% R7 ?. R& K8 ^
/* 全局变量 */
4 j# { \) t* {& {, w; S
/* */
: e- O1 W0 I: f1 l
/****************************************************************************/
/ _% p' K3 I% G/ f/ V4 q
unsigned int EntryPoint = 0xC0000000;
( o/ _# v; K6 g& Z. p
/ ^4 V4 w+ V: ^1 @& h( o8 w
/****************************************************************************/
, D5 P% p. W, z' \+ c; f* z9 K
/* */
$ ^/ a! Y+ F; o7 _% F) e
/* 函数声明 */
0 Q2 H6 o0 |$ N1 w v# q* a
/* */
& t; O/ {+ { W: W! j0 l
/****************************************************************************/
1 Z, }8 [! A/ r' W# H0 H9 p3 N8 ^7 R
void (*AppEntry)();
D* Z# {: C" O9 b) |7 }
# U; ]8 N7 @" `# ]* B- i1 A2 K9 r% i
/****************************************************************************/
) M) v4 q9 O C( e0 B
/* */
8 I! u; J# h( h9 F* V
/* 主函数 */
: v9 o. A" {. d4 y8 |' K
/* */
& l( y- ^; M! P2 [
/****************************************************************************/
2 H9 {6 m. ~! G: z' ~
int main(void)
; j9 L6 z) Y6 |0 [3 T, E0 F0 m$ F5 |
{
1 [/ a' @( Y2 {
UARTStdioInit();
" `4 m9 I5 g" h) B
) p) t$ U5 j; Y8 S' l
UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");
+ z" X: q! e. V7 N$ \
/ V" p8 Q, X- y
UARTprintf("0.StarterWare LED Test\r\n");
; E |1 ?; O8 z9 F
UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
9 h! v. g: [; W$ F+ U
UARTprintf("2.StarterWare USB OTG HOST Test\r\n");
3 p5 a( V D8 k
UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");
% }# A9 z9 i. f' L' ^
! }5 n) i. a, @
UARTprintf("\r\n");
0 k& S( N# H; o- i) W+ W
" c/ y' @% G/ f6 N+ ]9 |- O! H8 k# a' w
unsigned char val, status = 1;
% U! e" p3 Q* [& x
Choice:
1 R; A0 s( j& n* g
val = UARTGetNum();
" v! T: d5 S0 P } S+ M: O1 j
UARTprintf("\r\n");
4 f! m9 n* f H* y e+ a' {# L
% v' [* k3 y1 K2 C
switch(val)
, A& Z/ a% o2 \. u
{
9 u1 ]- a# A) f* y/ Z" }2 K% p: `
case 0: EntryPoint = 0xC1000000; break;
. o, J' H( ]" `+ w
case 1: EntryPoint = 0xC0251FE0; break;
4 w. u" L3 O$ u% v
case 2: EntryPoint = 0xC2000000; break;
3 D9 G! g. D9 T) l5 w% n# ]
case 3: EntryPoint = 0xC541DEE0; break;
# _" p7 d9 D6 c( c1 b. v
* x# S4 |9 l" [2 I5 e& ?
default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
$ K: `# @! L4 E& n5 J- W' {
}
6 R! ^5 W: n0 L* d( K
! j4 K2 _$ v: f) H
if(status != 0)
1 U0 l' q- e; H0 @% ~- Z2 w
{
/ w% O( d& r% D
UARTprintf("Starting Application ......\n\r\n");
# S$ w" l- T5 c0 x0 d- j
. j$ F2 F5 g* i! F
AppEntry = (void (*)(void))EntryPoint;
3 c5 ?( O s6 C3 z7 f0 r u' }
(*AppEntry)();
, D; T$ e% \2 b4 u9 \9 y
}
5 x3 X" _8 D1 e) S
: j8 k0 w1 V( w2 C2 M* u& d+ Q
return 0;
; h. S% T6 t9 N$ h! Q4 U* X
}
! {- 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