ARM嵌入式系统软件设计.ppt
《ARM嵌入式系统软件设计.ppt》由会员分享,可在线阅读,更多相关《ARM嵌入式系统软件设计.ppt(217页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ARM嵌入式系统软件设计要求熟悉嵌入式系统开发的硬件与软件环境;要求熟悉嵌入式系统开发的硬件与软件环境;掌握掌握ADSADS与与AXDAXD开发工具的使用方法;开发工具的使用方法;了解了解ARMARM的启动过程分析的启动过程分析;理解存储映射的机制理解存储映射的机制;熟悉与掌握嵌入式软件开发的一些常用技术熟悉与掌握嵌入式软件开发的一些常用技术2022/12/15.1 .1 开发平台开发平台学习嵌入式技术,必须要有硬件平台作实践,学习嵌入式技术,必须要有硬件平台作实践,它不象其它的根底理论课,学懂理论就行了,而它它不象其它的根底理论课,学懂理论就行了,而它主要在于实践应用,没有在硬件平台上实践是
2、很难主要在于实践应用,没有在硬件平台上实践是很难学好嵌入式技术的。有了硬件平台,就可以开场从学好嵌入式技术的。有了硬件平台,就可以开场从理论到实践交替进展。理论到实践交替进展。给初学者一些快速入门的方给初学者一些快速入门的方法:法:2022/12/15从宏观上了解嵌入式系统的构造,要实现的从宏观上了解嵌入式系统的构造,要实现的功能;功能;利用一块成熟的开发板,这里成熟的开发板利用一块成熟的开发板,这里成熟的开发板是指硬件资源丰富,运行稳定可靠,配套的学习是指硬件资源丰富,运行稳定可靠,配套的学习资料齐全硬件与软件开发工具以及实例;资料齐全硬件与软件开发工具以及实例;熟悉开发板的主要功能;熟悉开
3、发板的主要功能;在没有操作系统的情况下,按模块学习在没有操作系统的情况下,按模块学习2022/12/15 如:如:I/OI/O口应用的口应用的LEDLED实验、定时器实验、中断实验、定时器实验、中断实验等,实验等,在学习的过程中,首先是读懂该模块的硬件在学习的过程中,首先是读懂该模块的硬件功能,从电路图开场读懂再对应到该板卡的实际功能,从电路图开场读懂再对应到该板卡的实际实物上。一个一个模块搞懂,在学习模块时要注实物上。一个一个模块搞懂,在学习模块时要注意将硬件电路与配置存放器相结合,真正了解它意将硬件电路与配置存放器相结合,真正了解它们的含义,最后变成程序代码。们的含义,最后变成程序代码。2
4、022/12/155)5)当模块学习到一定数量后,要将它们组成一个小当模块学习到一定数量后,要将它们组成一个小系统进展联调。在嵌入式系统里用得最多的编程语系统进展联调。在嵌入式系统里用得最多的编程语言就是言就是C C语言。汇编语言主要用在系统的初始化局语言。汇编语言主要用在系统的初始化局部。部。6)6)熟悉硬件后,为了开发出实用的嵌入式系统,一熟悉硬件后,为了开发出实用的嵌入式系统,一般是在操作系统上进展开发的。所以要熟悉般是在操作系统上进展开发的。所以要熟悉uc/osuc/os、linuxlinux和和wincewince等操作系统。等操作系统。2022/12/15 下面以基于下面以基于AR
5、M9ARM9内核的内核的s3c2410s3c2410的开的开发板为例,说明初学者要进展入门学习需要发板为例,说明初学者要进展入门学习需要具备的一些开发条件:具备的一些开发条件:1 1基于基于ARM9ARM9内核的内核的s3c2410s3c2410的开发板一套的开发板一套 2 2常用的软件开发工具常用的软件开发工具 3 3常用电子测试仪表,如万用表、示波常用电子测试仪表,如万用表、示波器等器等2022/12/15MY-2410-1开开 发发 板板 基基 于于 三三 星星 公公 司司 的的 ARM处处 理理 器器S3C2410。是是编编者者自自主主研研制制的的一一款款ARM9实实验验开开发发板板。
6、MY-2410开发板的实物与功能示意如以下图所示。开发板的实物与功能示意如以下图所示。2022/12/152022/12/152022/12/152022/12/15 开发板与开发板与PCPC机的连线如以下图所示。下面分机的连线如以下图所示。下面分别介绍这些接口的主要作用。别介绍这些接口的主要作用。2022/12/151 1JTAGJTAG接口接口 一般用来下载一般用来下载BootloaderBootloader。下载速度较慢。主要。下载速度较慢。主要完成:完成:1 1初始化初始化CPUCPU内部所有存放器;内部所有存放器;2 2加载串口驱动;加载串口驱动;3 3加载加载USBUSB驱动;驱动
7、;4 4加载网卡驱动。加载网卡驱动。2022/12/15 在进展嵌入式系统开发时,首先用到的接口就在进展嵌入式系统开发时,首先用到的接口就是是JTAGJTAG接口,利用该接口对接口,利用该接口对S3C2410XS3C2410X等开发板,等开发板,配合配合sjf2410.exesjf2410.exe烧写监控程序,如烧写监控程序,如2410mons.bin2410mons.bin监控程序。监控程序。在以后的开发中,用该接口进展调试。在以后的开发中,用该接口进展调试。2022/12/152 2USBUSB接口接口 利用开发板上的利用开发板上的USB_DEVICEUSB_DEVICE接口,一般接口,一
8、般用来配合用来配合DNW.exeDNW.exe来下载文件。来下载文件。下载速度较快。开发板上的下载速度较快。开发板上的USB_HOSTUSB_HOST可以可以外接应用设备,如:外接应用设备,如:USBUSB移动硬盘,移动硬盘,USBUSB摄像头摄像头等外设。等外设。2022/12/153 3串口串口 串口一般配合串口一般配合DNW.exeDNW.exe或超级终端来监控或超级终端来监控板子的运行情况,有时也可以用来下载文件。板子的运行情况,有时也可以用来下载文件。很多情况下主要用来调试,调试很方便,只需很多情况下主要用来调试,调试很方便,只需往串口存放器中填数据,就可以输出调试信息。往串口存放器
9、中填数据,就可以输出调试信息。4 4网口网口 网口用来下载数据,也完成网络通信。网口用来下载数据,也完成网络通信。2022/12/152.2.软件开发环境软件开发环境穿插开发概念穿插开发概念 由于嵌入式系统硬件上的特殊性,一般不能安由于嵌入式系统硬件上的特殊性,一般不能安装装windowswindows操作系统和发行版的操作系统和发行版的linuxlinux系统,因为系统,因为它的它的CPUCPU运行速度,运行速度,FLASHFLASH的空间等都达不到通的空间等都达不到通用用PCPC系统的要求。所以在嵌入式系统上无法构建系统的要求。所以在嵌入式系统上无法构建其自己的开发环境,于是,人们采用了所
10、谓的穿插其自己的开发环境,于是,人们采用了所谓的穿插开发模式。开发模式。2022/12/15 穿插开发就是指在一台通用计算机上进展软件穿插开发就是指在一台通用计算机上进展软件的编辑编译,然后下载到嵌入式设备中进展运行调的编辑编译,然后下载到嵌入式设备中进展运行调试的开发方式。试的开发方式。用来开发的通用计算机可以是用来开发的通用计算机可以是PCPC机、工作站等,机、工作站等,运行通用的运行通用的WindowsWindows或或LinuxLinux操作系统。开发计算操作系统。开发计算机一般称宿主机,嵌入式设备称目标机。在宿主机机一般称宿主机,嵌入式设备称目标机。在宿主机上编译好程序,下载到目标机
11、上运行,穿插开发环上编译好程序,下载到目标机上运行,穿插开发环境提供调试工具对目标机上运行的程序进展调试。境提供调试工具对目标机上运行的程序进展调试。2022/12/15穿插编译是指在宿主机穿插编译是指在宿主机X86X86系统系统CPUCPU的通的通用计算机上使用用计算机上使用ADSADS,GCCGCC等穿插开发软件为等穿插开发软件为目标机开发程序,最后编译成可以在目标机开发程序,最后编译成可以在ARMARM体系体系构造的目标机上运行目标代码。宿主机与目标构造的目标机上运行目标代码。宿主机与目标机的连接关系如以下图所示。机的连接关系如以下图所示。2022/12/15 在宿主机上编译好目标代码后
12、,通过宿主机到在宿主机上编译好目标代码后,通过宿主机到目标机的调试通道将代码下载到目标机,然后由运目标机的调试通道将代码下载到目标机,然后由运行于宿主机的调试软件控制代码在目标机上进展调行于宿主机的调试软件控制代码在目标机上进展调试。为了方便调试开发,穿插开发软件一般为一个试。为了方便调试开发,穿插开发软件一般为一个整合编辑、编译汇编链接、调试、工程管理及函数整合编辑、编译汇编链接、调试、工程管理及函数库等功能模块的集成开发环境库等功能模块的集成开发环境IDEIDEIntegrated Integrated Development EnvironmentDevelopment Environm
13、ent,如,如ADSADS就是一个就是一个比较好的比较好的ARMARM开发开发IDEIDE。2022/12/15 嵌入式系统开发的使用的主要工具之间的嵌入式系统开发的使用的主要工具之间的关系,如以下图所示。开发工具分为不基于操关系,如以下图所示。开发工具分为不基于操作系统与基于操作系统两大块。作系统与基于操作系统两大块。在不基于操作系统的开发中,主要用到的在不基于操作系统的开发中,主要用到的是是ADSADS集成开发环境,与集成开发环境,与IAR IAR 公司的公司的IAR IAR EWARMEWARM开发软件以及一些监控与引导程序程开发软件以及一些监控与引导程序程序。序。2022/12/152
14、022/12/152.ADS2.ADS组成介绍组成介绍 ADSADS全称为全称为ARM Developer SuiteARM Developer Suite,是,是ARMARM公司推出的新一代公司推出的新一代ARMARM集成开发工具。现集成开发工具。现在在ADSADS的最新版本是,它取代了早期的和,该的最新版本是,它取代了早期的和,该版本支持包括版本支持包括WindowsWindows和和LinuxLinux在内的多种操在内的多种操作系统。作系统。2022/12/151 1ADSADS组成介绍组成介绍1 1编译器编译器ADSADS提供多种编译器,以支持提供多种编译器,以支持ARMARM和和Th
15、umbThumb指令的指令的编译。编译。armcc armcc是是ARM CARM C编译器;编译器;tcc tcc是是Thumb CThumb C编译器;编译器;armcpp armcpp是是ARM C+ARM C+编译器;编译器;tcpp tcpp是是Thumb C+Thumb C+编译器;编译器;armasm armasm是是ARMARM和和ThumbThumb的汇编器。的汇编器。2022/12/152 2链接器链接器 armlink armlink是是ARMARM链接器。该命令既可以将编链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多译得到的一个或多个目标文件和相关的
16、一个或多个库文件进展链接,生成一个可执行文件,也可个库文件进展链接,生成一个可执行文件,也可以将多个目标文件局部链接成一个目标文件,以以将多个目标文件局部链接成一个目标文件,以供进一步的链接。供进一步的链接。2022/12/153 3符号调试器符号调试器 armsd armsd是是ARMARM和和ThumbThumb的符号调试器。它能的符号调试器。它能够进展源码级的程序调试。用户可以在用够进展源码级的程序调试。用户可以在用C C或汇编或汇编语言写的代码中进展单步调试、设置断点、查看变语言写的代码中进展单步调试、设置断点、查看变量值和内存单元的内容。量值和内存单元的内容。2022/12/154
17、4fromELFfromELF 将将ELFELF格式的文件转换为各种格式的输出文格式的文件转换为各种格式的输出文件,包括件,包括BINBIN格式映像文件、格式映像文件、Motorola 32Motorola 32位位S S格式映像文件、格式映像文件、Intel 32Intel 32位格式映像文件和位格式映像文件和Verilog 16Verilog 16进制文件。进制文件。FromELFFromELF命令也能够为命令也能够为输入映像文件产生文本信息,例如,代码和数据输入映像文件产生文本信息,例如,代码和数据长度。长度。2022/12/155 5armararmar armar armar是是AR
18、MARM库函数生成器,它将一系列库函数生成器,它将一系列ELFELF格式的目标文件以库函数的形式集合在一起。格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个用户可以把一个库传递给一个链接器以代替几个ELFELF文件。文件。2022/12/156 6CodeWarriorCodeWarriorCodeWarriorCodeWarrior集成开发环境集成开发环境IDEIDE为管理为管理和开发工程提供了简单多样化的图形用户界面,和开发工程提供了简单多样化的图形用户界面,用户可以使用用户可以使用ADSADS的的CodeWarrior IDECodeWarrior ID
19、E为为ARMARM和和ThumbThumb处理器开发用处理器开发用C C、C+C+或者或者ARMARM汇编语言汇编语言编写的程序代码。编写的程序代码。2022/12/157 7调试器调试器 ADS ADS中包含有中包含有3 3个调试器:第一个是个调试器:第一个是AXD(ARM eXtended Debugger)AXD(ARM eXtended Debugger),它是,它是ARMARM扩扩展调试器;第二个是展调试器;第二个是armsd(ARM Symbolic armsd(ARM Symbolic Debugger)Debugger),它是,它是ARM ARM 符号调试器;符号调试器;与老版
20、本与老版本兼容的兼容的Windows Windows 或或Unix Unix 下的下的 ARM ARM 调试工具调试工具ADW/ADUADW/ADU。2022/12/158 8C C和和C+C+库库 ADS ADS提供提供ANSI CANSI C库函数和库函数和C+C+库函数,支持库函数,支持被编译的被编译的C C和和C+C+代码。用户可以把代码。用户可以把C C库中的与库中的与目标相关的函数作为自己应用程序中的一局部,目标相关的函数作为自己应用程序中的一局部,重新进展代码的实现。重新进展代码的实现。针对自己的应用程序的要求,对与目标无关针对自己的应用程序的要求,对与目标无关的库函数进展适当的
21、裁剪。在的库函数进展适当的裁剪。在C C库中有很多函数库中有很多函数是独立于其他函数的,并且与目标硬件没有任何是独立于其他函数的,并且与目标硬件没有任何依赖关系。对于这类函数,用户可以很容易地从依赖关系。对于这类函数,用户可以很容易地从汇编代码中使用。汇编代码中使用。2022/12/15 利用下面的文件与程序,它们可以提高编程利用下面的文件与程序,它们可以提高编程效率,节省时间,也使初学者能够尽快入门。到效率,节省时间,也使初学者能够尽快入门。到达一定水平后,自己再在此文件与程序的根底上达一定水平后,自己再在此文件与程序的根底上修改,或重新编写自己的应用程序,尽可能地到修改,或重新编写自己的应
22、用程序,尽可能地到达系统最优化的目的。达系统最优化的目的。2022/12/151INC目录下的文件目录下的文件2022/12/152INC目录下的文件说明目录下的文件说明根本数据类型重定义头文件,在定义数据类型根本数据类型重定义头文件,在定义数据类型时尽量使用时尽量使用U32,U16,S32,S16,U8,S8等类型,以等类型,以增强程序的可移植性,主要内容如下:增强程序的可移植性,主要内容如下:#ifndef_DEF_H_#define_DEF_H_;防止重复定义;防止重复定义_DEF_H_#defineU32unsignedint#defineU16unsignedshort#define
23、S32int#defineS16shortint#defineU8unsignedchar#defineS8char#defineTRUE1#defineFALSE 0#endif/*_DEF_H_*/2022/12/15是硬件系统重要设置头文件,如果要修改系统是硬件系统重要设置头文件,如果要修改系统的工作频率的工作频率,总线宽度,一些重要地址的值可在本总线宽度,一些重要地址的值可在本文件中修改,主要内容如下:文件中修改,主要内容如下:/#define FCLK 101250000 /SDRAM 2.5V use/#define FCLK 101250000 /SDRAM 2.5V use#d
24、efine FCLK 202800000 /#define FCLK 202800000 /#define HCLK(FCLK/2)/#define HCLK(FCLK/2)/#define PCLK(FCLK/4)/#define PCLK(FCLK/4)/#define UCLK PCLK#define UCLK PCLK/BUSWIDTH:16,32/BUSWIDTH:16,32#define BUSWIDTH (32)#define BUSWIDTH (32)2022/12/15/64MB/0 x300000000 x30ffffff:DownloadArea(16MB)Cacheab
25、le/0 x310000000 x33feffff:Non-CacheableArea/0 x33ff00000 x33ff47ff:Heap&RWArea/0 x33ff48000 x33ff7fff:FIQUserStackArea/0 x33ff80000 x33fffeff:NotUsedArea/0 x33ffff000 x33ffffff:Exception&ISRVectorTable#define_RAM_STARTADDRESS0 x30000000#define_NONCACHE_STARTADDRESS0 x31000000#define_ISR_STARTADDRESS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 嵌入式 系统软件 设计
限制150内