wizard2008 发表于 2006-7-9 21:17:53

程序如何跳转到C语言入口?

我把step4中的I-boot.bin烧写进FLASH,可以正常运行,但是我把startup.s main.c uart.c uart.h用ADS1.2编译出来的BIN文件烧进FLASH里不能运行。
搞不懂那里出了问题。startup.s不是进入C之前的汇编程序吗?
下面的程序是我在一本书上找来的,编译出来的BIN文件也不能运行。
汇编部分:
IMPORT      Main
    AREA      Ini,CODE,READONLY
    ENTRY
    LDR    R0, =0x3FF0000         
    LDR    R1, =0xE7FFFF80
    STR      R1,          
    LDR    SP, =0x3FE1000 ;
    BL      Main
    B   
END

C部分:
#defineIOPMOD       (*(volatile unsigned *)0x03FF5000) //IO port mode register
#defineIOPDATA(*(volatile unsigned *)0x03FF5008) //IO port data register
void Delay(unsigned int);
int Main()
{
unsigned longLED;
IOPMOD=0xFFFFFFFF;       //将IO口置为输出模式
IOPDATA=0x01;
for(;;){
      LED=IOPDATA;
      LED=(LED<<1);
      IOPDATA=LED;
      Delay(10);
      if(!(IOPDATA&0x0F))
            IOPDATA=0x01;
}
return(0);   
}
void Delay(unsigned int x)
{
unsigned int i,j,k;
for(i=0;i<=x;i++)
            for(j=0;j<0xff;j++)
                for(k=0;k<0xff;k++);
}
书上说这段程序编译后就可以直接烧写了,但是我烧进去怎么不能运行呢?而且仿真调试也不能跳转到C语言入口,上面的汇编程序段有什么问题吗,怎么就那么简单的几句,是不是太简单了?

lumit-support-1 发表于 2006-7-10 21:05:04

BL Main
B .
END

B后面还有一个点呢
你试试看吧

wizard2008 发表于 2006-7-11 11:15:34

我试过了

加上那个点或者注释掉这一行都不行,和系统硬件配置有关吗?比如说RAM,ROM容量和书上给的不同的时候.

lumit-support-1 发表于 2006-7-11 20:18:47

你先在ADS用emulator调试一下看看怎么样
B后加上点肯定没问题
建议你参考4510应用系统开发详解的第五章和第六章
哪上面讲的很清楚,看一下是那里出了问题

wizard2008 发表于 2006-7-13 12:06:42

好的,谢谢!
页: [1]
查看完整版本: 程序如何跳转到C语言入口?