ARM初学入门
更新时间:2024-02-02 03:45:02 阅读量: 教育文库 文档下载
经过一段时间对ARM的学习,在这里跟大家说一些前期的学习经验,另外仅以一个例子说明一下ADS的开发过程,因为这也是初学,可能有的地方说的不太好,望大家谅解,另外可以找其它参考资料来学习。
第一部分:ARM前期学习经验
个人认为,要想学好ARM应该首先对ARM的整体框架(包括ARM体系结构,ARM开发过程,及ARM程序框架及执行过程等)有一个了解。这里这就不多说了,这些东西我也只是刚刚开始学习,还没有很好的掌握,就只说一些个人想法吧。
呵呵,因为时间比较紧张,本来说是一个星期搞定ARM,至少拿着书本可以一点点的做着,可是经过上一个星期,到最后,哇,真的快疯了。刚开始拿到实验箱,以为和NIOS一样,多跑一些DEMO应该就差不多会玩了,没想到一开始就碰到一个大问题,ARM实验箱里边带了几本教材和实验指导书,拿着实验指导书做了几个DEMO就做不下去了,因为前两个DEMO还比较简单,就只是用汇编语言写了几条对ARM寄存器操作的语句,学过汇编语言的很快就可以理解了。可是往后就不一样了,因为刚开始学,不太了解ARM程序的框架,实在是看不懂了,为什么每个全程里边都有用到44b.h ,44blib.h ,44blib.c还有一个44binit.s文件?前边三个还容易理解,玩过单片机的很容易就能看出来44b.h里边定义了一些在S3C44B0X内部的寄存器,44blib.h和44blib.c定义了一些有关初始化的函数,而44binit.s呢?看不懂,到这里我的ARM程序就没法往下做了,只有在网上再找资料,看这个函数到底是干什么用的,原来这就是以前经常听说的“bootloader”或着说是“启动代码”,或着说是“ARM的引导程序”,就是处理器在启动的时候执行的一段代码,主要任务是初始化处理器模式,设置堆栈,初始化变量等等.由于以上的操作均与处理器体系结构和系统配置密切相关,所以一般由汇编来编写(关于这方面的内容大家可以查看相关资料)。所以又花了几天时间来专门学习“44binit.s”这个文件。从对这个文件的学习中,了解了不少关于ARM程序设计的知识,并对ARM程序设计的整体框架学习有了一个大体上的了解,学完这个,几天来第一次这么有信心,以为了解了这样ARM就可以很容易了。
可是,没高兴几个小时,做了一些程序,因为开实验箱上带的两个程序都没有注册,其中IDE还好说,很容易就搞定了,可是那个online flash progremmer,哎,我对它一点办法都没有。。。。只能。。。。无奈。。。。
还过现在好了,用自己开发板光盘里带的flash progremmer今天终于可以下载了。
因为老师要做一块简单的ARM系统板,就当是了解一下44B0的硬件吧,我又画了几天的板子,因为protel用的不太好,就只画了原理图部份,不过,这学习ARM的外围电路还算是有很大帮助的。
中间还做了个JTAG转接口,因为想用实验箱上带的ARM仿真器还在我的开发板上用,那个仿真器同20针的,而我的开发板上的JTAG是14针了,还好,还算简单,只要对着两个原理图看看它们的JTAG接口,对比一下,基本就可以搞定了,最后用面包板焊了一个转接口,还不错,能用。可是没办法,那个online flash progremmer地直没能够用上,最后又想实在不行就换开发环境,可是还真不容易,换了ADS(现在看来很简单,也就不过几步),以前玩过几天,因为那时没太多时间玩那个,当时对ARM还不是很了解,玩那个感觉真是一个字“难”,不过还好,今天总算还是有结果了。。。。。。
呵呵,说的很乱,只是我想说个人感觉,学习ARM还是先从整体上把握一下还是比较好,也算是比较快的一种方法,可以不用一开始就去看他怎么编程,内部的一些控制器怎么用等,最好是先了解一下ARM的ARM的整体框架及ARM程序设计的框架。等把这些都看懂了,后边的也就简单了,和学习其它单片机基本上也就差一多了。很简单的~~~
要说的就这么多了,下边通过例子简单演示一下用ADS开发的过程。 说明:ADS包括两个部分CodeWarrior for ARM Developer Suite和AXD Debugger。另外如果要用wiggler调试还要用到ARMJtagDebugFinal(调试代理),如果要烧写flash 还要用
Flash Programmer。在连接开发板调试之前必须先运行调试代理ARMJtagDebugFinal。
1. 和其它软件都一样,一开始当然是NEW一个工程序了:
File -> New: 选择ARM Executable Image , 并输入工程名和路径
完成后会出现口arm_demo.mcp一个窗口,有三个标签,分别为files , link order , target .
默认的为files.
2.软件基本上都一样,下一步就是建立文件,并加入工程了。
这里说明一下,还记得我上边说的那几个文件吧(44b.h , 44blib.h ,
44blib.c ,44binit.s另外还有option.inc , def.h , option.h , memcf.inc等,分别是什么功能大家可以自己看看很容易就看懂),以后基本上做每个ARM的工程都会把它们加入,这几个文件基本上就已经固定了。
除了这几个文件,就是建立自己包含Main函数的文件和一些自己要用到
的文件了。
2. 下来就是对编译的一些设置了,在上边刚刚建的工程中的arm_demo.mcp窗口上有三个标签,基中Targets下边有三个选项,是选择编译规则的:
其中,DebugRel : 使用该目标,在生成目标的时候,会为每一个源文件生成调试信息,
也就是说一般在调试时都选这项。
Release : 使用该目标,在生成目标时不会包含任何调试信息,如果要生成下
载到flash中去的文件的话就选择这项。
Debug : 使用该目标为每一个源文件生成最完全的调试信息。 (注意,本例中使用了DebugRel和Release两项分别做了调试和下载文件的生成)
3. 首先在2中选DebugRel(默认的),点 按钮,进行DebugRel Setting设置 在里就说三点生重要的: (1):Target->Target Settings 做如下设置: (2):linker -> ARM Linker设置如下:
其中ro base 和rw base 的设置参考“ADS中文教程”(这里 ro base 0x0c000000是SDRAM的地址)。
下边填写Image所在的开始段:
一般情况下Object/Symbol 填44BINIT.o , Section填写:Init (Init段是在在44BINIT.s中定义的)
(3)ARM fromELF 设置输出文件,参考下
(注意,因为我用的flash progermme不支持.bin文件的下载,所以这里选择Inter 32位
hex文件)
OK , 好了,可以编译了,编译后就会生成用于调试的文件,可以能过来调试,点 分别表示:选择要编译的文件,make ,debug 和 Run. 4.AXD调试:
在ADS窗口中点bebug或run之后,会跳出AXD调试界面: (Options—>configure target)对AXD进行配置 因为用wiggler来调试,要对AXD做以下设置:
(第一次使用时也要对AXD设置)如下对话框中,选择ADP —> Configure Setting… 选择ARM Ethernet driver :
OK —>Configure :Target IP address 填写127.0.0.1
OK,OK , Configure Target 配置完成,下来我们来配置Configure Interface….选项: Option —> Configure Interface …: 在出现的对话框中: General标签下:
Target connection 下拉列表中选择:ATTACH:connection according to target properties
Session file options 标签下:Reselect Target , Reload Images ,Run Configuration Script都选中: 其中Run Configuration Script下选择的44b0.INI为软件调试时用来初始化寄存器的脚本文件。
应用,确定。 好了,AXD的配置就这些。
下边就可以调试了(注意,用wiggler调试时必须先打开调试代理ARMJtagDebugFinal)。 在以后调试时,点击debug , run 就可以直接调用打开AXD调试了 调试窗口:
和其它软件差不多,有单步调试、全速运行等工能:
不过,很奇怪我没有找到Reset功能,每次重新调试都必须重新Reload Image。 下来我们来生成用来下载到flash 中去的文件: 还记得上边说到的这个窗口吧:
在上边我们调试时,这个窗口选择在DebugRel,而下边我们就要选择Releass了,这样可以生成不带任何调试信息的目标文件了,就可以下载到flash 中去了。 5. 选中Releass标签,点 按钮,进行设置
(1) 与调试时相同Post-linker选择ARM fromELF. 如下图: (2) Linker—>ARM Linker
RO填写0x00000000(flash地址),RW RW可以添也可以不添, 高兴了就添上0XC100000
Layout标签 :这个与前面Debug时的设置一样:
ARM fromELF :也设置和前面一样,只是为了区别前面生成的带有调试信息的目标文件,这里填写目标文件名称为:arm_down.hex:
OK,重新编译,就可生成arm_down.hex文件了,可以把它下载到flash中去,上电就可以运行了。
整了两天了,还好出来结果了,要不就真要有人疯了!!!呵呵。。。
给ARM上装了别个做好的LCD,并没有用到S3C44B0X自带的LCD controller , 而是用了几个GPIO,虽然说只是“移植上去”,可也把我整地够呛,整了两天,不知道为什么那LCD就是不理我,最后经过一点点的测试,可能是因为我开发板上44B0X的一个管脚(GPD0)坏了吧,无法让它输出高电平,找到问题之后,就在GPD0旁边找了一个管脚(GPE1)来分代替GPD0,OK问题解决了,怎么也没想到就这样一个问题又让我调了两天,哎,看来
以后还是得更细心一些了。
好了就说这些了,大家开始自己试试吧!!!
正在阅读:
ARM初学入门02-02
王维的画10-05
保护环境从我做起作文1500字05-09
2012全国数学竞赛乐山获奖名单01-18
铣床主轴设计 - 图文11-12
成立保安公司所需材料汇编(1)10-05
2013级本科中药学专业中药鉴定学复习题01-19
医疗质量管理和持续改进实施方案(山东大学口腔医院)08-25
宜宾市南溪区龙透水库大坝安全管理 -12-03
高级中学政治必修四第三课知识点.doc05-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 初学
- 入门
- ARM
- 医学微生物学临床病案-2015
- 《马克思主义基本原理概论》(课程代码03709)
- 消防工程施工组织设计(标准版)
- 第一章《集合与函数概念》单元测试题
- 山东邹城2007届高考考前政治押题卷(一)
- 二年级数学试卷2018年三年级数学下学期期末试题(北师大版)
- 2014级分析化学复习题二
- 220kV电缆普通室外终端头制作作业指导书
- 降本增效项目征集及奖励方案
- 工程施工组织本科试卷2
- 燃烧过程控制系统
- 小学语文五年级下学期期末复习(六)
- 1教师招聘重点考点(山香版教育理论高分题库精编·上)吐血整理
- 一年级语文教学随笔
- 九江市2017年第一次高考模拟统一考试英语答案
- 《财务管理学》课后答案
- 管理案例分析 - 答案(2)
- 施工文件及竣工图整理及归档规定
- 三方辅助,提升大班幼儿跳绳能力论文
- 完整的工程材料与基础作业题库答案