ARM初学入门

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM初学入门
经过一段时间对arm的学习,在这里跟大家说一些前期的学习经验,另外仅以一个例
子说明一下ads的开发过程,因为这也是初学,可能有的地方说的不太好,望大家谅解,
另外可以找其它参考资料来学习。

第一部分:arm的早期学习经验
个人认为,要想学好arm应该首先对arm的整体框架(包括arm体系结构,arm开发
过程,及arm程序框架及执行过程等)有一个了解。

这里这就不多说了,这些东西我也只
是刚刚开始学习,还没有很好的掌握,就只说一些个人想法吧。

呵呵,因为时间紧,据说要在一周内完成。

至少你可以用书做一点,但上周之后,最后,哇,我真的疯了。

当我第一次得到这个实验盒时,我认为和NIOS一样,我几乎可以
玩更多的演示。

一开始我没想到会遇到大问题。

我在arm实验箱里带了几本教科书和实验
说明。

在用实验说明做了几次演示后,我没能做到这一点,因为前两次演示相对简单,只
需用汇编语言编写一些关于arm寄存器操作的语句,那些学习过汇编语言的人很快就能理解。

但未来会有所不同,因为我在学习之初不知道ARM项目的框架。

我真的不明白。

为什
么44B在整个过程中都有用。

h、 44B。

还有一个44binit的文件吗?前三个很容易理解。

那些玩过MCU的人可以很容易地看到44B H在S3C44B0X中定义了一些寄存器,44blib H
和44blib C定义了一些初始化函数,而44binit S?我不明白。

我不能在这里做arm程序。

我必须在互联网上找到信息,看看这个功能是用来做什么的。

事实证明,这是我以前经常
听到的“bootloader”或“boot code”或“arm boot program”,这是处理器启动时执
行的一段代码,主要任务是初始化处理器模式,设置堆栈,初始化变量等由于上述操作与
处理器架构和系统配置密切相关,它们通常是由汇编编写的(对于此内容,您可以查看相
关资料)。

所以我花了几天时间研究文件“44binit.S”。

通过对本文档的研究,我学到
了很多关于arm编程的知识,并对arm编程的总体框架有了大致的了解。

在了解了这一点
之后,几天来我第一次如此自信,以至于我认为这很容易理解。

可是,没高兴几个小时,做了一些程序,因为开实验箱上带的两个程序都没有注册,
其中ide还好说,很容易就搞定了,可是那个onlineflashprogremmer,哎,我对它一点
办法都没有。

只能。

无奈。

比现在好多了。

今天终于可以下载自带开发板CD-ROM的flash程序员了。

因为老师要做一块简单的arm系统板,就当是了解一下44b0的硬件吧,我又画了几
天的板子,因为protel用的不太好,就只画了原理图部份,不过,这学习arm的外围电
路还算是有很大帮助的。

中间还有一个JTAG接口,因为我想在我的开发板上的实验框上使用ARM仿真器。


拟器与20针模拟器相同,而我开发板上的JTAG是14针。

幸运的是,它仍然很简单。


需查看两个原理图的JTAG接口并进行比较。

基本上可以做到。

最后,将一个传输接口与
一块面包板焊接在一起,这很好,很有效。

但我无能为力。

在线Flash程序员无法直接使用。

最后,如果开发环境不起作用,我想改变它。

但这真的不容易。

我换了广告(现在看
起来很简单,只需几步)。

我之前玩过几天,因为当时我没有太多时间玩。

当时我对手臂
了解不多。

这感觉像是一个“难”字,但幸运的是,今天,我终于得到了结果。

呵呵,说的很乱,只是我想说个人感觉,学习arm还是先从整体上把握一下还是比较好,也算是比较快的一种方法,可以不用一开始就去看他怎么编程,内部的一些控制器怎
么用等,最好是先了解一下arm的arm的整体框架及arm程序设计的框架。

等把这些都看
懂了,后边的也就简单了,和学习其它单片机基本上也就差一多了。

很简单的~~~
这就是我要说的。

下面是一个简单的例子来演示使用ads进行开发的过程。

注意:
ads包括两部分:arm Developer Suite的代码和AXD调试器。

此外,如果要使用wiggler 进行调试,还需要使用armjtagdebug final(调试代理)。

如果你想刻录flash,你还需
要使用
flashprogrammer。

在连接开发板调试之前必须先运行调试代理armjtagdebugfinal。

1.与其他软件一样,new一开始肯定是一个工作程序:
file->new:选择armexecutableimage,并输入工程名和路径
完成后,端口臂将出现演示。

MCP有一个带有三个标签的窗口,即文件、链接器和目

默认的为files.
2.软件基本相同。

下一步是创建文件并将其添加到项目中。

这里说明一下,还记得我上边说的那几个文件吧(44b.h,44blib.h,
44B。

c、 44binit。

S plus option inc.def。

h、选择权。

h、 memcf。

Inc等,哪
些功能可以自己看到(您可以轻松理解它们)。

基本上,它们将在未来添加到每个arm项
目中,并且这些文件已经基本修复。

除了这几个文件,就是建立自己包含main函数的文件和一些自己要用到
我的文件丢了。

2.下来就是对编译的一些设置了,在上边刚刚建的工程中的arm_demo.mcp窗口上有
三个标签,基中targets下边有三个选项,是选择编译规则的:
Debugrel:生成目标时,使用此目标为每个源文件生成调试信息,
也就是说一般在调试时都选这项。

发布:生成目标时,使用此目标将不包含任何调试信息。

如果你想生成下一个
载到flash中去的文件的话就选择这项。

调试:使用此目标为每个源文件生成最完整的调试信息。

(注意,在本例中,debug release和release分别用于生成调试和下载文件)
3.首先在2中选debugrel(默认的),点按钮,进行debugrelsetting设置在里就
说三点生重要的:(1):target->targetsettings做如下设置:(2):linker-
>armlinker设置如下:
有关robase和rwbase的设置,请参阅“ads中文教程”(此处robase 0x0C00000是SDRAM的地址)。

下边填写image所在的开始段:
通常,对象/符号由44binit o.Section:init填充(init节在44binit.S中定义)
(3)armfromelf设置输出文件,参考下
(请注意,我使用的flash程序不支持下载.Bin文件,因此我选择inter 32位。


hex文件)
好的,好的,你可以编译。

编译完成后,将生成用于调试的文件。

你可以过来调试。

分别单击:选择要编译、生成、调试和运行的文件4。

AXD调试:
在ads窗口中点bebug或run之后,会跳出axd调试界面:
(options―>configuretarget)对axd进行配置因为用wiggler来调试,要对axd做以
下设置:
(首次使用时还应设置AXD)在下面的对话框中,选择ADP->configure setting。

然后选择armethernet驱动程序:
ok―>configure:targetipaddress填写127.0.0.1
好,好,配置目标配置完成。

让我们配置配置接口选项:选项->配置接口…:在出现
的对话框中,在“常规”选项卡下:
targetconnection下拉列表中选择:attach:connectionaccordingtotargetproperties
在会话文件选项选项卡下:选择重新选择目标、重新加载图像和runconfigurationscript:在runconfigurationscript下选择44B0 Ini是用于在软件调
试期间初始化寄存器的脚本文件。

应用,确定。

好了,axd的配置就这些。

您可以在下面进行调试(请注意,在使用wiggler进行调试时,必须首先打开调试代
理armjtagdebugfinal)。

调试完成后,点击调试,运行可以直接调用AXD调试调试窗口:
和其它软件差不多,有单步调试、全速运行等工能:
然而,奇怪的是,我没有找到重置功能。

每次调试时,我都必须重新加载映像。

接下来,让我们生成要下载到flash的文件:记住上面提到的窗口:
在上边我们调试时,这个窗口选择在debugrel,而下边我们就要选择releass了,这样可以生成不带任何调试信息的目标文件了,就可以下载到flash中去了。

5.选中
releass标签,点按钮,进行设置
(1)在调试过程中,post linker从下图中选择arm:(2)linker―>arm linker
ro填写0x00000000(flash地址),rwrw可以添也可以不添,高兴了就添上0xc100000
布局标记:这与上一次调试中的设置相同:
armfromelf:也设置和前面一样,只是为了区别前面生成的带有调试信息的目标文件,这里填写目标文件名称为:arm_down.hex:
好的,重新编译生成arm_uuudown。

十六进制文件,你可以下载到flash,并在开机
时运行。

整了两天了,还好出来结果了,要不就真要有人疯了!!!呵呵。

arm没有使用S3C44B0X提供的LCD控制器,而是配备了多个GPIO。

虽然有人说它只
是“移植的”,但它也让我很痛苦。

我不知道为什么液晶显示屏忽视了我两天。

最后,它
通过了一个小测试。

这可能是因为我的开发板上44B0X的一个引脚(GPD0)坏了,我无法
使其输出高电平。

发现问题后,我在GPD0旁边找到了一个引脚(gpe1)来替换GPD0。

好了,问题解决了。

我没想到这样的问题让我调整了两天。

看来
以后还是得更细心一些了。

好了,就这些。

让我们自己试试吧!!!。

相关文档
最新文档