买了块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;
}
}
文章评论(0条评论)
登录后参与讨论