下载本测试程序:https://bbs.21ic.com/upfiles/img/20093/20093503052282.rar
经过一个晚上的忙活,圈圈的第一个AT91SAM7S64程序终于跑起来拉。 这是一个简单的IO测试程序,在PA0~PA2脚上轮流输出低电平,实现 流水灯的效果。
程序首先初始化系统时钟,将主时钟设置为48.05MHz。然后将对应 的PA0~PA2口设置为输出状态并使能。然后在PA0~PA2上轮流输出低电平。
本程序所用的实验平台是21IC的古道热肠设计的“DIY优盘开发板”, 板上在PA0~PA2上分别接了一个LED,把程序烧入开发板中运行,就可以 看到LED2~LED4轮流点亮了。
由于手头的U-link被同学借走了,只好使用USB口进行ISP下载。要 进入ISP模式,首先要将板上绿色的自锁开关按下,然后给板子上电(可 直接通过USB口供电),等10秒以上,然后拔下电源,弹起绿色自锁开关。 再次给板子上电,就能进入到ISP模式了。如果是第一次使用,还需要给 它安装驱动程序。当你安装ISP软件时,会自动复制驱动程序到系统目录, 让向导自动搜索就行了。然后运行ISP软件SAM-BA v2.8(可以上atmel官方 网站下载安装包,圈圈目前所使用的是Install AT91-ISP v1.12.exe), 选择“usbARM0”,点击“connect”按钮,即可出现下载界面,打开 对应的文件,然后点击发送文件即可。
不过,这个软件只支持*.bin文件的格式,而keil默认的输出文件是 *.hex格式。可以使用hex2bin.exe这个文件进行转换,它就在你的keil 51 安装目录下。可以直接在工程选项的output标签页中设置编译完后运行 hex2bin文件。然而,keil生成hex文件是从地址0x100000开始的(这是因为 这个芯片的FLASH地址在0x10000),如果直接转换的话,得到的bin文件 将有1M多大,无法下载到板上去。只好自己对hex文件进行修改后,再进行 转换。我们只需要修改hex文件的第一行即可,这里是定义高16位地址的。 第一行的内容为: :020000040010EA,将其修改为:020000040000FA。 其中0010就是说高16位地址为0x0010,将其改成0000,后面的EA为校验和, 朝反方向修改,为0xFA,否则转换时校验和不对会失败。先将output标签 页中的创建hex文件勾上,然后编译,再修改hex文件,然后将创建hex文件 的勾去掉,把下面的运行程序勾上,再编译,就可以得到对应的bin文件了。
对于上面这个问题,圈圈试图将ROM地址设置在0x0,结果生成的文件 中断向量表部分还是被定位在了0x100000位置处,不能解决问题。看来 Keil的CARM编译器还不够好用。
接下来,圈圈将会依次学习这个芯片的各个模块~~~这个芯片数据手册 有点变态,750多页,还好很多图片和表格,也很详细。花了3个多星期的 空余时间才看完...
圈圈 2009-03-05 00:30 |