版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统教案武汉创维特信息技术有限企业
10/10/第1页提要13245嵌入式软件开发过程ARM软件设计与代码分析ARM软件开发工具-ADTIDE介绍67第六章嵌入式软件系统设计第2页2嵌入式系统软件开发流程软件需求分析:确定设计任务和目标,并提炼出设计规格说明书,作为正式设计指导和验收标准。嵌入式软件开发过程概要设计:描述系统怎样实现所述需求,包含软件模块划分、系统软件开发工具选择以及关键问题论证等。详细设计:详细描述各个模块实现方法与过程,模块间接口等问题,以作为编码人员编码准则。编码第3页3嵌入式系统开发流程单元调试:编码完成后,对各个模块进行单元调试,以确保模块正常工作。嵌入式软件开发过程集成调试第4页4ARM主流开发工具Windows操作系统ARMADS/SDT+调试器GNU+Cygwin+调试器ARMSDT+简易电缆Linux操作系统GNU+GDBARM软件开发工具-ADTIDE介绍第5页5惯用调试方法软件仿真驻留监控程序硬件要求高,普通在硬件稳定之后进行需要占用目标板上一部分资源不能对程序全速运行进行完全仿真JTAG仿真器完全非插入式调试,不使用片上资源,无需目标存放器,不占用目标系统任何端口仿真效果愈加靠近于目标硬件在线仿真器ARM软件开发工具-ADTIDE介绍第6页6ADTforARM集成开发系统ARM软件开发工具-ADTIDE介绍第7页7ADT1000EmulatorforARMARM软件开发工具-ADTIDE介绍
第8页8ADT1000EmulatorforARMARM软件开发工具-ADTIDE介绍
ADTEmulatorforARM是连接主机核目标机之间硬件设备,它实现ADTIDEforARM与目标机之间连接。它含有以下特征:支持ARM核CPU非插入式调试,无需目标存放器,不占用目标系统任何端口2.5V/3.3V/5V兼容电平接口支持标准14/20针JTAG接口运行状态指示与主机之间经过并口连接下载速度到达25Kbytes/S第9页9ADTIDEforARMARM软件开发工具-ADTIDE介绍
第10页10ADTIDEforARM主要特征-可视化编程环境ARM软件开发工具-ADTIDE介绍
支持ARM7、ARM9、SecurCore等。运行于Windows98、NT、、XP等平台。汉字、英文版本支持可视化源码编辑和工程管理功效界面友好,使用方便:类似MSVisualStudio用户界面,支持打印功效,支持文件内查找功效和FindinFiles功效第11页11ADTIDEforARM主要特征-可视化编程环境ARM软件开发工具-ADTIDE介绍
工程管理器:ADTIDE提供图形化工程管理工具,实现文件级、文件目录级、工程级多级编译连接选项管理以及工程级调试参数管理源码编辑器:支持标准文本编辑功效,支持C语言、汇编语言语法高亮显示辅助编辑工具:提供一系列辅助编辑工具,方便开发人员。包含:多剪贴板工具、代码模板工具、头文件和源文件切换工具、注释工具、符号配对书写工具等各种辅助编辑工具。第12页12ADTIDEforARM主要特征-交叉编译功效ARM软件开发工具-ADTIDE介绍
支持开发语言:ANSIC;EmbeddedC++;汇编语言编译工具:使用著名优异自由软件GNUGCC交叉编译工具,并经过优化和严格测试,支持C语言、汇编语言等编译参数设置:完全图形界面方式编译参数设置,提供可视化设置功效。支持工程级、文件目录级、文件级编译参数设置第13页13ADTIDEforARM主要特征-调试功效ARM软件开发工具-ADTIDE介绍
同时提供了图形和命令行两种调试方式程序单步执行程序下载存放区下载和上载功效。工程级调试参数管理支持源程序、反汇编程序和混合窗口显示,支持ARM/THUMB方式显示含有与MSVisualStudio类似调试菜单功效:Go,Stop,Reset,Restart,Stepinto,Stepover,Stepout,RuntoCursor等丰富示例程序第14页14ADTIDEforARM主要特征-调试功效ARM软件开发工具-ADTIDE介绍
断点功效:支持软件断点和硬件断点,实现断点设置、断点屏蔽、断点取消、断点列表等功效变量监视功效:随程序运行同时更新变量,即时修改变量值,可设置自动/手动刷新方式、十进制/十六进制显示ARM各种模式存放器即时查看与修改,当前模式指示,存放器值修改时红色突显存放器查看与修改,可设置自动/手动刷新方式、字节/双字节/四字节显示、大/小端方式显示,存放器值修改时红色突显第15页15ADTIDEforARM主要特征-调试功效ARM软件开发工具-ADTIDE介绍
函数堆栈显示,可设置自动/手动刷新方式、十进制/十六进制显示、参数值显示,参数类型显示板上存放器(OnBoardRegister)查看和修改,能够查看支持CPU全部板上存放器详细意义、当前值、各个位意义,可设置自动/手动刷新方式、二进制/十进制/十六进制显示、大/小端方式显示,支持十进制/十六进制方式修改存放器值,存放器值修改时红色突显。flash在线编程器,支持对各种flash芯片空白检验、擦除、编程、校验等操作,支持单一操作和自动操作两种操作方式,支持8/16/32位flash访问宽度,支持多片flash同时编程,编程速度达15Kbytes/s。提供统一flash编程接口,能够方便地添加flash编程方案。第16页16ADTIDEforARMARM软件开发工具-ADTIDE介绍
ADTIDE(Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple)用户手册、编程指南丰富例程第17页17多版本支持ARM软件开发工具-ADTIDE介绍
软件仿真版本ARM7版本ARM9版本简易仿真版本第18页18多工程管理ARM软件开发工具-ADTIDE介绍
工程当前活开工程第19页19可视化编辑器ARM软件开发工具-ADTIDE介绍
编辑菜单语法高亮编辑器辅助编辑工具条书签第20页20GCC交叉编译ARM软件开发工具-ADTIDE介绍编译菜单编译工具条编译结果输出错误定位第21页21编译器设置ARM软件开发工具-ADTIDE介绍多配置管理多工程设管理多参数配置第22页22汇编器设置ARM软件开发工具-ADTIDE介绍多配置管理多工程设管理多参数配置第23页23连接器设置ARM软件开发工具-ADTIDE介绍多配置管理多工程设管理多参数配置第24页24调试功效ARM软件开发工具-ADTIDE介绍
调试菜单调试工具条命令行调试窗口第25页25各种调试模式ARM软件开发工具-ADTIDE介绍
源码模式混合模式汇编模式第26页26断点ARM软件开发工具-ADTIDE介绍
断点列表断点第27页27存放器窗口ARM软件开发工具-ADTIDE介绍字模式半字模式字节模式修改凸显标识第28页28存放区上载下载功效ARM软件开发工具-ADTIDE介绍
存放区上载存放区下载第29页29存放器观察窗口ARM软件开发工具-ADTIDE介绍
多模式存放器显示修改凸显标识第30页30函数调用栈窗口ARM软件开发工具-ADTIDE介绍
函数调用栈第31页31变量观察窗口ARM软件开发工具-ADTIDE介绍
局部变量全局变量多个观察窗口第32页32命令窗口ARM软件开发工具-ADTIDE介绍
第33页33单步调试-STEPINTOARM软件开发工具-ADTIDE介绍第34页34单步调试-STEPOVERARM软件开发工具-ADTIDE介绍
第35页35单步调试-STEPOUTARM软件开发工具-ADTIDE介绍
第36页36单步调试-RUNTOCURSORARM软件开发工具-ADTIDE介绍
第37页37板上存放器ARM软件开发工具-ADTIDE介绍存放器组存放器存放器位域热点描述信息修改凸显标识第38页38板上存放器ARM软件开发工具-ADTIDE介绍第39页39FLASH在线编程器ARM软件开发工具-ADTIDE介绍
第40页40工具菜单ARM软件开发工具-ADTIDE介绍
可自定制第41页41在线帮助ARM软件开发工具-ADTIDE介绍
第42页42嵌入式软件开发无操作系统软件开发开启代码应用程序基于操作系统软件开发bootloader操作系统移植BSP板级支持包应用程序开发ARM软件设计与代码分析第43页43开启代码功效硬件初始化引导C代码特征通惯用汇编语言编写程序复位运行入口点代码量非常小程序流程设置中止、异常入口关中止硬件存放器初始化(GPIO配置、总线配置、PLL时钟)初始化栈指针数据区初始化C入口函数调用BLMainARM软件设计与代码分析第44页44应用程序(无操作系统)功效硬件驱动应用特征通惯用C语言或者嵌入式汇编语言编写程序较复杂,代码量较大ARM软件设计与代码分析第45页45bootloader功效硬件初始化引导操作系统下载程序(串口、网口、USB)烧写flash特征程序复位运行入口点通惯用汇编语言+C语言编写代码量较小ARM软件设计与代码分析第46页46嵌入式操作系统移植LinuxWindowsCEuC/OSIIuClinuxNucleusARM软件设计与代码分析第47页47BSP板级支持包功效为应用程序提供统一硬件操作接口特征高度硬件相关高度依赖于详细硬件平台各种操作系统各异ARM软件设计与代码分析第48页48应用程序开发(操作系统)功效GUI图形、人机交互控制算法特征硬件依赖程度小部分可仿真调试各种操作系统各异ARM软件设计与代码分析第49页49嵌入式软件设计和调试流程编辑创建工程添加文件、编写程序汇编语言加C语言编译配置编译、汇编和连接参数编写连接脚本文件编译调试连接调试器下载程序运行、调试固化经过仿真器烧写flash专用或通用编程器经过bootloader烧写flashARM软件设计与代码分析第50页50交叉编译GNU交叉编译编译.carm-elf-gcc汇编.Sarm-elf-gas连接.oarm-elf-ld操作文件汇编文件.SC文件.c链接脚本文件ldscript库文件.o.lib.a生成调试格式文件.elfDWARF-1DWARF-2生成bin文件elf2binarm-elf-objcopyARM软件设计与代码分析第51页51链接脚本段Text段rodata段data段bss段符号Image_RO_Limit
Image_RW_BaseImage_ZI_BaseImage_ZI_LimitGCC库专用调试信息ARM软件设计与代码分析第52页52链接脚本示例程序在SDRAM中运行程序在FLASH中运行ARM软件设计与代码分析第53页53GCC库GCC库标准C函数库lib.a-lc标准数学函数库libm.a-lm标准函数库支持库libg.a-lgGCC支持库libgcc.a-lgcc链接排列次序-lm–lc–lgcc-lgARM软件设计与代码分析第54页54JX44B0开启代码分析ARM软件设计与代码分析在基于ARM7TDMIcore嵌入式系统中,系统在上电或复位时都从地址0x00000000开始执行,所以在这个地址处安排通常就是系统开启代码。它通常也是BootLoader程序一部分,能够在开启代码基础上编写BootLoader。用汇编语言编写。开启代码是在复位后运行其它程序之前运行一段小程序。经过它,初始化硬件设备、建立内存空间映射图(JX44B0不需要),从而将系统软硬件环境带到一个适当状态,方便为最终调用C函数准备好正确环境。第55页55开启代码移植和修改ARM软件设计与代码分析开启代码除了依赖于CPU体系结构外,实际上也依赖于详细嵌入式板级设备配置,比如板卡硬件地址分配,RAM芯片类型,其它外设类型等。对于两块不一样嵌入式板而言,即使它们是基于同一个CPU而构建,假如他们硬件资源和配置不一致话,要想让运行在一块板子上开启代码也能运行在另一块板子上,也还是需要作一些必要修改。第56页56开启代码流程图开启代码功效:RAM初始化,设置各个部件时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用C函数。注意:在本阶段,尤其是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使用堆栈保留数据将产生不可预知结果;ARM软件设计与代码分析第57页57设置中止向量表该段向量表除了复位异常外,只有位于0地址处有效,也就是必须将该段代码烧写到FLASH中。复位异常直接跳转到ResetHandler处,它是相对跳转,位置无关。其余异常将跳转到0c000008+向量地址位置,使用绝对跳转。ARM软件设计与代码分析第58页58复位入口:切换到超级模式系统复位成功后,将自动进入SVC模式在初始化之前必须关闭中止,以免引发异常LOCKOUT:0xc0Bit6,7=1MODE_MASK:0x1fSUP_MODE:0x13ARM软件设计与代码分析第59页59设置中止模式并禁止中止设置S3C44B0INTCON存放器缺省值为0x07,能够不作该工作0x01e000000x01e00000ARM软件设计与代码分析第60页60关闭看门狗设置S3C44B0WTCON存放器必须设置0x01e000000x01d30000ARM软件设计与代码分析第61页61系统配置存放器使能回写buffer打开Cache0x01e000000x01c00000ARM软件设计与代码分析第62页62设置非Cache区域使能回写buffer打开Cache0-0x0b0000000c7000000-0xc730ARM软件设计与代码分析第63页63端口设置ARM软件设计与代码分析第64页64设置外部中止触发方式0x01e000000x01d0ARM软件设计与代码分析第65页65配置总线访问宽度ARM软件设计与代码分析第66页66配置总线访问时序ARM软件设计与代码分析第67页67C代码初始化ARM软件设计与代码分析第68页68堆栈初始化ARM软件设计与代码分析第69页69跳转到C入口函数ARM软件设计与代码分析第70页70JX44B0BOOTLOADER分析ARM软件设计与代码分析BootLoader是在开启代码基础之上,通常开启代码包含于BootLoader之中BootLoader惯用于引导操作系统或者应用程序BootLoader能够包含一些简单调试伎俩第71页71BootLoader基本概念BootLoader是系统加电后运行第一段软件代码。嵌入式系统中,整个系统加载开启任务完全由BootLoader来完成。比如在一个基于ARM7TDMIcore嵌入式系统中,系统在上电或复位时都从地址0x00000000开始执行,而在这个地址处安排通常就是系统BootLoader程序。简单地说,BootLoader就是在操作系统内核或用户应用程序运行之前运行一段小程序。经过这段小程序,我们能够初始化硬件设备、建立内存空间映射图(有CPU没有内存映射功效如S3C44B0),从而将系统软硬件环境带到一个适当状态,方便为最终调用操作系统内核或用户应用程序准备好正确环境。通常,BootLoader是依赖于硬件而实现,尤其是在嵌入式领域,为嵌入式系统建立一个通用BootLoader是很困难。ARM软件设计与代码分析第72页72BootLoader移植和修改BootLoader除了依赖于CPU体系结构外,BootLoader实际上也依赖于详细嵌入式板级设备配置,比如板卡硬件地址分配,RAM芯片类型,其它外设类型等。对于两块不一样嵌入式板而言,即使它们是基于同一个CPU而构建,假如他们硬件资源和配置不一致话,要想让运行在一块板子上BootLoader程序也能运行在另一块板子上,也还是需要作一些必要修改。ARM软件设计与代码分析第73页73BootLoader安装系统加电或复位后,全部CPU通常都从CPU制造商预先安排地址上取指令。比如,S3C44B0在复位时都从地址0x00000000取它第一条指令。嵌入式系统通常都有某种类型固态存放设备(比如:ROM、EEPROM或FLASH等)被安排这个起始地址上,所以在系统加电后,CPU将首先执行BootLoader程序。也就是说对于基于S3C44B0这套系统,我们BootLoader是从0地址开始存放,而这块起始地址需要采取可引导固态存放设备如FLASH。ARM软件设计与代码分析第74页74用来控制BootLoader设备或机制串口通讯是最简单也是最廉价一个双机通讯设备,所以往往在BootLoader中主机和目标机之间都经过串口建立连接,BootLoader程序在执行时通常会经过串口来进行I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。当然假如认为串口通讯速度不够,也能够采取网络或者USB通讯,那么对应在BootLoader中就需要编写各自驱动。ARM软件设计与代码分析第75页75BootLoader操作模式开启加载模式:这种模式也称为"自主"(Autonomous)模式。也即BootLoader从目标机上某个固态存放设备上将操作系统加载到RAM中运行,整个过程并没有用户介入。这种模式是BootLoader正常工作模式。下载模式:在这种模式下,目标机上BootLoader将经过串口连接或网络连接等通信伎俩从主机下载文件,比如:下载应用程序、数据文件、内核映像等。从主机下载文件通常首先被BootLoader保留到目标机RAM中,然后再被BootLoader写到目标机上固态存放设备中。BootLoader这种模式通常在系统更新时使用。工作于这种模式下BootLoader通常都会向它终端用户提供一个简单命令行接口。在教学系统中提供BootLoader中没有实现自主模式,能够经过修改代码来实现该功效。ARM软件设计与代码分析第76页76BootLoader与主机间文件传输通信设备及协议最常见情况就是,目标机上BootLoader经过串口与主机之间进行文件传输,传输能够简单采取直接数据收发,当然在串口上也能够采取xmodem/ymodem/zmodem协议以及在以太网上采取TFTP协议。ARM软件设计与代码分析第77页77BootLoader主要任务与经典结构框架从操作系统角度看,BootLoader总目标就是正确地调用内核来执行。大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以到达短小精悍目标,也就是前面说开启代码。而stage2则通惯用C语言来实现,这么能够实现复杂功效,而且代码会含有更加好可读性和可移植性。ARM软件设计与代码分析第78页78BootLoader主要任务与经典结构框架BootLoaderstage1通常包含以下步骤 为加载BootLoaderstage2准备RAM空间拷贝BootLoaderstage2到RAM空间中设置好堆栈跳转到stage2C入口点BootLoaderstage2通常包含以下步骤初始化本阶段要使用到硬件设备调用应用程序或开启内核ARM软件设计与代码分析第79页79Stage1初始化流程图stage1功效:RAM初始化,设置各个部件时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用Stage2。注意:在本阶段,尤其是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使用堆栈保留数据将产生不可预知结果;ARM软件设计与代码分析第80页80Stage2流程图stage2功效: 初始化串口,显示菜单,经过菜单获取用户输入,并执行对应操作。ARM软件设计与代码分析第81页81Bootloader更新程序流程图经过BootLoader更新程序流程。注意为了使用Bootloader更新FLASH中程序,需要首先将Bootloader搬迁到RAM中运行。ARM软件设计与代码分析第82页82嵌入式实时操作系统ARM软件设计与代码分析将在后面介绍第83页83板级支持包ARM软件设计与代码分析BSP(板级支持包)是介于底层硬件和操作系统之间软件层次,它完成系统上电后最初硬件和软件初始化,并对底层硬件进行封装,使得操作系统不再面对详细操作。第84页84板级支持包特点ARM软件设计与代码分析硬件相关性:因为嵌入式实时系统硬件环境含有应用相关性,所以,作为高层软件与硬件之间接口,BSP必须为操作系统提供操作和控制详细硬件方法。操作系统相关性:不一样操作系统含有各自软件层次结构,所以,不一样操作系统含有特定硬件接口形式。第85页85板级支持包功效ARM软件设计与代码分析第86页86板级支持包功效ARM软件设计与代码分析嵌入式系统初始化片级初始化板级初始化系统级初始化硬件相关设备驱动程序和BootLoader存在一定重合第87页87系统级初始化ARM软件设计与代码分析这是一个以软件初始化为主过程,主要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下初始化操作。包含加载和初始化与硬件无关设备驱动程序,建立系统内存区,加载并初始化其它系统软件模块,比如网络系统、文件系统等;最终,操作系统创建应用程序环境并将控制转交给应用程序入口。第88页88硬件相关驱动程序ARM软件设计与代码分析与初始化过程相反,硬件相关设备驱动程序初始化和使用通常是一个从高层到底层过程。尽管BSP中包含硬件相关设备驱动程序,不过这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP把它们与操作系统中通用设备驱动程序关联起来,并在随即应用中由通用设备驱动程序调用,实现对硬件设备操作。第89页89JX44B0应用代码设计及中止处理ARM软件设计与代码分析连接脚本第90页90JX44B0应用代码中止向量ARM软件设计与代码分析起始地址0x0c000008除复位异常外,其余异常入口地址由FLASH跳转得到第91页91JX44B0中止处理流程执行0x18处指令:LDRpc,=0x0c000020,由Bootloader控制执行0x0c000020处指令:HandlerIRQ,ramstart.s执行HandlerIRQ,ramstart.s执行HandleIRQ处保留中止分发例程,ramstart.s中初始化为IsrIRQARM软件设计与代码分析第92页92用汇编代码编写中止分发例程保护现场IsrIRQ: /*usingI_ISPRregister.*/ sublr,lr,#4 stmfdsp!,{lr}/*保留中止返回PC值*/stmfdsp!,{r0-r4}/*备份存放器R0-R4*/sub sp,sp,#4/*为PC预留栈空间*/stmfdsp!,{r8-r9}/*备份存放器R8-R9*/ldrr9,=I_ISPR/*读取中止状态*/ldrr9,[r9]
R9中保留中止状态ARM软件设计与代码分析第93页93用汇编代码编写中止分发例程寻找中止源 cmp r9,#0x0/*检验中止状态*/ beq i2 movr8,#0x0/*R8保留中止表偏移*/i0:/*逐位检验中止状态*/movsr9,r9,lsr#1 bcsi1 /*假如该位等于1,则处理这一中止*/addr8,r8,#4 /*修改当前中止偏移*/bi0 /*处理下一比特*/
找到中止则跳转到i1,R8保留找到中止偏移未找到中止则跳转到i2ARM软件设计与代码分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年海上风电场工程技术报告及未来五至十年能源布局报告
- 2026年智慧安防区块链技术应用报告
- 2026年第四季度思想汇报思想汇报(2篇)
- 思想汇报:雷锋的故事10月学雷锋思想汇报(2篇)
- 2026年下半年工作改进计划
- 2026年采购工作下半年计划及目标
- 2026年消防工程施工组织计划书
- 2026年国庆节期间安全工作安排部署
- 基于成果导向(OBE)的医学教育成本控制与质量提升
- 2026年安徽省省情知识竞赛试卷及答案(六)
- 河北石家庄文旅投建设集团有限公司招聘笔试题库2025
- 小针刀治疗腱鞘炎-课件
- 核磁共振(NMR)波谱学原理与应用课件
- DB11T 364-2023 建筑排水柔性接口铸铁管管道工程技术规程
- 国际经济学克鲁格曼中文
- GB/T 1920-1980标准大气(30公里以下部分)
- “天然气11.20”事故纪实(定)
- 技能岗位等级评定及管理办法
- HP-DL380-Gen10-服务器用户手册
- 《自然选择的证明》《宇宙的边疆》群文阅读课件23张-统编版高中语文选择性必修下册
- 卷扬机受力计算书
评论
0/150
提交评论