ARM初学入门

  • 格式:docx
  • 大小:40.81 KB
  • 文档页数:4

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。好了,问题解决了。我没想到这样的问题让我调整了两天。看来

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

好了,就这些。让我们自己试试吧!!!