欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ARM嵌入式系统软件设计.ppt

    • 资源ID:67228588       资源大小:1.11MB        全文页数:217页
    • 资源格式: PPT        下载积分:40金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要40金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARM嵌入式系统软件设计.ppt

    ARM嵌入式系统软件设计要求熟悉嵌入式系统开发的硬件与软件环境;要求熟悉嵌入式系统开发的硬件与软件环境;掌握掌握ADSADS与与AXDAXD开发工具的使用方法;开发工具的使用方法;了解了解ARMARM的启动过程分析的启动过程分析;理解存储映射的机制理解存储映射的机制;熟悉与掌握嵌入式软件开发的一些常用技术熟悉与掌握嵌入式软件开发的一些常用技术2022/12/15.1 .1 开发平台开发平台学习嵌入式技术,必须要有硬件平台作实践,学习嵌入式技术,必须要有硬件平台作实践,它不象其它的根底理论课,学懂理论就行了,而它它不象其它的根底理论课,学懂理论就行了,而它主要在于实践应用,没有在硬件平台上实践是很难主要在于实践应用,没有在硬件平台上实践是很难学好嵌入式技术的。有了硬件平台,就可以开场从学好嵌入式技术的。有了硬件平台,就可以开场从理论到实践交替进展。理论到实践交替进展。给初学者一些快速入门的方给初学者一些快速入门的方法:法:2022/12/15从宏观上了解嵌入式系统的构造,要实现的从宏观上了解嵌入式系统的构造,要实现的功能;功能;利用一块成熟的开发板,这里成熟的开发板利用一块成熟的开发板,这里成熟的开发板是指硬件资源丰富,运行稳定可靠,配套的学习是指硬件资源丰富,运行稳定可靠,配套的学习资料齐全硬件与软件开发工具以及实例;资料齐全硬件与软件开发工具以及实例;熟悉开发板的主要功能;熟悉开发板的主要功能;在没有操作系统的情况下,按模块学习在没有操作系统的情况下,按模块学习2022/12/15 如:如:I/OI/O口应用的口应用的LEDLED实验、定时器实验、中断实验、定时器实验、中断实验等,实验等,在学习的过程中,首先是读懂该模块的硬件在学习的过程中,首先是读懂该模块的硬件功能,从电路图开场读懂再对应到该板卡的实际功能,从电路图开场读懂再对应到该板卡的实际实物上。一个一个模块搞懂,在学习模块时要注实物上。一个一个模块搞懂,在学习模块时要注意将硬件电路与配置存放器相结合,真正了解它意将硬件电路与配置存放器相结合,真正了解它们的含义,最后变成程序代码。们的含义,最后变成程序代码。2022/12/155)5)当模块学习到一定数量后,要将它们组成一个小当模块学习到一定数量后,要将它们组成一个小系统进展联调。在嵌入式系统里用得最多的编程语系统进展联调。在嵌入式系统里用得最多的编程语言就是言就是C C语言。汇编语言主要用在系统的初始化局语言。汇编语言主要用在系统的初始化局部。部。6)6)熟悉硬件后,为了开发出实用的嵌入式系统,一熟悉硬件后,为了开发出实用的嵌入式系统,一般是在操作系统上进展开发的。所以要熟悉般是在操作系统上进展开发的。所以要熟悉uc/osuc/os、linuxlinux和和wincewince等操作系统。等操作系统。2022/12/15 下面以基于下面以基于ARM9ARM9内核的内核的s3c2410s3c2410的开的开发板为例,说明初学者要进展入门学习需要发板为例,说明初学者要进展入门学习需要具备的一些开发条件:具备的一些开发条件:1 1基于基于ARM9ARM9内核的内核的s3c2410s3c2410的开发板一套的开发板一套 2 2常用的软件开发工具常用的软件开发工具 3 3常用电子测试仪表,如万用表、示波常用电子测试仪表,如万用表、示波器等器等2022/12/15MY-2410-1开开 发发 板板 基基 于于 三三 星星 公公 司司 的的 ARM处处 理理 器器S3C2410。是是编编者者自自主主研研制制的的一一款款ARM9实实验验开开发发板板。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驱动;驱动;4 4加载网卡驱动。加载网卡驱动。2022/12/15 在进展嵌入式系统开发时,首先用到的接口就在进展嵌入式系统开发时,首先用到的接口就是是JTAGJTAG接口,利用该接口对接口,利用该接口对S3C2410XS3C2410X等开发板,等开发板,配合配合sjf2410.exesjf2410.exe烧写监控程序,如烧写监控程序,如2410mons.bin2410mons.bin监控程序。监控程序。在以后的开发中,用该接口进展调试。在以后的开发中,用该接口进展调试。2022/12/152 2USBUSB接口接口 利用开发板上的利用开发板上的USB_DEVICEUSB_DEVICE接口,一般接口,一般用来配合用来配合DNW.exeDNW.exe来下载文件。来下载文件。下载速度较快。开发板上的下载速度较快。开发板上的USB_HOSTUSB_HOST可以可以外接应用设备,如:外接应用设备,如:USBUSB移动硬盘,移动硬盘,USBUSB摄像头摄像头等外设。等外设。2022/12/153 3串口串口 串口一般配合串口一般配合DNW.exeDNW.exe或超级终端来监控或超级终端来监控板子的运行情况,有时也可以用来下载文件。板子的运行情况,有时也可以用来下载文件。很多情况下主要用来调试,调试很方便,只需很多情况下主要用来调试,调试很方便,只需往串口存放器中填数据,就可以输出调试信息。往串口存放器中填数据,就可以输出调试信息。4 4网口网口 网口用来下载数据,也完成网络通信。网口用来下载数据,也完成网络通信。2022/12/152.2.软件开发环境软件开发环境穿插开发概念穿插开发概念 由于嵌入式系统硬件上的特殊性,一般不能安由于嵌入式系统硬件上的特殊性,一般不能安装装windowswindows操作系统和发行版的操作系统和发行版的linuxlinux系统,因为系统,因为它的它的CPUCPU运行速度,运行速度,FLASHFLASH的空间等都达不到通的空间等都达不到通用用PCPC系统的要求。所以在嵌入式系统上无法构建系统的要求。所以在嵌入式系统上无法构建其自己的开发环境,于是,人们采用了所谓的穿插其自己的开发环境,于是,人们采用了所谓的穿插开发模式。开发模式。2022/12/15 穿插开发就是指在一台通用计算机上进展软件穿插开发就是指在一台通用计算机上进展软件的编辑编译,然后下载到嵌入式设备中进展运行调的编辑编译,然后下载到嵌入式设备中进展运行调试的开发方式。试的开发方式。用来开发的通用计算机可以是用来开发的通用计算机可以是PCPC机、工作站等,机、工作站等,运行通用的运行通用的WindowsWindows或或LinuxLinux操作系统。开发计算操作系统。开发计算机一般称宿主机,嵌入式设备称目标机。在宿主机机一般称宿主机,嵌入式设备称目标机。在宿主机上编译好程序,下载到目标机上运行,穿插开发环上编译好程序,下载到目标机上运行,穿插开发环境提供调试工具对目标机上运行的程序进展调试。境提供调试工具对目标机上运行的程序进展调试。2022/12/15穿插编译是指在宿主机穿插编译是指在宿主机X86X86系统系统CPUCPU的通的通用计算机上使用用计算机上使用ADSADS,GCCGCC等穿插开发软件为等穿插开发软件为目标机开发程序,最后编译成可以在目标机开发程序,最后编译成可以在ARMARM体系体系构造的目标机上运行目标代码。宿主机与目标构造的目标机上运行目标代码。宿主机与目标机的连接关系如以下图所示。机的连接关系如以下图所示。2022/12/15 在宿主机上编译好目标代码后,通过宿主机到在宿主机上编译好目标代码后,通过宿主机到目标机的调试通道将代码下载到目标机,然后由运目标机的调试通道将代码下载到目标机,然后由运行于宿主机的调试软件控制代码在目标机上进展调行于宿主机的调试软件控制代码在目标机上进展调试。为了方便调试开发,穿插开发软件一般为一个试。为了方便调试开发,穿插开发软件一般为一个整合编辑、编译汇编链接、调试、工程管理及函数整合编辑、编译汇编链接、调试、工程管理及函数库等功能模块的集成开发环境库等功能模块的集成开发环境IDEIDEIntegrated Integrated Development EnvironmentDevelopment Environment,如,如ADSADS就是一个就是一个比较好的比较好的ARMARM开发开发IDEIDE。2022/12/15 嵌入式系统开发的使用的主要工具之间的嵌入式系统开发的使用的主要工具之间的关系,如以下图所示。开发工具分为不基于操关系,如以下图所示。开发工具分为不基于操作系统与基于操作系统两大块。作系统与基于操作系统两大块。在不基于操作系统的开发中,主要用到的在不基于操作系统的开发中,主要用到的是是ADSADS集成开发环境,与集成开发环境,与IAR IAR 公司的公司的IAR IAR EWARMEWARM开发软件以及一些监控与引导程序程开发软件以及一些监控与引导程序程序。序。2022/12/152022/12/152.ADS2.ADS组成介绍组成介绍 ADSADS全称为全称为ARM Developer SuiteARM Developer Suite,是,是ARMARM公司推出的新一代公司推出的新一代ARMARM集成开发工具。现集成开发工具。现在在ADSADS的最新版本是,它取代了早期的和,该的最新版本是,它取代了早期的和,该版本支持包括版本支持包括WindowsWindows和和LinuxLinux在内的多种操在内的多种操作系统。作系统。2022/12/151 1ADSADS组成介绍组成介绍1 1编译器编译器ADSADS提供多种编译器,以支持提供多种编译器,以支持ARMARM和和ThumbThumb指令的指令的编译。编译。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链接器。该命令既可以将编链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多译得到的一个或多个目标文件和相关的一个或多个库文件进展链接,生成一个可执行文件,也可个库文件进展链接,生成一个可执行文件,也可以将多个目标文件局部链接成一个目标文件,以以将多个目标文件局部链接成一个目标文件,以供进一步的链接。供进一步的链接。2022/12/153 3符号调试器符号调试器 armsd armsd是是ARMARM和和ThumbThumb的符号调试器。它能的符号调试器。它能够进展源码级的程序调试。用户可以在用够进展源码级的程序调试。用户可以在用C C或汇编或汇编语言写的代码中进展单步调试、设置断点、查看变语言写的代码中进展单步调试、设置断点、查看变量值和内存单元的内容。量值和内存单元的内容。2022/12/154 4fromELFfromELF 将将ELFELF格式的文件转换为各种格式的输出文格式的文件转换为各种格式的输出文件,包括件,包括BINBIN格式映像文件、格式映像文件、Motorola 32Motorola 32位位S S格式映像文件、格式映像文件、Intel 32Intel 32位格式映像文件和位格式映像文件和Verilog 16Verilog 16进制文件。进制文件。FromELFFromELF命令也能够为命令也能够为输入映像文件产生文本信息,例如,代码和数据输入映像文件产生文本信息,例如,代码和数据长度。长度。2022/12/155 5armararmar armar armar是是ARMARM库函数生成器,它将一系列库函数生成器,它将一系列ELFELF格式的目标文件以库函数的形式集合在一起。格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个用户可以把一个库传递给一个链接器以代替几个ELFELF文件。文件。2022/12/156 6CodeWarriorCodeWarriorCodeWarriorCodeWarrior集成开发环境集成开发环境IDEIDE为管理为管理和开发工程提供了简单多样化的图形用户界面,和开发工程提供了简单多样化的图形用户界面,用户可以使用用户可以使用ADSADS的的CodeWarrior IDECodeWarrior IDE为为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 符号调试器;符号调试器;与老版本与老版本兼容的兼容的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库中的与库中的与目标相关的函数作为自己应用程序中的一局部,目标相关的函数作为自己应用程序中的一局部,重新进展代码的实现。重新进展代码的实现。针对自己的应用程序的要求,对与目标无关针对自己的应用程序的要求,对与目标无关的库函数进展适当的裁剪。在的库函数进展适当的裁剪。在C C库中有很多函数库中有很多函数是独立于其他函数的,并且与目标硬件没有任何是独立于其他函数的,并且与目标硬件没有任何依赖关系。对于这类函数,用户可以很容易地从依赖关系。对于这类函数,用户可以很容易地从汇编代码中使用。汇编代码中使用。2022/12/15 利用下面的文件与程序,它们可以提高编程利用下面的文件与程序,它们可以提高编程效率,节省时间,也使初学者能够尽快入门。到效率,节省时间,也使初学者能够尽快入门。到达一定水平后,自己再在此文件与程序的根底上达一定水平后,自己再在此文件与程序的根底上修改,或重新编写自己的应用程序,尽可能地到修改,或重新编写自己的应用程序,尽可能地到达系统最优化的目的。达系统最优化的目的。2022/12/151INC目录下的文件目录下的文件2022/12/152INC目录下的文件说明目录下的文件说明根本数据类型重定义头文件,在定义数据类型根本数据类型重定义头文件,在定义数据类型时尽量使用时尽量使用U32,U16,S32,S16,U8,S8等类型,以等类型,以增强程序的可移植性,主要内容如下:增强程序的可移植性,主要内容如下:#ifndef_DEF_H_#define_DEF_H_;防止重复定义;防止重复定义_DEF_H_#defineU32unsignedint#defineU16unsignedshort#defineS32int#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#define 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)Cacheable/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_STARTADDRESS0 x33ffff00#define_MMUTT_STARTADDRESS0 x33ff8000#define_STACK_BASEADDRESS0 x33ff8000#defineHEAPEND0 x33ff00002022/12/15是是2410的存放器的地址宏定义头文件,方便的存放器的地址宏定义头文件,方便使用,主要内容如下:使用,主要内容如下:/存储器控制器的配置存放器的起始地址是:存储器控制器的配置存放器的起始地址是:0 x480000000 x48000030,由于,由于ARM的存放器的存放器是是32位的,而一个地址放一个字节,所以需要位的,而一个地址放一个字节,所以需要个地址。个地址。/Memorycontrol#definerBWSCON(*(volatileunsigned*)0 x48000000)/Buswidth&waitstatus/INTERRUPT的配置存放器的起始地址是:的配置存放器的起始地址是:0 x4a0000000 x4a00001c。/INTERRUPT#definerSRCPND(*(volatileunsigned*)0 x4a000000)/Interruptrequeststatus2022/12/15注意注意:在汇编语言中,用在汇编语言中,用2410addr.inc2410addr.inc文件。文件。volatile volatile的本意为的本意为“暂态的或暂态的或.“.“易变的,易变的,该说明符起到抑制编译器优化的作用。该说明符起到抑制编译器优化的作用。如果在声明时用如果在声明时用“volatile“volatile关键字进展修饰,关键字进展修饰,遇到这个关键字声明的变量,编译器对访问该变遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进展优化,从而可以提供特殊地量的代码就不再进展优化,从而可以提供特殊地址的稳定访问。址的稳定访问。2022/12/15 是调试时常用函数,还有一些其它的常用函是调试时常用函数,还有一些其它的常用函数的头文件。数的头文件。包含包含MMU相关函数的头文件。相关函数的头文件。2022/12/153SRC目录下的文件目录下的文件(1)2410init.s是是2410初始化启动程序,由汇编初始化启动程序,由汇编语言写成语言写成(2)2410lib.c是描述了是描述了2410的调试常用函数的原的调试常用函数的原型,用型,用C语言写成。语言写成。(3)2410slib.s包含汇编语言写的包含汇编语言写的MMU相关的程相关的程序代码。序代码。(4)mmu.c包含包含MMU相关的程序代码。相关的程序代码。(5)Uart0.c包含了串口的常用函数原型,用包含了串口的常用函数原型,用C语语言写成。言写成。2022/12/15主程序模板主程序模板.c/=/Function:S3C2410TestMainMenu/Program:Shin,OnPil(SOP)/Date:June13,2003/History/=#include#include#includedef.h#includeoption.h#include2410addr.h#include2410lib.h#include2410slib.h#includeuart0.h#includemmu.h2022/12/15voidIsr_Init(void);voidHaltUndef(void);voidHaltSwi(void);voidHaltPabort(void);voidHaltDabort(void);externvoid_rt_lib_init(void);voidTemp_Function(void);/=voidMain(void)inti=0;/Led_Display(15);MMU_Init();/初始化初始化MMU2022/12/15/=voidMain(void)inti=0;/Led_Display(15);MMU_Init();/初始化初始化MMU#ifADS10#endif/ChangeClockDivider(0,0);/1:1:1/ChangeClockDivider(0,1);/1:1:2/rCLKDIVN|=(12);/1:4:4/ChangeClockDivider(1,0);/1:2:2ChangeClockDivider(1,1);/1:2:4ChangeMPllValue(0 xa1,0 x3,0 x1);/FCLK=202.8MHz2022/12/15Port_Init();/IO端口初始化端口初始化Isr_Init();/设中断设中断Uart_Init(0,115200);/COM口初始化口初始化/SavethewastedpowerconsumptiononGPIO.rIISPSR=(25)|(20);/IIS_LRCK=44.1Khz384fs,PCLK=50Mhz.rGPHCON=rGPHCON&(0 xf18)|(0 x515)i=0;Led_Display(i);/控制四个控制四个LED显示显示2022/12/15voidIsr_Init(void)pISR_UNDEF=(unsigned)HaltUndef;pISR_SWI=(unsigned)HaltSwi;pISR_PABORT=(unsigned)HaltPabort;pISR_DABORT=(unsigned)HaltDabort;rINTMOD=0 x0;/All=IRQmode/rINTCON=0 x5;/Non-vectored,IRQenable,FIQdisablerINTMSK=BIT_ALLMSK;/Allinterruptismasked.rINTSUBMSK=BIT_SUB_ALLMSK;/Allsub-interruptismasked.“-“程序程序-“ARM Developer-“ARM Developer Suite V1.2Suite V1.2-“Codewarrior for ARM-“Codewarrior for ARM Developer SuiteDeveloper Suite翻开翻开CodewarriorCodewarrior。如下图。如下图。5.2 ADS5.2 ADS的使用简介的使用简介2022/12/15ADS ADS 为用户提供了为用户提供了7 7 个模板,分别是:个模板,分别是:1)ARM Executable Image1)ARM Executable Image:用于由:用于由ARM ARM 指令的代码生指令的代码生成一个成一个ELF ELF 格式的可执行映象文件;格式的可执行映象文件;2 2ARM Object LibraryARM Object Library:用于由:用于由ARM ARM 指令的代码生成一指令的代码生成一个个armar armar 格式的目标文件库;格式的目标文件库;3 3Empty ProjectEmpty Project:用于创立一个不包含任何库或者源文:用于创立一个不包含任何库或者源文件的工程;件的工程;4 4Makefile Importer WizardMakefile Importer Wizard:用于将:用于将VC VC 的的nmake nmake 或或者者GNU make GNU make 文件转入到文件转入到Code Warrior IDE Code Warrior IDE 工程文件;工程文件;2022/12/15 5 5Thumb ARM Executable ImageThumb ARM Executable Image:用于由:用于由ARM ARM 指令指令和和Thumb Thumb 指令的混合代码生成一个可执行的指令的混合代码生成一个可执行的ELF ELF 格式的格式的映象文件;映象文件;6 6Thumb Executable imageThumb Executable image:用于由:用于由Thumb Thumb 指令创指令创立一个可执行的立一个可执行的ELF ELF 格式的映象文件;格式的映象文件;7 7Thumb Object LibraryThumb Object Library:用于由:用于由Thumb Thumb 指令的代码指令的代码生成一个生成一个armar armar 格式的目标文件库。格式的目标文件库。2022/12/15 一般情况下均选择一般情况下均选择“ARM Executabel Image“ARM Executabel Image,然,然后在后在“Project name:“Project name:栏输入工程名称,在栏输入工程名称,在“Location:“Location:栏指定路径,本例子的工程名称为栏指定路径,本例子的工程名称为“ledflash“ledflash,点击确定,点击确定后后“ledflash“ledflash工程建立。注意路径设置和工程名不要使用工程建立。注意路径设置和工程名不要使用汉字。汉字。2022/12/15 工程建立以后将生成一个空的工程管理窗口,接下来就工程建立以后将生成一个空的工程管理窗口,接下来就是向工程内添加和建立目标文件了。是向工程内添加和建立目标文件了。先通过点击右键选择先通过点击右键选择“Create Group“Create Group,建立一个,建立一个“SRC“SRC文件夹,然后再右文件夹,然后再右键选择键选择“Add Files“Add Files来添加文件,如下图。来添加文件,如下图。2022/12/15 在添加文件的过程中你可能已经发现了在添加文件的过程中你可能已经发现了CodeWarrior IDE CodeWarrior IDE 为用户建立了三个为用户建立了三个TargetTarget,分别是,分别是“DebugRel“DebugRel、“Realse“Realse、“Debug“Debug,这三个,这三个Target Target 分别表示三种调试方式。分别表示三种调试方式。DebugRel DebugRel 表示在生成目标的时候会为每一个源文件表示在生成目标的时候会为每一个源文件生成调试信息;生成调试信息;Debug Debug 表示为每一个源文件生成最完全的调试信息;表示为每一个源文件生成最完全的调试信息;Release Release 表示不生成任何调试信息。表示不生成任何调试信息。2022/12/15 一般默认选择一般默认选择“DebugRel“DebugRel。同样的方法增加同样的方法增加SRCSRC文件的一些头文件文件的一些头文件,这些头文件这些头文件可以加也可以不加,如果不加,那么最好放在当前的目录可以加也可以不加,如果不加,那么最好放在当前的目录下。至此工程建立完毕。如下图。下。至此工程建立完毕。如下图。2022/12/15 工程建立完毕之后暂时还不能进展编译和链接,还需要工程建立完毕之后暂时还不能进展编译和链接,还需要进展一些配置。可以通过进展一些配置。可以通过“Edit“Edit-“DebugRel Settings-“DebugRel Settings或者或者“ALT+F7“ALT+F7来进入来进入“DebugRel Settings“DebugRel Settings。如下图。如下图。2022/12/15“DebugRel Settings“DebugRel Settings里面包含了很多设置信息,里面包含了很多设置信息,“Post-Linker“Post-Linker用于对输出文件进展操作,由于本例用于对输出文件进展操作,由于本例是需要最终写入到硬件中并运行的,所以必须进展设置。是需要最终写入到硬件中并运行的,所以必须进展设置。选择选择“ARM fromELF“ARM fromELF,表示编译后生成映象文,表示编译后生成映象文件件ImageImage后再调用后再调用FromELF FromELF 命令进展格式转换,命令进展格式转换,以转换成以转换成.bin.bin 或者或者.hex.hex 等可以直接烧写到目标芯片执等可以直接烧写到目标芯片执行的文件。行的文件。点击点击TargetTarget里面的里面的File MappingsFile Mappings即是文件映射,即是文件映射,里面放有里面放有ADSADS调试时所支持的文件格式,如调试时所支持的文件格式,如CPPCPP、C+C+,C C等,如下图。等,如下图。2022/12/152022/12/15 “Language Settings “Language Settings选项是调试程序时所支持的语选项是调试程序时所支持的语言格式。言格式。本例使用了本例使用了“ARM Assembler“ARM Assembler程序所对应的程序所对应的.s.s文件和文件和“ARM C Compiler“ARM C Compiler程序所对应的是程序所对应的是.c.c文件,所以请确保文件,所以请确保在这两个选项内的在这两个选项内的“Target“Target子选项内为子选项内为“ARM920T“ARM920T,因为因为MY2410MY2410开发板的体系构造为开发板的体系构造为ARM920T ARM920T,其他没有,其他没有用到的语言可以不选,因为下载到板上的程序使用了用到的语言可以不选,因为下载到板上的程序使用了C C语言语言和汇编语言。和汇编语言。2022/12/15设置设置“Linker选项选项在该选项里面有和硬件严密相关的设置,首先进入在该选项里面有和硬件严密相关的设置,首先进入“ARMLinker子选项,然后在选择子选项,然后在选择Output按键,按键,再再选中选中“simple。在此,需要设置入口地址。在此,需要设置入口地址entry:RO地址、地址、RW地址,地址,ROBASE只读基址,存放代码只读基址,存放代码段;段;RWBASE读写基址,存放数据段本例中可不设。读写基址,存放数据段本例中可不设。2022/12/15 首先设置首先设置R0/RW R0/RW 地址,地址,RO RO 表示表示Read OnlyRead Only,RW RW 表示表示Read WriteRead Write,RO RO 栏默认是栏默认是0 x80000 x8000,需要根据实际,需要根据实际硬件进展更改,一般为硬件进展更改,一般为RORO表示本程序运行时表示本程序运行时SDRAMSDRAM的起的起始地址,设始地址,设0 x300000000 x30000000。再选再选linktype(linktype(链接类型链接类型)选择选择 simple-simple-简单链接,简单链接,partia(partia(是否分块是否分块),Scattered(Scattered(是否分散是否分散),在,在“ARM“ARM LinkerLinker-“Options-“Options内还需要设置一个内还需要设置一个“Image“Image entry pointentry point,表示映象文件的入口点,表示映象文件的入口点就是就是SDRAMSDRAM中中的起始地址。的起始地址。2022/12/15设置设置“Layout“Layout 设置代码中的哪一段置于设置代码中的哪一段置于IMAGE IMAGE 的起始位置:即是的起始位置:即是整个程序入口的函数调用,因为程序整个程序入口的函数调用,因为程序MAKEMAKE以后,整个程序以后,整个程序生成的入口在生成的入口在2410init.s2410init.s文件当中,文件当中,ENTER ENTER就是程序生就是程序生成入口点,其中成入口点,其中AREAAREA表示段标识,表示段标识,InitInit表示段名,表示段名,CODECODE表表示代码段,示代码段,READONLYREADONLY表示只读属性,表示只读属性,2410init.s2410init.s文件要文件要进展编译生成相应的进展编译生成相应的.o.o文件,需要在文件,需要在object/smybol(object/smybol(目标和目标和记号记号)表上表上2410init.o2410init.o表示程序执行时候生成可执行的表示程序执行时候生成可执行的.o.o文件,文件,section(section(进入点即入口的函数名,进入点即入口的函数名,initinit函数函数)就是就是initinit函数。函数。通过上述设置后,然后进展编译、链接,这样产生的映像文通过上述设置后,然后进展编译、链接,这样产生的映像文件就有了唯一的程序入口点。件就有了唯一的程序入口点。2022/12/152022/12/15 在在“Linker“Linker选项下还有一个子选项需要进选项下还有一个子选项需要进展设置,即展设置,即“ARM fromELF“ARM fromELF,在,在“Target“Target的的“Post-Linker“Post-Linker设置成设置成“FromELF“FromELF后后,才才会有多种输出文件格式的选择:比方我们要生成会有多种输出文件格式的选择:比方我们要生成plain binaryplain binary的二进制文件的二进制文件plain binaryplain binary,就选,就选择择plain binary plain binary,一般设置成,一般设置成“Plain binary“Plain binary或者或者“Intel 32 bit hex“Intel 32 bit hex。如下图。如下图。2022/12/152022/12/15 进展输出文件名称和路径的设置,请带上扩展进展输出文件名称和路径的设置,请带上扩展名名.bin.bin 或者或者.hex.hex。当工程文件是从别处。当工程文件是从别处copy copy 过来过来的时候请记得对该路径进展重新设置,不然将出的时候请记得对该路径进展重新设置,不然将出现警告提示。现警告提示。2022/12/15 如果你的工程文件是从别处如果你的工程文

    注意事项

    本文(ARM嵌入式系统软件设计.ppt)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开