嵌入式开发者社区
标题:
多个独立程序之间跳转问题
[打印本页]
作者:
汪洋里的小船0
时间:
2016-8-27 09:37
标题:
多个独立程序之间跳转问题
问题背景:现有两个工程,第一个工程led1中包含一个asm文件和c文件,asm文件实现向led1.c程序入口点跳转,如附件中所示。第二个工程只有一个c文件。三个程序的入口点分配如附件所示。
7 L# \7 Z( x% Z- ]" d) S2 q4 j
问题描述:在asm文件中跳转语句是“B _c_int00”,但我有两个c文件,也就有两个_c_int00,所以总是无法实现跳转(个人猜测是这个原因)。如何才能实现正常跳转?
+ C# z& j4 @ c/ c; U" H) u
补充:不能改变工程及文件结构
. y& h- o5 h7 X$ Y* }3 i! ]* R+ }" L7 T
请各位大神答疑解惑,必感激不尽
/ U5 V J6 n) F1 Y; s+ ~ J+ D
作者:
希望缄默
时间:
2016-8-29 08:52
这个程序是测试通过的 其中的地址就是 _c_int00
* ^. f& Q- Z& ]; F8 U- L
! `) I; a: \! G! p, E4 @
/****************************************************************************/
1 ~' \8 U9 y+ O3 }3 d' |6 O( v* ?! ]
/* */
. p& P- y2 Z+ I8 k H
/* BootMenu */
/ r {9 n4 r" y! m$ w
/* */
. f2 |% I0 g9 t1 I& i
/* 2014年11月07日 */
8 k# ^0 h( f/ N' U
/* */
' Y. K1 c8 [) M3 y- ~, P% D
/****************************************************************************/
5 U% I0 A9 Z" T! k& |: Q% S5 e
#include "uartStdio.h"
; @ | S( `) }6 Y% F
4 j5 V( n* }' N) \7 Z. m
/****************************************************************************/
/ y& g5 F: o4 a( K# b
/* */
$ q9 `$ p# b& R- O
/* 宏定义 */
' T1 P+ Z4 M2 U
/* */
. \" q, M. }. [- U( ^) L
/****************************************************************************/
. [, S4 _' V' g% l; n
. X! i! w2 w u
/****************************************************************************/
9 S+ w3 j. q' R7 _" Z( y
/* */
; Y: j8 I8 R' `3 j6 T2 T
/* 全局变量 */
4 P5 J* @9 E- _7 d! f
/* */
& f, ~# ~4 U2 S' M" v6 Y- ^9 B( V
/****************************************************************************/
7 I5 B2 {7 x2 n! z' x
unsigned int EntryPoint = 0xC0000000;
1 R0 F4 L% t* r9 I
+ U! i# |" l4 N
/****************************************************************************/
! v+ v6 k8 {) k8 _3 F- V \- O( y
/* */
- d( @- W9 I/ q( h9 j; n
/* 函数声明 */
4 z* d0 T ^6 j1 n7 f6 K6 b: b$ \( ], G
/* */
9 F f7 O" K4 v% O
/****************************************************************************/
7 U7 H) D% d! q2 F6 e0 w" a+ w; Y
void (*AppEntry)();
/ t i5 q, q" o& s6 T5 x$ t
, h: b N5 `+ u2 M# w
/****************************************************************************/
! j# s- F0 Y r: r2 S
/* */
: E, D5 m- n9 M6 \, V
/* 主函数 */
1 H5 P8 v1 _$ t* D
/* */
% o% X$ r3 `3 E, u1 `5 E
/****************************************************************************/
. l4 Z: E3 V$ e: U8 `
int main(void)
% \- f1 x" s- p+ D
{
) s' B& V, _% b0 ^4 C. S: f
UARTStdioInit();
6 a8 S& ^# ]; h; d, G& B/ Z
9 D) G' O" y2 I# Q, J9 q
UARTprintf("\r\nTronlong DSP TMS320C6748 BootMenu\r\n\r\n");
; s, q0 q% W4 D* f, T& B0 o
$ A: O h0 n* |1 ^: ]: p
UARTprintf("0.StarterWare LED Test\r\n");
4 ^6 E1 T$ N- u& a) F
UARTprintf("1.SYS/BIOS EasyEvm Test\r\n");
, v1 D& T9 z: U4 I9 }, `
UARTprintf("2.StarterWare USB OTG HOST Test\r\n");
" G1 g3 e, a& @5 [( R
UARTprintf("3.DSP/BIOS USB HOST / USB OTG Test\r\n");
! a* Y; J- q$ h0 h
- @7 m& X7 L' y/ O8 y" f2 ?7 G
UARTprintf("\r\n");
- j4 L6 A7 B/ _4 j% U, d( j x8 M
; m- w) a# q( J' e2 O g) z; R
unsigned char val, status = 1;
9 f% D# O6 \8 j1 Z1 V$ J
Choice:
& [' b0 T) ?3 i9 D$ m8 M
val = UARTGetNum();
* |0 V& n# I& A
UARTprintf("\r\n");
& q. D/ g$ C1 O/ K* o) h* t
3 ?0 Z" m0 p' I! g+ M. T
switch(val)
1 b N% I k( C: O! w; H" w
{
, Q# x) Q) [$ D0 N
case 0: EntryPoint = 0xC1000000; break;
3 K7 P2 F- X5 w3 ?& P
case 1: EntryPoint = 0xC0251FE0; break;
- z$ n* q3 T7 o' @
case 2: EntryPoint = 0xC2000000; break;
: r& Z$ V2 E; s! u
case 3: EntryPoint = 0xC541DEE0; break;
! P1 P1 ~% z! Y& J0 W# F
+ ~* Z8 ], I- d( t. [6 _, ?& G
default: UARTprintf("Please input a correct number.\n"); status = 0; goto Choice;
1 I; B+ K$ D- G8 K4 j1 ~
}
8 N0 `' V) L: j" _
- P6 f& b0 v8 a$ j$ E1 A
if(status != 0)
/ ]' n, U$ U, t, m0 ]9 }
{
2 v4 n# J& ^+ V4 c3 }* N0 s# a
UARTprintf("Starting Application ......\n\r\n");
2 J. e# Z- v3 S% s: {2 z0 x3 L
" X( x2 s4 I Q* g( h' P, x
AppEntry = (void (*)(void))EntryPoint;
, S/ k$ a% h7 s* J: [' D
(*AppEntry)();
8 R \4 x$ Y" j
}
! J+ _" a. ^6 v: Y( B
1 ~# n q4 q" ]6 n. ?) A+ p
return 0;
4 A; k/ y0 Q3 ?6 Z
}
) X# p: z. w9 V- {7 A( v
复制代码
, S J7 t$ \+ u# ^4 J8 A B) u
y; }5 F* X. K+ I9 O
作者:
汪洋里的小船0
时间:
2016-9-4 20:48
您好,我试了一下这种方法,结果报错了
2 H6 R* v* ?% d5 \
2 K) }4 C2 O! l+ ~; c% g
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4