我现在学arm裸机程序,但是一上手遇到很多问题,我想从简单的led灯弄起,我把开发板配套的 测试的综合程序裁剪只留下led功能部分,但我编译时报很多错,我知道有一些文件不可少我又添加了2440slib.s , 2440init.s 2440lib.c这几个文件但还是不能编译。还有错,我就不知咋整了,我自己觉得arm上编译程序没得51那么简单,但我不知道怎样才能编译出来,!
我是想弄清楚 要在2440上运行这些裸机程序 要注意哪些问题, 用ads编译程序时 程序需要哪些条件才能生成目标代码,与51有哪些不同 !
如果你有s3c2440的一些简单的裸机程序源代码发给我好吗,我在网上找半天 没找到,开发板配套的实验程序对我来说有些复杂不好上手,我想找一些很简单的代码分析 自己学者编写
我用的是tq2440开发板,,谁有ads编译常见错误分析文档也可一发给我下,不胜感激 邮箱:banilaiai@126.com
我在书上看到一段源代码 用ads编译 但也不行
;**************************************************************
;Chinese Academy of Sciences, Institute of Automation
;File Name: Init.s
;Description:
;Author: JuGuang.Li
;Date:
;**************************************************************
IMPORT Main
AREA Init,CODE,READONLY
ENTRY
LDR R0, =0x3FF0000
LDR R1, =0xE7FFFF80 ;配置SYSCFG,片内4K Cache,4K SRAM
STR R1, [R0]
LDR SP, =0x3FE1000 ;SP指向4K SRAM的尾地址,堆栈向下生成
BL Main
B .
END
//*****************************************************************
//Chinese Academy of Sciences, Institute of Automation
//File Name: main.c
//Description:
//Author: JuGuang.Li
//Date:
//***************************************************************
#define IOPMOD (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define IOPDATA (*(volatile unsigned *)0x03FF5008) //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++);
}
| | |
|