电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

mini2440学习-1.流水灯的实现

买了块ARM9的开发板,mini2440,500多。上班了,还好自己的时间比较多,这几天一直在看一些资料,终于,今天上午把流水灯程序弄好了,高兴啊!

先说一下在调试过程中的所得,最后附上代码。

1、调试前或者是调试过程中一定要把ADS1.2这个调试工具怎么配置搞懂了。其实重要的就那几个。一是Target setting,二是ARM assembler和ARM C assembler中型号的选择。我选的是920T,三是ARM linker 的设置,这个比较多,我的设置是-info totals -entry 0x30000000 -ro-base 0x30000000 -map -list test.txt -first 2440init.o(init)。这中间要好好理解entry和ro,以及first的含义。最后一个就是ARM fromELF,也就是设置一下输出的文件名。

2、最最权威的资料还是ADS自带的PDF,把那些看一下基本上就不用看别的了,开发中用到的或者是开发中用不到的在那里面都有相当详细的解释。当然,在刚入门的时候,像我这样,还是找一点能用的简单的工程,是工程,可不是仅仅只有源代码,自已在上面攺,看有哪些变化,慢慢的就摸到门了。注意的是工程一定要简单,复杂了就说不了了。个人见解,不足处请见谅。

3、善用网络资源。有许多问题别人都遇到过,并且以经解决了,我们没有必要在那上面浪费时间,baidu一下,什么都有了。

注:在部分测试中我没有用2440init.s,出现了一些问题,主要是入口地址方面的。链接器会把一个文件放到入口处,而不是指定的标号,所以必须把main()放到单独的文件中才能把它放到入口处,这和仿真不一样,仿真是可以指定入口标号的。个人见解,有错的话麻烦告诉我,也是初学者啊。

源码:(测试用,没有什么注释,请谅解)

#include "2440addr.h"

#define U32 unsigned int

extern void Delay(U32 tt);

void Main(void)
{
 U32 temp;
 temp = 0x0e;
 rGPBCON = 0x155555;  //PORTB for output
 rGPBUP  = 0x03ff;   //PORTB pull_up disable
 rGPBDAT = 0x000;
 for (;;)
 {
 ;
 Delay(1200);
 rGPBDAT = (temp<<5);
 temp <<= 1;
 if (temp == 0x1C0)
  temp = 0x0e;
 }
}

博主
95714326@163.com
yangzhuimeng's Blog
yangzhuimeng
点击跳转