QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3361|回复: 4

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

[复制链接]
发表于 2006-7-9 21:17:53 | 显示全部楼层 |阅读模式
我把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, [R0]         
    LDR    SP, =0x3FE1000 ;
    BL        Main
    B     
END  

C部分:
#define  IOPMOD       (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define  IOPDATA  (*(volatile unsigned *)0x03FF500 //IO port data register
void Delay(unsigned int);
int Main()
{
unsigned long  LED;
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语言入口,上面的汇编程序段有什么问题吗,怎么就那么简单的几句,是不是太简单了?
发表于 2006-7-10 21:05:04 | 显示全部楼层
BL Main
B .
END

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

使用道具 举报

 楼主| 发表于 2006-7-11 11:15:34 | 显示全部楼层

我试过了

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

使用道具 举报

发表于 2006-7-11 20:18:47 | 显示全部楼层
你先在ADS用emulator调试一下看看怎么样
B后加上点肯定没问题
建议你参考4510应用系统开发详解的第五章和第六章
哪上面讲的很清楚,看一下是那里出了问题
回复

使用道具 举报

 楼主| 发表于 2006-7-13 12:06:42 | 显示全部楼层
好的,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-21 21:28 , Processed in 0.036203 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表