ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:854.50KB ,
资源ID:13636838      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13636838.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一ADS开发环境实验Word文档格式.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验一ADS开发环境实验Word文档格式.docx

1、五、基础知识1、ADS简介ADS是一个使用方便的集成开发环境,全称是“ARM Developer Suite”,它是由ARM公司提供的专门用于ARM相关应用开发和调试的综合性软件。它在易用性上比上一代的SDT开发环境有较大提高,是一套功能强大又易于使用的开发环境,目前的版本号是1.2。ADS囊括了一系列的应用,并有相关的文档和实例的支持。使用者可以用它来编写和调试各种基于ARM家族RISC处理器的应用。你可以使用ADS来编辑、编译、调试包括C、C+以及ARM汇编语言编写的程序。ADS主要由以下部分构成:􀂄ANSI C 编译器-armccand tccISO / Embedde

2、d C+ 编译器-armcppand tcppARM / Thumb 汇编器-armasmLinker -armlinkWindows 集成开发环境-CodeWarriorDebugger -AXDarmsd 可向前兼容格式转换器-fromelf库管理器-armarC and C+ 库指令级仿真器-ARMulator同时包含ARM Firmware SuiteARM Application LibraryRealMonitor图1-1 ADS各组件之间的关系在实验中我们接触最多,最直接的就是CodeWarrior和AXD Debugger这两个组件。在本节实验中我们主要会讲解如何在CodeWa

3、rrior 下建立工程,进行编译和连接,最终生成二进制文件。下一节会着重介绍如何用AXD Debugger进行下载和调试仿真。我们没有对其他组件进行详细介绍并不意味着其他模块没有发挥作用或者不重要,例如我们在编译生成二进制镜象的时就是ANSI C 编译器-armccand tcc,ISO / Embedded C+ 编译器-armcppand tcpp,ARM / Thumb 汇编器-armasm以及Linker armlink这些组件在完成这项工作。只是由于我们通过CodeWarrior环境进行操作可以在GUI界面下完成绝大部分工作,而不必直接和这些组件打交道,这是我们目前知道的在ARM下最

4、方便最快捷的开发方式,关于其他组件的详细资料可以参见ADS下帮助文档或者直接访问ARM公司的网站。图1-2 CodeWarrior基本界面六、实验说明1、ADSModule工程基本结构一个能够独立运行的工程中首先应该包括对硬件设备进初始化的代码,其次是一些辅助性代码,例如辅助调试代码,和工程应用性代码,为这些代码服务的头文件以及为整个工程相配套辅助文件,如编译控制文件和工程文件等。在实验光盘BSP目录下的ADSModule工程就是我们为这个实验系统定制的一个工程模板,实验系统ADS下的实验都是在ADSModule工程的基础上做相应的修改,添加应用部分实现的。如果针对这个实验系统做二次开发,也可

5、以在这个工程的基础上很方便的进行。打开ADSModule文件夹,可以看到12个文件:12410init.s采用ARM汇编实现,包含了系统初始化部分中最开始的部分,也是最关键部分的代码,完成了对S3C2410 Exception向量,中断向量表,内存,内存控制器和堆栈的初始化,同时又通过Main函数接口给调用后面的代码留出了接口。22410slib.h采用ARM汇编实现,主要完成了与MMU和CPSR相关的一系列辅助性函数。32410slib.s42410Main.cC语言编写,完成功能。52410lib.h用C语言实现了串口调用函数,字符串处理函数,端口初始化函数,CPU主频调整函数,Watch

6、dog控制函数等一系列辅助函数。62410lib.c72410addr.h分别使用汇编和C实现,定义了S3C2410芯片的特殊寄存器地址以及特殊寄存器的相应设定值。82410addr.inc9Memcfg.inc根据实验系统的硬件,定义了每个BANK内存控制器相关的设定值,在2410init.s中被用来初始化内存控制器10Option.h定义了一系列S3C2410可选择使用的主频,以及与之相配的寄存器设置参数,被用于2410init.s文件中设定S3C2410芯片主频11Option.inc12Def.h13reset.ini14ScatADS编译时控制编译器和连接器按照一定的内存结构进行。2

7、、关键代码分析:2.1 Exception Vectors代码分析 ASSERT :DEF:ENDIAN_CHANGE ENDIAN_CHANGE ASSERT :ENTRY_BUS_WIDTH ENTRY_BUS_WIDTH=32 b ChangeBigEndian ;DCD 0xea000007 ENTRY_BUS_WIDTH=16 andeq r14,r7,r0,lsl #20 ;DCD 0x0007ea00 ENTRY_BUS_WIDTH=8 streq r0,r0,-r10,ror #1 ;DCD 0x070000ea | b ResetHandler b HandlerUndef

8、;handler for Undefined mode b HandlerSWI ;handler for SWI interrupt b HandlerPabort ;handler for PAbort b HandlerDabort ;handler for DAbort b . ;reserved b HandlerIRQ ;handler for IRQ interrupt b HandlerFIQ ;handler for FIQ interrupt这段代码经过编译后将会被放在S3C2410芯片内部4K的BootSRAM开始处,也就是说这其实系统启动后会被最早调入内存和执行的代码,

9、他完成了最关键的Exception Vectors初始化。Exception VectorsAddressExceptionMode in Entry0x00000000ResetSupervisor0x00000004Undefined instructionUndefined0x00000008 Software Interrupt0x0000000CAbort(prefetch)Abort0x00000010Abort (data)0x00000014 Reserved0x00000018 IRQ0x0000001CFIQ2.2 中断跳转代码分析 IsrIRQ sub sp,sp,#4

10、stmfd sp!,r8-r9 ldr r9,=INTOFFSET ; 获得中断号 ldr r9,r9 ldr r8,=HandleEINT0 ;获得中断向量表基地址 add r8,r8,r9,lsl #2 ;计算偏移量 ldr r8,r8 str r8,sp,#8 ldmfd sp!,r8-r9,pc ; 跳转进入中断处理函数上面的代码通过INTOFFSET获得中断寄存器当中的中断号,然后通过HandleEINT0获得中断处理向量的基地址,根据中断号进行偏移,最终跳转到中断处理函数当中。2.3 scat文件分析LDR1 0x00000000 ROM1 0x00000000 0x1000 /

11、将镜象的第一部分限制在4K长度,从0地址开 / 始,刚好和芯片内部的4K BootRAM印合 2410init.o (Init, +First) / 限定这段内存当中只存放2410init.s编译形成的二进制代码 LDR2 0x30000000 / 镜象的第二部分从0x30000000开始,符合符合实验系统的硬件状况 RAM2 0x30000000 * (+RO) / 将其他全部的ReadOnly和ReadWrite属性的代 * (+RW) / 码放在这部分内存中0x30000000-0x30500000 RAM3 0x30500000 * (+ZI) / Zero Init属性的代码存放在0

12、x30500000开始位置的内存中七、实验步骤1、新建一个工程Step1: 启动ADS点击桌面开始程序ARM Developer Suite v1.2 CodeWarrior for ARM Developer Suite,弹出CodeWarrior for ARM Developer Suite的界面。图1-3 从“程序”启动CodeWarrior图1-4 CodeWarrior启动界面Step2: 建立新的工程点击FileNew,弹出新建工程对话框。如图1-x新建工程后点击“确定”, 进入工程编辑界面。图1-5 选择新建工程图1-6 新建工程对话框注意:在选择建立工程的文件夹时只需要指定到

13、“D:ADS实验”即可,ADS将自动建立工程文件夹。图1-7 工程编辑界面Step3: 拷贝工程相配套辅助文件将“实验说明”中提到的“光盘目录BSPADSmodel”文件夹下的12个文件拷贝到这个新建的文件夹中。我们可以看到这时文件夹中除了这十二个文件以外还有一个HELLOWORLD.mcp工程项目文件和一个HELLOWORLD_Data文件夹,这个文件夹是用来保存编译好的二进制文件和编译临时文件。再从光盘上ADSmodel的工程文件夹中将reset.ini和scat两个文件拷贝到这个工程文件夹下,其中scat就是上面讲到的编译控制文件,reset.ini是一段初始化代码,将在“JTAG下载和调试实验”一节中具体讲解它的用途。Step4: 在项目中添加文件。在CodeWarrior for ARM Developer Suite的工程项目窗口中点击右键,选中“Add files ”,弹出文件选择框。找到我们新建的工程文件夹,选中所有的*.C和*.S文件并确定。图1-8 向工程中添加文件图1-9 文件选择对话框图1-10 文件目标对话框只要工程没有特殊要求,添加文件的时候应该选种全部的Target,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1