sxwglxq 发表于 2005-8-30 11:00:34

在ads1.2里开发GPIO应用程序

Init.s如下
IMPORT main
AREA Init,CODE,READONLY
ENTRY

LDR R0, =0x3FF0000
LDR R1, =0xe7ffff80
STR R1,
LDR SP, =0x3fe1000
BL main
B.
END
main.c如下:
#define        IOPMOD        (*(volatile unsigned *)0x03FF5000)
#define IOPDATA        (*(volatile unsigned *)0x03FF5008)

void Delay(unsigned int);

int main(void)
{
        unsigned long LED;
        IOPMOD=0xEFFFFFFF;
        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++);
}
我在ads1.2里单个文件compile没有错误,使用make 按钮就提示警告:
Image dose not have an entry point.(Not specified or not set due to multiple choses.),每个project都必须有Init.s文件吗?
另外,在CMD.exe里使用armcc,对应用程序的路径有什么要求吗?且使用命令方式编译连接要输很多命令,没有窗口方式来的简单,为什么还有很多人使用命令方式,命令方式有什么好处吗?谢谢!
上面这个程序是拷贝微芯力出的<<arm开发祥解>>第六章的程序。

limingth 发表于 2005-8-31 09:23:24

ads1.2 里面 选择菜单 Edit -> DebugRel Setting -> Linker -> ARM Linker -> Options -> Image entry point, 这里可以设置 entry point , 可以是 symbol ,也可以是绝对地址,例如 0x8000
命令方式的好处在于具有一般通用性,如果你习惯了 linux 下基于 make 的开发,就会体会到基于命令方式的好处。 :P
页: [1]
查看完整版本: 在ads1.2里开发GPIO应用程序