第一ARM基础知识和开发环境.ppt_第1页
第一ARM基础知识和开发环境.ppt_第2页
第一ARM基础知识和开发环境.ppt_第3页
第一ARM基础知识和开发环境.ppt_第4页
第一ARM基础知识和开发环境.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容大纲 ARM编译环境ADS ARMDeveloperSuite 介绍ARM调试器AXD介绍HELLO程序实验分析作业调试 1ARMDeveloperSuite介绍 ADS1 2是为嵌入式ARM设计的一整套软件开发工具从最初的软件原型到最终优化的ROM代码 ADS1 2发布于2001的12月份支持的主机系统IBMcompatiblePCswithWindows95 98 2000 MEorNT4SunworkstationswithSolaris2 6 2 7or2 8HPworkstationswithHPUX10 20 11RedHatLinux6 2 7 1使用FLEXLM管理器 管理它的LICENSE45天的评估版软件第三方工具支持 1 1ADS开发环境介绍 支持最新的ARM内核ARM926EJ S ARM9EJ S VFPv2支持V5TEJ体系结构ARMulator仿真执行JavabytecodeBytecode显示Jazelle状态主机系统可支持RedHatLinux 6 2and7 1 库管理器可合并各种库使用pragmas 可实现出色代码和数据的布局为可重定位的代码设置新的链接选项编译器同时输出汇编码和目标码 1 1ADS开发环境介绍 ANSIC编译器 armccandtccISO EmbeddedC 编译器 armcppandtcppARM Thumb汇编器 armasmLinker armlinkWindows集成开发环境 CodeWarriorDebugger AXDarmsd可向前兼容格式转换器 fromelf 1 1ADS开发环境介绍 库管理器 armarCandC 库指令级仿真 ARMulator同时包含ARMFirmwareSuiteARMApplicationLibraryRealMonitor 1 1ADS开发环境介绍 命令行makefileIDE 1 1ADS开发环境介绍 1 2使用ADS建立工程 运行ADS1 2集成开发环境 CodeWarriorforARMDeveloperSuite 选择File New 菜单 在对话框中选择Project 如图1 1所示 新建一个工程文件 图中示例的工程名为Exp6 mcp 点set 按钮可为该工程选择路径如图所示 选中CreatFolder选项后将以图1 2中的ProjectName或图中的文件名为名创建目录 这样可以将所有与该工程相关的文件放到该工程目录下 便于管理工程 在图1 1中工程模板列表中的2410ARMExecutableImage是专为本嵌入式开发板设置的工程模板 后文有具体说明 在此也可选择ARMExecutableImage通用模板 图1 1 1 2使用ADS建立工程 图1 2 1 2使用ADS建立工程 在新建的工程中 如图1 3所示 选择Debug版本 使用Edit DebugSettings菜单对Debug版本进行参数设置 图1 3 1 2使用ADS建立工程 在DebugSettings对话框中选择TargetSettings项 如图1 4所示 在Post linker一栏中选择ARMfromELF 图1 4 1 2使用ADS建立工程 对于2410 在DebugSettings对话框中选择ARMLinker项 如图2 5 在Output选项卡的Simpleimage框中设置连接的Read Only 只读 和Read Write 读写 地址 地址0 x30008000是开发板上SDRAM的真实地址 是由系统的硬件决定的 0 x30200000指的是系统可读写的内存地址 也就是说 在0 x30008000 0 x30200000之间是只读区域 存放程序的代码段 在0 x30200000开始是程序的数据段 对44B0 在Simpleimage框中设置连接的Read Only 只读 和Read Write 读写 地址 地址0 x0c080000是开发板上SDRAM的真实地址 是由系统的硬件决定的 0 x0c200000指的是系统可读写的内存地址 也就是说 在0 x0c080000 0 xC1fffff之间是只读区域 存放程序的代码段 在0 xC200000开始是程序的数据段 1 2使用ADS建立工程 图1 5 1 2使用ADS建立工程 图2 5所示的设置只是一种简单设置 如果程序需要用到标准C库函数的话需要按图1 6进行连接地址的设置 标准C中如果使用malloc及其相关的函数 需要使用系统的堆 Heap 空间 可以通过scatter文件来描述系统HEAP段的位置 针对2410 S开发板 把程序的入口定位在0 x30008000 并定义scatter文件为scat ram scf 在图2 6中选择LinkType为Scattered 输入scatter文件名scat ram scf 然后切换到Options选项卡在ImageEntryPoint框中输入0 x30008000 也可以在图2 6的CommandLine框中直接输入 entry0 x30008000 scatterscat ram scf进行上述设置 对于44B0为0 xc080000 1 2使用ADS建立工程 图1 6 1 2使用ADS建立工程 提示 1 程序移植到ADS后 程序最开始首先执行用汇编写的初始化代码 包括中断向量和堆栈的初始化 在该段代码中使用IMPORT main 注意main前面是两个下划线B main进行系统内部的标准C函数初始化 然后调用用户在C中定义的main 函数 注意 两个main都是小写 并且在嵌入式应用中用户C的main函数中不能有参数 intmain void 2 不能有系统定义的软中断 在汇编中可以使用IMPORT use no semihosting swi来检测 在C中使用 pragmaimport use no semihosting swi ensurenofunctionsthatusesemihosting 1 2使用ADS建立工程 在第 4 步中如果不选择简单的连接地址设置 则需按图2 7所示设置C编译器 在DebugSettings对话框中选择ARMCCompiler项 在ATPCS选项卡中选择ARM Thumpinterwork 或者在命令行中添加 apcs interwork 图1 7 1 2使用ADS建立工程 在第四步中如果选择简单的地址连接设置 在DebugSettings对话框中选择ARMLinker项 如图2 8 在Layout选项卡的Placeatbeginningofimage框中设置程序的入口模块 指定在生成的代码中 程序是从startup s开始运行的 Object设为startup o section设为init 44B0为44binit o section为init 图1 8 1 2使用ADS建立工程 在DebugSettings对话框中选择ARMfromELF项 如图1 9 在Outputfilename框中设置输出文件名为system bin 这就是要下载到开发板的嵌入式应用程序文件 图1 9 1 2使用ADS建立工程 回到如图1 10所示的工程窗口中 选择Release版本 使用Edit ReleaseSettings菜单对Release版本进行参数设置 参照第 3 4 5 6 7 步在ReleaseSettings对话框中设置Release版本的Post linker 连接地址范围 入口模块和输出文件 回到如图2 3所示的工程窗口中 选择Targets选项卡 如图2 10所示 选中DebugRel版本 按Del键将其删除 DebugRel子树是一个折衷版本 通常用不到 所以在这里删除 1 2使用ADS建立工程 图1 10 1 2使用ADS建立工程 设置完成后 可以将该新建的空工程文件作为模板保存以便以后使用 将工程文件名改为2410ARMExecutable mcp 然后在ADS1 2软件安装目录下的Stationery目录下新建名为2410ARMExecutableImage的模板目录 再将刚设置完的2410ARMExecutable mcp工程模板文件存放到该目录下即可 这样以后新建工程的时候如图1 1所示就能看到以2410ARMExecutableImage为名字的模板了 新建工程后 可以执行菜单Project AddFiles把和工程相关的所有文件即除inti的所有文件加入到工程中 ADS1 2不能自动按文件类别对这些文件进行分类 需要的话用户可以执行菜单Project CreateGroup创建文件组 然后分别将不同类的文件加入到不同的组 以方便管理 如图1 11所示 更为简单的办法是 在新建工程时ADS创建了和工程同名的目录 在该目录下按类别创建子目录并存放工程文件 选中所有目录拖动到任务栏上的ADS任务条上 不要松开鼠标当ADS窗口恢复后再拖动到工程文件窗口 松开鼠标 这样ADS将以子目录名建立同名文件组并以此对文件分类 1 2使用ADS建立工程 图1 11 1 2使用ADS建立工程 编译并双击图1 11中的Main c打开该文件 可以查看Main 函数的内容 这时也可运行程序 编译链接移除目标目录 1 2使用ADS建立工程 编译失败 双击定位到错误代码所在行 编译错误 1 2使用ADS建立工程 定位错误 1 2使用ADS建立工程 编译成功后链接 2AXD调试器介绍 配置JTAG仿真器1添加驱动2仿真调试AXD调试器介绍1点击DEBUG快捷图标打开AXD窗口 注意工程目录名最好为英文名 2AXD调试器介绍 2AXD调试器介绍 图2 1 2AXD调试器介绍 图2 2 2AXD调试器介绍 如果载入 ses文件失败 重新对target进行配置 如图2 2所示 配置成功后所图2 3 此时可下载映象文件 2AXD调试器介绍 2AXD调试器介绍 映象文件下载成功后 箭头停在头一条执行的汇编语句处 2AXD调试器介绍 CPU寄存器窗口 2AXD调试器介绍 变量窗口 2AXD调试器介绍 查看内存内容 2AXD调试器介绍 设置断点 2AXD调试器介绍 单步运行StepStepinStepoutRuntoCursorGo 3实验演示 通过串口输出 Hello world 4作业 通过串口接收数据 算出0到该数的累加和 并从串口输出需要用到的函数 voidUart Printf char fmt 向串口输出格式化字符串intUart GetIntNum void 从串口接收整数 一实验目的 掌握ARM的串行口工作原理学习编程实现ARM的UART通讯掌握S3C2410寄存器配置方法 二实验内容 实现查询方式串口的收发功能 接收来自串口 通过超级终端 的字符并将接收到的字符发送到超级终端 三预备知识 了解ADS集成开发环境的基本功能学习串口通讯的基本知识熟悉S3C2410串口有关的寄存器 四实验设备 2410s教学实验箱ARM920T的JTAG仿真器ARMADS1 2集成开发环境串口连接线 五基础知识 RS 232C接口通信的两种基本连接方式 五基础知识 信号电平规定 EIA电平 双极性信号逻辑电平 它是一套负逻辑定义 3V到 25V之间的电平表示逻辑 1 3V到 25V之间的电平表示逻辑 0 TTL电平 计算机内部 S3C2410 使用LVTTL电平 电平转换电路 常用专门的RS 232接口芯片 如SP3232 SP3220等 在LVTTL电平和EIA电平之间实现相互转换 五基础知识 异步串行口接口电路 五基础知识 S3C2410异步串行口控制器 S3C2410自带三个异步串行口控制器 每个控制器有16字节的FIFO 先入先出寄存器 最大波特率115 2K每个UART有7种状态 溢出错误 校验错误 帧错误 暂停态 接收缓冲区准备好 发送缓冲区空 发送移位缓冲器空 这些状态可以由相应的UTRSTATn或UERSTATn寄存器表示 并且与发送接收缓冲区相对应的有错误缓冲区 五基础知识 S3C2410异步串行口控制器 S3C2410自带三个异步串行口控制器 波特率的大小可以通过设置波特率寄存器 UBRDIVn 控制 计算公式如下 使用PCLK时的计算公式如下 UBRDIVn int PCLK 波特率 16 1使用UCLK时的计算公式如下 UBRDIVn int UCLK 波特率 16 1例如 使用PCLK 在40MHz的情况下 当波特率取115200bps时 UBRDIVn int 40000000 115200 16 1 20 五基础知识 与UART有关的寄存器 线路控制寄存器ULCONn 控制寄存器UCONn FIFO控制寄存器UFCONn 控制寄存器UMCONn 状态寄存器UTRSTAT 错误状态寄存器UERSTAT FIFO状态寄存器UFSTAT 发送寄存器UTXH和接收寄存器URXH 波特率因子寄存器UBRDIV 五基础知识 线路控制寄存器ULCONn 五基础知识 控制寄存器UCONn 五基础知识 状态寄存器UTRSTAT 五基础知识 发送寄存器UTXH和接收寄存器URXH 五基础知识 波特率因子寄存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论