在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 15374|回复: 23

ARM起步 ---- 在ARM2014开发板上运行第一个ARM程序

[复制链接]
发表于 2006-8-31 00:29:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
arm起步 ---- 在ARM2014开发板上运行第一个ARM程序

万事起头难!

本文是一个ARM初学者的心得体会。谈谈本人运行的第一个ARM程序:在周立功的EasyARM2014开
发板上点亮一个LED灯。

第一步,下载ADS1.2。
购买EasyARM2014开发板时,满以为买回即可使用,其实不然。在把程序下载到开发
板的FLASH之前,先要产生一个IMAGE文件,或者是.hex文件。这两个文件需要开发
工具来生成。在随板购买的“ARM微控制器基础与实践”一书中,使用了ADS开发环
境来生成下载文件。该软件可以从下面的地址下载:

http://lintel.ls0578.net/Soft/ShowSoft.asp?SoftID=52

下载的是一个.iso文件,必须把它烧到光盘上(或虚拟光盘)上才能使用。打开Easy
CD Creator,从File菜单中选Record CD from CD image项,将其烧录到CD中。注意
不能直接按Record键,该键录下的依然是.iso文件。录完之后,CD中就显示出ADS的
全部文件,点击setup就可以开始安装。注意阅读盘中文件安装license。

第二步,在ADS上运转第一个简单程序。

学习ADS的入门材料很多,比如周立功的书,还有“一步一步基于ADS1.2进行设计开
发”等等。前者虽然讲了ADS的原理,但并没有给出一个用ADS开发一个具体程序的
例子;后者虽有一个例子,但是该例子假设开发板中已有一个bootloader.bin程序。
所以这些材料对初学者都不够方便。对初学者而言,最好有一个简单的例子,能够
直接在ADS上转一遍。

我发现,学习ADS最好的方法是阅读ADS自带的帮助文件和例子。帮助文件可以通过
ADS菜单中的Online Books阅读,也可以在ADS目录中的PDF子目录中找到;还可以在
ARM的网站上找到:
http://www.arm.com/documentation/Software_Development_Tools/

在“ADS 1.2 : Assembler Guide ”中有几个很简单的汇编例子。另外
“ADS 1.2: Getting Started ”通过一个例子,一步步地教你怎样使用ADS的CodeWarriar编
译环境,在“ADS 1.2 : AXD and armsd Debuggers Guide”中一步步教你怎样使用
调试环境。这几份手册ADS入门的捷径。

第三步。硬件连接。

要把程序下载到开发版,有两种方法。一种是通过JTAG接口,另一种是通过ISP接口。
这里介绍后一种方法,因为它比较简单。首先,把PC机的串口接到开发板的UART0接
口。然后,把JP1跳线接上,最后插上电源。硬件联结完成。

然后启动软件LPC210X ISP,这是开发板光盘中的软件。用于ISP方式下载程序。
启动之后把Device选项置为LPC2104,然后按Read Device ID键,验证硬件连结是否
成功。一般而言,按键后会跳出一个信息窗口,显示“Please reset your LPC210x
board now and then press OK”,此时按开发板上的reset键,然后按“确定”按
钮。如果显示“Read Part ID Successful !”,就说明连接成功。

第四步。在开发板上用ISP方式装入并运转第一个程序。

ADS手册中介绍的例子并不适合于装入开发板中运行。有的例子太简单,没有输出操
作,有的例子太复杂,使用printf 输出。更重要的是,这些例子中并没有说明怎样
编制启动代码。

周立功的书上有不少例子,而且讲解了启动代码的编制原理。但是该书并没有把一
个完整的例子转给你看。这里就打算对此做一点小小的补充。

我们找的第一个例子在开发版随带的光盘上,目录“实验程序”下“Gpio_TEST”子
目录中的LEDCON项目。该项目在周力功的书中有介绍,是一个点亮LED灯的例子。这
个配套例子的特点是把有关的启动程序也配置好,因此不需用户再去开发启动程序。
下面介绍安装运行这一例子的具体步骤。

首先点击LEDCON.mcp项目文件,打开这一项目。为了使用ISP下载,需要生成.hex文
件。对此,可参照周立功书第275页修改链接参数。改完参数之后,执行make可以生
成目标.hex文件。但将此文件下载到开发板上时会出错,系统显示文件太大无法装
入FLASH。原因是该项目的起始地址设为0x00400000,估计该地址超出了FLASH范围。
参考“AT91SAM7S64 调试笔记”一文,对参数做了下述改动,在DebugRel Settings
-> Linker -> ARM Linker-> Output一页中,将RO Base的值从0x00400000改为0x0,
将RW base的值改成0x40000000。前一个值是FLASH的开始地址,后一个是SRAM的开
始地址。此外,把Option一页中的Image Entry Point也改成0x0。

按make键,程序成功编译并生成.hex文件。启动LPC210x ISP,点击“...”按钮,
输入.hex文件,验证同开发版的联接正常之后,按Erase键删除开发板上原有程序。
按Upload to Flash键下载程序(奇怪,Upload怎么翻译成下载,为什么不是“上传”?
)。这次下载成功完成,按“Compare Flash”键验证下载的程序和本机程序一致。


下载成功,但是不见LED灯亮。按复位键,依然不见灯亮。此事烦恼了一个晚上,最
后在周立功书最后的附录A中查到,在执行程序前要取走ISP跳线。果然,拿走跳线
之后,按复位键,LED灯终于开始跳动了!


第五步。用UART下载程序。

我之所以首先尝试ISP方式下载程序,原因是在周立功的书上,UART方式讲得比较复
杂,分为硬连接主JTAG,硬连接从JTAG和仿真器控制主/从JTAG三种方法。三种方法
放在那里,初学时唯实有点头晕。尤其是一开始时程序下载总不成功,不知道究竟
那个环节出错。当ISP下载运行成功之后,回到UART方式,发现这种方式其实更容易
操作。买来的开发板设置好的方式是仿真器控制主/从JTAG,这个配置不需改变。但
是,如果刚做过ISP实验,现在需要注意把ISP跳线断开。这也是买来的板子上的确
省配置。

因此,进行JTAG下载唯一需要变动的就是LINKER参数。即

RO base = 0x0
RW base = 0x40000000
Image Entry Point = 0x0

如果前面做过ISP实验,现在需把Target Settings中的Post-linker参数改为None。


所有参数改好后,按make键,生成image文件(.axf)文件。然后按debug键,调试软
件AXD自动启动,并装入.axf 文件,在此装入过程中,程序自动下载到开发板上。
按开发板的复位键,FLASH中的程序就开始运行了。注意在按debug启动AXD程序之前
需要把已经打开的AXD程序关掉,不然的话,会出现错误“DBE warning 00041: unspecified
Debug Toolbox call failed”。

第六步,其他样板程序。

一生二,二生三,三生万物。通过了第一个示例程序之后,Gpio_TEST目录下的四个
例子都可以用同样方法运行。

但是,使用中断的例子VIC_test目录下的EINT1_test却通不过。参照周立功书中第
421页中移植OS使用的参数,我们把RW Base的值改为0x40000040之后,生成的.hex文
件顺利通过测试。这一改动的原因是为了使用REMAP功能。

奇怪的是,用UART下载的程序依然无法正常运行,调试器中显示

Warnning! interrupt vectors data is not correct!
Program you downloaded can not run freely!

此问题目前尚未解决。
发表于 2006-9-9 10:58:11 | 显示全部楼层
呵,写的不错,
发表于 2006-9-13 11:26:42 | 显示全部楼层
很好~~~
发表于 2006-9-13 11:48:17 | 显示全部楼层
感謝
很適合新手閲讀
发表于 2006-9-13 23:21:58 | 显示全部楼层
有点糊涂了
应该再简单明了,呵呵,本人水平有限,望见谅啊
发表于 2006-9-14 11:08:18 | 显示全部楼层
心得就是精华
发表于 2006-9-20 16:09:26 | 显示全部楼层
楼主吗,我的smartarm2200怎么摆弄都是哪个An unspecified Debug Toolbox call failed, 但在别人的电脑上又可以?
头像被屏蔽
发表于 2006-9-20 17:21:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-9-30 05:35:53 | 显示全部楼层

ARM起步 ---- 在ARM2014开发板上运行第一个ARM程序

好东西.谢谢楼主
发表于 2006-10-1 17:48:14 | 显示全部楼层
没钱买板子,哎,可怜人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-27 06:17 , Processed in 0.048771 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表