第一个裸跑程序的建立步骤
这里只讲步骤和方法,没有贴具体的源码出来。首先复制一份光盘里面的无OS测试程序,命名为:led,我们要实现点亮LED灯的实验。
1、删除src目录下面的除去2440addr.inc,2440init.s,2440lib.c,2440slib.s,Memcfg.inc,Option.inc,mian.c之外的所有文件。
2、然后将2440addr.inc,2440init.s,2440lib.c,2440slib.s,Memcfg.inc,Option.inc复制到新建立的lib目录下。
3、修改main.c文件,在里面的main函数中实现点亮LED的C语言的代码。
4、建立一个ADS下的项目,添加上刚刚剩余的文件,然后编译。
注意:这样编译肯定会有很多错误的,我们需要根据错误修改对应的文件,其实就是因为剩余的这几个文件还保留了以前的信息所致,简单删除操作就可以解决。
5、编译OK之后,使用uboot的a功能烧写镜像到Nand Flash,然后重启即可。 我试试看。 能不能贴个简单的程序出来,我们现在刚开始学ARM7,但是手上是TQ2440,刚开始想拿他当单片机用,可是入门有点难,所以想请你们搞些简单的程序,像个LED,或者蜂鸣器都可以,手册里面有无OS程序,可都是在一起的,对我们新手来说移植都是个问题,所以请你帮帮忙,谢谢! 恩,试了试
100个ERROR
努力调试中:L 楼上的不错啊,一百个!? 我自己写了个程序,在AXD上仿真没有问题,正常.但是用u-boot控制台把bin文件用功能烧到NAND FLASH之后就不工作了.这是什么原因呢?是不是我的工程环境设置有问题?
我也试过直接把这个bin文件当做U-BOOT烧到NOR FLASH 或NAND FLASH 但是都不能工作起来.
我的程序是:
GPBCON EQU0x56000010 ; Port B control
GPBDAT EQU0x56000014 ; Port B data
GPBUP EQU0x56000018 ; Pull-up control B
AREA LED,CODE,READONLY
ENTRY
GO
LDR R1,=GPBCON
LDR R0,=0xFFFD57FD;将I/OGPB5~8设置输出
STR R0,
LDR R1,=GPBDAT
LDR R0,=0xA0 ;将LED2,LED4点亮
STR R0,
BL _DELAY ;调用延时
LDR R0,=0x140 ;将LED1,LED3点亮
STR R0,
BL _DELAY ; 调用延时
B GO ;循环
_DELAY ;延时子程序
LDR R2,=0xFFFFFF
_D1
SUB R2,R2,#1
CMP R2,#0
BNE _D1
MOV PC,LR
END 我怎么下载不进去啊? 需要把裸跑程序写到板子上吗?
这样会把原来的系统覆盖掉吗? 楼主传个LED的裸奔程序上来吧 9# jonnyju
给你一个! thank you
看下先 有错误啊,
Eorror: L6218E:Undefined symbol PCLK (referred form 2440lib.o) 恩,试了试
100个ERROR
努力调试中:L
madgood 发表于 2009-5-6 20:00 http://bbs.embedsky.net/images/common/back.gif
调试成功了吗? 这里只讲步骤和方法,没有贴具体的源码出来。
首先复制一份光盘里面的无OS测试程序,命名为:led,我们要实现点亮LED灯的实验。
1、删除src目录下面的除去2440addr.inc,2440init.s,2440lib.c,2440slib.s,Memcf ...
亚瑟王 发表于 2009-3-11 13:34 http://bbs.embedsky.net/images/common/back.gif
使用uboot的a功能烧写镜像到Nand Flash。。。
那原来的系统会没掉的吧? 我传一个,其实只需要2440addr.h即可,完全是个单片机的开发环境。大不了库文件全不用,自己找着PDF配置地址就是了。。。
start.s文件
IMPORT Main
AREA Init,CODE,READONLY
ENTRY
blMain
b .
END
main.c文件:
//#include"2440addr.h"
#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control
#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data
#define rGPBUP (*(volatile unsigned *)0x56000018) //Pull-up control
void Main()
{unsigned int i,j,k;
rGPBCON = 0x55555555;
rGPBDAT = 0x000000ff;
while(1)
//if(0)
{
rGPBDAT = 0x00000000;
for(i=0;i<8;i++)
for(j=0;j<100;j++)
for(k=0;k<1000;k++);
rGPBDAT = 0x000000FF;
for(i=0;i<8;i++)
for(j=0;j<100;j++)
for(k=0;k<1000;k++);
}
}