ARM实验指导书2632.docx
《ARM实验指导书2632.docx》由会员分享,可在线阅读,更多相关《ARM实验指导书2632.docx(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、西南科技大学计算机科学与技术学院第一章 ADS集成开发环境1 ADS集成开发环境简介1.1 ARM编译器的选择 ADS目前,针对ARM处理器核的C语言编绎器有很多,如SDT、ADS、IAR、TASKING和GCC等。据了解,目前在国内最流行的是SDT、ADS和GCC。SDT和ADS均为ARM公司自己开发,ADS为SDT的升级版,以后ARM公司不再支持SDT,所以不会选择SDT。GCC虽然支持广泛,很多开发套件使用它作为编译器,与ADS比较其编译效率较低,这对充分发挥芯片性能很不得,所以最终使用ADS编译程序和调试。本实验设备采用ADS编译器,其全称为ARM Developer Suite。AD
2、S由命令行开发工具、ARM时实库、GUI开发环境(Code Warrior和AXD)、实用程序和支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。ADS支持汇编语言和标准C语言和标准C+语言。1.2 ADS库路径ADS库路径是在ADS软件安装路径的lib目录下的两个子目录。假设,ADS软件安装在e:armadsv1_2目录,则在e:armadsv1_2lib目录下的两个子目录armlib和cpplib是ARM的库所在路径。armlib这个子目录包含了ARM C库,浮点代数运算库,数学库存等各类库函数。与这些库相就的头文件在e:armadsv1_2
3、include目录中。Cpplib这个子目录包含了Rogue Wave C+库和C+支持函数库。Rogue Wave C+库和C+支持函数库合在一起被称为ARM C+库。与这些库相应的头文件安装在e:armadsv1_2include目录下。读者需特别注意的几点:(1) ARM C库函数是以二进制格式提供的;(2) ARM 库函数禁止修改。如果读者想对库函数创建新的实现的话,可以把这个新 的函数编译成目标文件,然后在链接的时候把它包含进来。这样在链接的时候, 使用的是新的函数实现而不是原来的库函数。(3) 通常情况下,为了创建依赖于目标的应用程序,在ANSI C库中只有很少的几个函数需要实现重
4、建。(4) Rogue Wave Standard C+函数库的源代码不是免费发布的,可以从Rogue Wave Software Inc,或ARM公司通过支付许可证费用来获得源文件。2 ADS集成开发环境的使用2.1 进入ADS集成开发环境 点击桌面ADS图标,如下图所示,进入ADS集成开发环境。 2.2 建立一个工程(1) 在CodeWarrior中新建一个工程有两种方法:方法一:在工具栏中单击“New”按钮,如下图:方法二:在“File”菜单中选择“New”,如下图: (2)执行上步骤后,则会弹出“新建工程对话框”,如下图:在这个对话框中为用户提供了7种可选择的工程类型。ARM Exec
5、utabl Image:用于由ARM指令的代码生成一个ELF格式的可执行映像文件;ARM Object Library:用于由ARM指令的代码生成一个armar格式的目标文件库;Empty Prlject:用于创建一个不包含任何库或源文件的工程;Makefile Importer Wizard:用于将Visual C 的nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件;Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混和代码生成一个可执行的ELF格式的映像文件;Thumb Executable image:用于由Thu
6、mb 指令创建一个可执行的ELF格式的映像文件;Thumb Object Library:用于由Thumb指令的代码生成一个armar格式的目标文件库。在这里选择ARM Executable Image,在“Project name:”中输入工程文件名,本例为“ledcircle”,点击“Location:”文本框的“Set”按钮,浏览选择想要将该工程保存的路径,将宽大些设置好后,点击“确定”,即可建立一个新的名为ledcircle的工程。此时会出现ledcircle.mcp的窗口,如下图如示,其中有三个标签页,分别为files,linkorder,target。 2.3 新建原文件(1)在“
7、File”菜单中选择“New”,在打开的对话框中,选择标签页File,在File name中输入要创建的文件名,若是汇编语言则文件名格式为:*.s,若是C语言则文件名格式为:*.c,然后再点击“确定”关闭窗口。 在这里还有一个细节,希望注意。在建立好一个工程时,默认的target是DebugRel ,还有另外两个可用的target,分别为Realse和Debug,这三个target的含义分别为:DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;Debug:使用该目标为每一个源文件生成最完全的调试信息;Release:使用该目标不会生成任何调试信息。在本例中,使用默认
8、的 DebugRel 目标。2.4 向工程添加文件(1)在ledcircle.mcp窗口的file标签页内右击鼠标右键,选中“Add Files”可以把要用到的源程序添加到工程中。(2)选中了要添加的文件后,会出现如下所示的一个对话框,询问用户把文件添加到何类目标中,在这里,我们选择DebugRel目标,再按OK即可把刚才创建的两个文件添加到工程中来。 (3)对于本实验,在建立好每一个工程后都需将stardcode文件夹里的所有文件添加至工程中,且新建的每个文件里都需包含“config.h”头文件才行。原因不多说明,有兴趣可自行阅读文件代码。2.5 编译和链接工程在进行编译和链接前,首先讲述一
9、下如何进行生成目标的配置。点击Edit菜单,选择“DebugRel Settings”,则出现如下图如示的对话框:这个对话框中的设置很多,在这里只介绍一些最为常用的设置选项,读者若对其他未涉及到的选项感兴趣,可以查看相应的帮助文件。 (1)target设置选项A: TargetName 文本框显示了当前的目标设置。B: Linker 选项供用户选择要使用的链接器。在这里默认选择的是ARM Linker,使用该链接器,将使用armlink链接编译器和汇编器生成的工程中的文件相应的目标文件。C: Pre-Linker:目前CodeWarrior IDE不支持该选项。D: Post-Linker:选
10、择在链接完成后,还要对输出文件进行的操作。因为在本例中,希望生成一个可以烧写到Flash中去的二进制代码,所在在这里选择 ARM fromELF,表示在链接生成映像文件后,再调用FromELF命令将含有调试信息的ELF格式的映像文件转换成其化格式的文件。 (2)Linker设置 鼠标选中ARM Linker,出现如下图所示对话框。这里详细介绍该对话框的主要的标签页选项,因为这些选项对最终生成的文件有着直接的影响。 A: 在标签页Output中,Linktype中提供了三种链接方式。Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Sim
11、ple方式是默认的链接方式,也是最为频繁使用的链接方式,它链接生成简单的ELF格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered方式使得链接器要根据scatter格式文件中指定的地址映射,生成复杂的ELF格式的映像文件。这个选项一般情况下,使用不太多。因为我们所举的例子比较简单,选择Simple方式就可以了。在选择Simple方式后,就会出现Simple image。B: RO Base:这个文本框设置包含有RO段的加载域为同一个地址。默认是0x8000。这里用户要根据自已硬件的实际SDRAM的地址空间来修改这个地址,保证在这里填写的地址,是程序运行时,SDRAM地址空
12、间所能覆盖的地址。针对本实验可以设置地址值为: 0x00000000 。C: RW Base:这个文本框设置了包含RW和ZI输出段的运行域地址。如果选中split选项,链接器生成的映像文件将包含两个加载域和两个运行域,此时,在RW Base中所输入的地址为包含RW和ZI输出段的域设置了加载域和运行域地址。本实验可设置为:0x40000030 。D: 在标签页Options中,将Image entry point文本框设置为:0x00000000 。如下图所示:E: 在标签页Layout中,将Object/Symbol设为:startup.oF: 将Section设为:vectors鼠标选中AR
13、M fromELF,则会出现如下图所示的对话框:A: 在Output format中选择Intel 32 bit Hex B: 在Output file name文本域输入期望生成的输出文件存放的路径,或通过点击Choose按钮从文件对话框中选择输出文件。如果在这个文本域不输入路径名,则生成的文件存放在工程所在的目录下。 (3)点击CodeWarrior IDE的菜单Project下的make菜单,或按F7键就可以对工程进行编译和链接了。第二章 基础实验一 数码管扫描程序1 实验目的1.1 理解ARM数码管显示的一般原理,掌握使用数码显示的一般方法。1.2 学会十六进制字型的显示方法1.3 学
14、会同时(实际上并不是同时,只是视觉)让多个数码管显示,显示任意字符1.4 了解74HC595是如何工作的2 实验内容2.1 理解数码管显示的字符代码和数字之间的关系。2.2 理解数码管是如何片选及显示2.3 依次让多个数码管显示任意字符2.4 学会使用74HC5953 实验预习要求3.1 查找数码管扫描相关资料,了解循环扫描的基本原理,3.2 复习ARM中对端口的操作步骤,复习数码管模块的是实现方法。3.3 查找74HC595的芯片资料,了解该芯片的工作原理和在数码管扫描模块中的作用。4 实验原理5 端口寄存器介绍PINSEL是用于选择端口功能选择,IOPIN用于读引脚当前状态,IOSET控制
15、寄存器引脚输出高电平,IOCLR控制寄存器引脚输出低电平,IODIR控制每个IO口的方向。例如:IODIR |= DLED_RCK;(DLED_RCK为宏,是一个 32位无符号整型)5.1 595原理数码管扫描涉及到4个引脚,分别是P0.17P0.20。P0.17,P0.18,P0.20分别作为74HC595的SCK,SI,RCK。(结合74HC595手册理解)通过SI口接收每位数据;SCK的高电平发出移位信号,每位数据都移动到下一个移位寄存器中;遇到同步发送脉冲RCK时,将多位数据一次发送到寄存器中,形成一个相当于8位或多位的并行数据;从而通过595给数码管给予片选和数据5.2 数码管原理数
16、码管内部为8个发光二极管,并排列为8字形,同时加一个位表示小数点,通过这8个发光二极管的合理组合,可以构成不同的数字字型和简单的字母字型,同时数码管还有一个位选信号。即8个数码管的公共端,用于电平选中。原理图中的AH的0,1组合就可以组成不同的字符。6 实验流程图 数码管原理图 图 1 数码管总体流程图 7 参考源代码8 思考题8.1 如何使你写的程序高效8.2 如何使你写的程序可广泛移植到其他程序中8.3 是否有其他的方法让数码管显示二 键盘扫描程序1 实验目的1.1 了解键盘电路的布局,理解键盘扫描的基本原理1.2 熟练掌握键盘轮转扫描的方法1.3 熟悉74HC595芯片的原理,以及如何利
17、用74HC595写程序实现串并转换。2 实验内容2.1 了解实验箱键盘模块的工作原理,引脚连接。2.2 写程序实现轮转扫描算法,实现键盘的扫描。能够判断是否有键按下,结合数码管显示模块,实现按下某键显示相应内容。3 实验预习要求3.1 查找键盘相关资料,了解轮转扫描的基本原理,对比其与行扫描、全扫描的区别。3.2 复习ARM中对端口的操作步骤,复习数码管模块的是实现方法。3.3 查找74HC595的芯片资料,了解该芯片的工作原理和在键盘扫描模块中的作用。4 实验原理4.1 键盘扫描引脚设置键盘扫描涉及到4个引脚,分别是P0.4P0.7。P0.4,P0.6,P0.7分别作为74HC595的SCK
18、,SI,RCK,(595原理在前一实验已做介绍) p0.5为返回值端口,也是按键是否按下的判断位。在硬件电路上,只要一个按键按下,并且对应的片选中该位为低电平(任意一位同时满足两条件),那么rekey端口将返回低电平,处理器可以根据该端口的电平来判断是否有键按下。具体是何键值则可以由程序设计判断,因为片选可以通过逐位清(16个位只能有一位为)来实现的(本实验才用轮转扫描算法)4.2 轮转扫描实现通过595向16位键盘输入片选,其中只有一位为,为了在同一时刻只判断一位是否按下。通过对片选数据逐位右移,将对每一位判断是否按下,如果同时满足该位片选为且有键按下,那么返回值为,说明有键按下,同时可在程
19、序中用一记数变量记录判断是哪一位,同时就解决了是何键按下,因为一旦判断出返回值为,说明此刻记数变量的值即为按下键盘为的值(或者说相关,看你具体程序如何处理),此刻立即取出变量中的值,就做到了判断是何键位的目的。5 实验流程图 总体流程图扫描函数流程图6 参考源代码7 思考题7.1 如果按键与需要的偶尔有差别,为什么?7.2 当按下键后,是否需要继续扫描,两者如何实现?7.3 同时按下两个键,什么结果,为什么?三 点阵屏汉字显示程序1 实验目的1.1 了解点阵屏显示基本原理1.2 熟悉74HC595芯片的原理,以及如何利用74HC595写程序实现串并转换。1.3 熟悉使用字模软件1.4 进一步熟
20、悉ARM的端口操作2 实验内容2.1 建立汉字字库2.2 在点阵屏上显示汉字3 实验预习要求3.1 预习GPIO(GERERAL PROGRAMABLE INPUT OUTPUT)通用可编程输入输出口的基本操作。3.2 找相关74HC595芯片的资料,了解起基本原理和使用方法。4 实验原理点阵屏涉及到4个引脚,分别是P0.20P0.17。P0.4,P0.17,P0.18和P0.19,P0.20分别作为74HC595的SCK,SI,RCK。(结合74HC595手册理解)通过SI口接收每位数据,P0.18和P0.19分别对应SI-X,SI-Y,用于控制行和列的显示;SCK的高电平发出移位信号,每位
21、数据都移动到下一个移位寄存器中;遇到同步发送脉冲RCK时,将多位数据一次发送到寄存器中,形成一个相当于16位或多位的并行数据。 点阵显示是这样实现的。利用串并转换将两个16位数据分别发送给P0.18和P0.19所对应的SI-X和SI-Y。它们分别控制片选位和显示数据位。(至于行列哪个作片选位哪个做数据显示位可由自己定,一般便于观察和结合字模软件,将点阵屏相对于实验箱正向的行作为数据显示位,列作为片选位)通过控制片选和数据显示位可以实现固定行显示固定的亮灭信息。再通过扫描算法(与LED灯相似)实现点阵屏显示任意数据信息。字模软件的使用:通过字模软件,可以很容易的实现16X16(或者其他大小)的点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 实验 指导书 2632
限制150内