如何在IAR中植入PE代码
- 格式:pdf
- 大小:945.12 KB
- 文档页数:7
SkyIAR使用说明简介 (1)1、系统恢复后精确导入IAR驱动范例 (1)2、系统封装后成套导入IAR驱动范例 (2)3、更换硬件而不更换系统范例 (3)4、更改当前磁盘控制器工作模式而不重装系统范例 (4)简介SkyIAR是由IT天空()Skyfree研发的一款用于解决磁盘控制器驱动问题的应用程序。
SkyIAR主要用于解决系统部署(系统安装)过程中,由于磁盘控制器IDE、AHCI、RAID 工作模式所带来的系统部署困难问题。
同时,SkyIAR还可以有效解决“换硬件不换系统”、“IDE改AHCI”等与磁盘控制器工作模式息息相关的问题。
SkyIAR具备“自动检测”、“自动筛选”、“一键完成”等特性,将原本复杂的磁盘控制器驱动问题简化为“一键操作”,极大的提高了技术人员的工作效率,最大程度的减少了因磁盘控制器驱动造成的系统部署蓝屏、宕机问题。
1、系统恢复后精确导入IAR驱动范例使用时机:目标计算机--> 开机--> 进入BIOS --> 调整磁盘控制器模式(如AHCI)--> 重启--> 进PE --> 恢复系统到系统盘(如C:\)--> 使用SkyIAR --> 重启--> 系统部署开始使用前提:所恢复系统映像中未包含其他磁盘控制器驱动使用方法:(1)选中“精确匹配”模式(默认模式)(2)SkyIAR会自动检测磁盘控制器硬件ID和系统类型(3)SkyIAR会自动根据磁盘控制器硬件ID和系统类型单选匹配驱动(4)如果所恢复映像是不包含其他IAR驱动的(推荐状态),无需点选两个清理项目(5)如果所恢复映像是包含其他IAR驱动的(不被推荐状态,易造成驱动冲突),可尝试点选“清理目标系统磁盘控制器驱动”(6)单击“开始”按钮,自动导入开始2、系统封装后成套导入IAR驱动范例使用时机:系统封装完成--> 重启计算机--> 进入PE环境--> 使用SkyIAR --> 备份系统为系统映像使用前提:系统是执行过封装操作的系统(不推荐任何非封装的直接克隆)使用方法:2012-8-30 15:44 上传下载附件 (77.49 KB)(1)选中“通用方案”模式(2)SkyIAR会自动检测系统类型(3)SkyIAR会根据系统类型提供适合的驱动(4)点选通用方案,SkyIAR会自动选中该方案中的驱动项目(5)封装时已删除即插即用驱动且非二次封装(推荐状态),无需点选两个清理项目(6)封装时未删除即插即用驱动或是二次封装(不推荐状态),需点选相应的清理项目(7)单击“开始”按钮,自动导入开始3、更换硬件而不更换系统范例使用时机:更换硬件后的计算机启动--> 进入BIOS --> 调整磁盘控制器模式(如AHCI)--> 重启--> 进PE --> 使用SkyIAR --> 重启进系统使用条件:更换前后的硬件平台差异不算太大,硬盘读写机制无太大差别使用方法:(1)选中“精确匹配”模式(默认模式)(2)SkyIAR会自动检测磁盘控制器硬件ID和系统类型(3)SkyIAR会自动根据磁盘控制器硬件ID和系统类型单选匹配驱动(4)点选两个清理项目(7)单击“开始”按钮,自动导入开始4、更改当前磁盘控制器工作模式而不重装系统范例使用时机:计算机启动--> 进入BIOS --> 调整磁盘控制器模式(如AHCI)--> 重启--> 进PE --> 使用SkyIAR --> 重启进系统使用条件:一般用于IDE模式改为AHCI模式使用方法:2012-8-30 15:47 上传下载附件 (76.25 KB)(1)选中“精确匹配”模式(默认模式)(2)SkyIAR会自动检测磁盘控制器硬件ID和系统类型(3)SkyIAR会自动根据磁盘控制器硬件ID和系统类型单选匹配驱动(4)由于只是是更换磁盘控制器模式,一般无需清理当前的磁盘控制器驱动(5)如果不清理当前的磁盘控制器驱动无法正常进入系统,可尝试选中清理(6)单击“开始”按钮,自动导入开始。
最近在学习罗云彬老师写的《Windows环境下32位汇编语言程序设计》书中的PE文件,着重分析了下如何在PE文件中添加可执行代码的问题。
因为书上对这个程序没有做过多分析,这里我把自己的分析过程及一些问题进行讲解,希望能给初学者一点帮助。
众所周知,PE文件是Windows下的文件格式,包括exe、dll等,那么如何向PE文件中添加可执行代码呢?我们应该有以下这些问题:1、可执行代码应该添加到PE文件的什么位置?2、如何让添加的代码最先执行?3、执行完添加的代码后如何回到原PE文件的起始地址?4、添加的代码如何获取需要用到的API地址?带着这些问题,我们的主题就开始了。
准备知识:1、首先你得知道PE文件结构,不然很多问题你不会很明白,附件中有一张我作的PE文件结构的思维导图,希望能对你有帮助。
2、新加的代码功能很简单,就是在运行这个PE文件之前弹出一个选择对话框,询问是否继续。
代码放在后面附件中,请读者先下载看看,后面的讲解中会涉及到。
3、了解Windows环境下的程序设计,不然你会不知道我在说什么,呵呵。
好了,废话不多说,我们进入正题。
1、使用通用控件GetOpenFileName函数打开一个查找文件的对话框,选择想要添加代码的文件。
获得文件句柄后,通过内存映射函数CreateFileMapping和MapViewOfFile获取PE 文件的起始地址。
然后通过对文件的MZ格式文件头和PE头分析该文件是不是有效的PE文件,如果不是直接退出,如果是则进入下一步。
这部分的代码比较简单,就直接写在下面了。
[code]local @stOF:OPENFILENAMElocal @hFile,@dwFileSize,@hMapFile,@lpMemoryinvoke RtlZeroMemory,addr @stOF,sizeof @stOF;初始化OPENFILENAME结构,以便使用mov @stOF.lStructSize,sizeof @stOFpush h WinMainpop @stOF.hwndOwnermov @stOF.lpstrFilter,offsetszExtPemov @stOF.lpstrFile,offsetszFileNamemov @stOF.nMaxFile,MAX_PATHmov @stOF.Flags,OFN_PATHMUSTEXIST or OFN_FILEMUSTEXISTinvoke GetOpenFileName,addr @stOF.if ! eaxjmp @F.endif; 打开文件获得文件句柄invoke CreateFile,addrszFileName,GENERIC_READ,FILE_SHARE_READ or \FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL .if eax != INVALID_HANDLE_VALUEmov @hFile,eaxinvoke GetFileSize,eax,NULLmov @dwFileSize,eax.if eax;用获得的文件句柄建立文件mappinginvoke CreateFileMapping,@hFile,NULL,PAGE_READONLY,0,0,NULL.if eaxmov @hMapFile,eaxinvoke MapViewOfFile,eax,FILE_MAP_READ,0,0,0.if eaxmov @lpMemory,eax; 检测PE 文件是否有效mov esi,@lpMemoryassume esi:ptr IMAGE_DOS_HEADER;检查MZ格式文件头.if [esi].e_magic != IMAGE_DOS_SIGNATUREjmp _ErrFormat.endifadd esi,[esi].e_lfanewassume esi:ptr IMAGE_NT_HEADERS;检查PE文件头.if [esi].Signature != IMAGE_NT_SIGNATUREjmp _ErrFormat.endifinvoke _ProcessPeFile,@lpMemory,esi,@dwFileSize[code]判断完是有效的PE文件后,我们进入ProcessPeFile函数的编写,在这个函数中,我们要完成可执行代码的添加功能,下面的具体操作:1、将要添加代码的文件复制一份,并重命名为xxx_new.exe,然后用CreateFile函数打开文件,获取文件句柄,下面在代码中进行讲解。
教你怎么手动增加WinPE驱动教你怎么手动添加WinPE驱动关于PE驱动的问题,无忧很早以前,有一篇"PE研究院"中已经提出来了,现在我再把自己总结的经验给大家分享一下!PE最关键的就是内核驱动和外置驱动,内核驱动主要就是南桥驱动.针对RAID.SATA.以及AHCI,这是PE最关键的部份.主要是让PE 能够识别系统的硬盘和RAID磁盘阵列,集成在WINPE.IS_/SYSTEM32/DRIVERS/中..相关驱动的配置在txtsetup.sif中...这里就介绍txtsetup.sif的配置...关于安装配置文件txtsetup.sif的简单说明[WinntDirectories]这个字段是用代码表示文件拷贝的目标文件夹,其根目录为% WinDir%即安装指定的Windows文件夹。
[SourceDiskFiles] 根据前面设定的代码表示文件拷贝的具体细节,下面三段为集成SATA SCSI等驱动时所用[HardwareIdsDatebase]—硬件标识[SCSI.load]——SCSI驱动加载[SCSI]??——SCSI设备说明添加srs驱动实例:在WinPE中添加sata,raid驱动的方法(这里以Intel MatrixStorage Manager driver为例,以便于说明,以下描述的驱动文件名只基于本实例,实际操作中的具体的文件名称以需要添加的具体驱动为准)1、准备材料:a、原版驱动文件b、从WinPE中提取的txtsetup.sif文件2、从WinPE中提取txtsetup.sif文件:先将WinPE中的winpe.is_重命名为winpe.cab,然后用RAR解压出winpe.iso,用UltraISO打开它,将txtsetup.sif提取出来,并用记事本打开备用。
3、修改txtsetup.sif文件a、打开驱动包,里面有一个扩展名为“.inf”或“.oem”的小文件,如“oemsetup.inf”或者“txtsetup.oem”等(本例中为“txtsetup.oem”),用记事本打开备用;b、在txtsetup.sif中查找[SourceDisksFiles]字段,在其下添加iaStor.sys=1,,,,,,4_,4,1,,,1,4c、查找[SCSI.Load]字段,在其下添加iaStor=iaStor.sys,4d、切换到刚才打开的txtsetup.oem,查找HardwareIds关键字,将该字段下的代码全部拷贝到txtsetup.sif文件的[HardwareIdsDatabase]字段末尾,但需要更改一下代码的格式,比如将id = "PCI\VEN_8086&DEV_27C3&CC_0104","iaStor"改为PCI\VEN_8086&DEV_27C3&CC_0104=iaStore、查找[SCSI]字段,在其下添加iaStor="Intel(R) 82801FBM SATA AHCI Controller (Mobile ICH6M)"至此,修改txtsetup.sif文件部分完成,将修改后的sif文件替换原来的文件。
5.1.1基本选项配置在工作区(Workspace)中选定一个项目,单击Project下拉菜单中的Options…选项,弹出选项配置对话框,从左边Category列表框内选择General Options进入基本选项配置。
图5.1 基本选项配置中的Target选项卡图5.1所示为基本选项配置中的Target选项卡,Processor variant(处理器类型)选项区域中的Core复选框用于设置ARM核,默认为ARM7TDMI,也可以从其左边的下拉列表框中选择其它ARM核,例如ARM9、ARM11或Xscal等。
建议使用时尽可能根据当前所用ARM芯片,选中Device复选框,点击其右边的按钮,从弹出的文本框内选择所用器件,这样IAR EWARM会根据所选芯片自动设置器件描述文件,以便于调试。
如果所选ARM芯片含有浮点数协处理器,可在FPU下拉列表框内选取合适的浮点处理单元。
Endian mode选项区域用于选择大小端模式,默认为Little。
图5.2所示为基本选项配置中的Output选项卡。
Output file选项区域用于设置编译后生成的输出文件类型,可选择Executable(生成执行代码)或Library(生成库文件)。
Output directories选项区域用于设置输出文件目录,默认执行代码文件目录为Debug\Exe,目标文件目录为Debug\Obj,列表文件目录为Debug\List,也可设置其它目录。
图5.2基本选项配置中的Output选项卡图5.3基本选项配置中的Library Configuration选项卡图5.3所示为基本选项配置中的Library Configuration选项卡。
IAR C/C++编译器提供了DLIB库,支持ISO/ANSI C和C++以及IEEE754标准的浮点数。
通过Library下拉列表框选择希望采用的运行库。
选择None表示应用程序不链接运行库;选择Normal表示链接普通运行库,其中没有locale接口和C locale,不支持文件描述符,printf and scanf不支持多字节操作,strtod不支持十六进制浮点数操作。
► IAR EW430总体介绍瑞典IAR System公司推出的IAR EW软件是一种非常有效的嵌入式系统开发工具,它使用户能够充分有效地开发并管理嵌入式应用项目,其界面类似于MS Visual C++,可以在Windows平台上运行,功能十分完善。
包含有源程序文件编辑器,项目管理器,源程序调试器等,并且为C/C++编译器,汇编器,连接定位器等提供了单一而灵活的开发环境。
源级浏览器功能可以快速浏览源文件;还提供了对第三方工具软件的接口,允许启动用户指定的应用程序。
IAR EW适用于开发基于8位,16位以及32位的处理器的嵌入式系统,其具有同一界面,用户可以针对多种不同的目标处理器,在相同的集成开发环境中进行基于不同CPU嵌入式系统应用程序的开发。
另外IAR 的链接定位器(XLINK)可以输出多种格式的目标文件,使用户可以采用第三方软件进行仿真调试。
针对TI MSP430,IAR也有相应的IAR EW430软件。
其具有上面所说的所有IAR软件共有功能,另外还有所有MSP430也包括MSP430X设备的配置文档,C-SPY调试器支持FET (TI's Flash Emulation Tool )驱动,并支持实时操作系统相关信息的调试,还提供MSP430的项目例子以及相关的代码模板等。
►现给以演示来具体说明其特性和使用:♦ 1 在安装好的文件夹下面开打IAR_KickStartCard应用工程,右击鼠标选择OPTIONS会弹出如图1所示,在CATEGORY中选择GENERAL OPTION在右边点击Target,从下面的Device右边的浏览器中可以看见IAR EW430所支持的所有常见的具体设备,在选择好具体的设备后IAR软件会自动的在后台调用相应的I/O头文件,以及设备描述文件(C-SPY为了能对不同的器件的中断系统进行正确仿真,必须了解当前使用器件关于中断的详细信息,这类信息由设备描述文件.ddf文件提供)。
PE格式文件的代码注入PE格式文件的代码注入本文演示了在不需要重新编译源代码的情况下,怎样向Windows PE(Portable Executable)格式的文件(包括EXE、DLL、OCX)中注入自己的代码。
程序如图:前言或许,你想了解一个病毒程序是怎样把自身注入到一个正常的PE文件中的,又或者是,你为了保护某种数据而加密自己的PE文件,从而想实现一个打包或保护程序;而本文的目的,就是为了向大家展示,通常的EXE工具或某种恶意程序,是怎样实现上述目的的。
可以基于本文中的代码创建一个你自己的EXE修改器,如果运用得当,它可以是一个EXE保护程序,相反的话,也可能发展成某种病毒。
不管怎样,本文写作的意图是前者,对于任何不适当的用法,本文作者概不负责。
首要条件对于阅读本文,不存在任何特定强制性的先决条件——即基础知识,如果你对调试器或者PE文件格式非常熟悉,可以跳过下面的两节,而这两节是为不具备调试器或PE文件格式知识的读者准备的。
PE文件格式PE文件格式被定义用于在Windows操作系统上执行代码或存储运行程序所需的基本数据,例如:常量、变量、引入库的链接、资源数据等等,其由MS-DOS文件头信息、Windows NT文件信息、节头部及节映像等组成,见表1。
MS-DOS头部数据MS-DOS头部数据让人回想起最初在Windows操作系统上部署程序的那些日子,那些在如Windows NT 3.51这类系统上部署程序的日子——这里是说,Win3.1、Win95、Win98不是开发所需的理想操作系统。
这些MS-DOS数据的功能就是在你运行一个可执行文件时,调用一个函数显示出“This program can not be run in MS-DOS mode”或者“This program can be run only in Windows mode”,或者当你想在MS-DOS 6.0中运行一个Windows的EXE文件时,显示出一些类似的信息,所以这些数据是被保留在代码中以作提示之用,但其中最让人感兴趣的还是数据中的“MZ”,不管你相不相信,它是微软的一个程序员“Mark Zbikowski”的首字母缩写。
软件介绍AVR® IAR Embedded Workbench® IDE用户手册的这部分包括以下章节:产品介绍已安装文件1.1产品介绍嵌入式IAR Embedded Workbench®是一个非常有效的集成开发环境(IDE),它使用户充分有效地开发并管理嵌入式应用工程。
作为一个开发平台,它具备任何在用户每天的工作地方所想要的特性。
本章介绍了嵌入式IAR Embedded Workbench IDE,旨在使用户获得对本产品的所有集成工具的总体了解。
1.1.1嵌入式IAR Embedded Workbench IDE嵌入式IAR Embedded Workbench IDE提供一个框架,任何可用的工具都可以完整地嵌入其中,这些工具包括:高度优化的IAR A VR C/C++编译器;A VR IAR汇编器;通用IAR XLINK Linker;IAR XAR库创建器和IAR XLIB Librarian;一个强大的编辑器;一个工程管理器;IAR C-SPY TM调试器,一个具有世界先进水平的高级语言调试器。
嵌入式IAR Embedded Workbench适用于大量8位、16位以及32位的微处理器和微控制器,使用户在开发新的项目时也能在所熟悉的开发环境中进行。
它为用户提供一个易学和具有最大量代码继承能力的开发环境,以及对大多数和特殊目标的支持。
嵌入式IAR Embedded Workbench有效提高用户的工作效率,通过IAR工具,用户可以大大节省工作时间。
我们称这个理念为:“不同架构,同一解决方案”。
如果用户想获得关于所支持的目标处理器的更详细的信息,请与用户的软件提供商或者与用户的IAR代理联系,或者登陆IAR网站 以查询最新的产品信息。
一个可扩展的模块化的环境尽管嵌入式IAR Embedded Workbench IDE可以提供完成一个成功工程所需的所有工具,但我们也认识到集成其他工具的必要性。
IAR配置IAR编译环境的配置是相当重要的,没配置正确或者不符合自己的习惯的话,使用起来就会很麻烦。
下面我根据网上的经验和资料,以及自己摸索和大家共同探讨下IAR的配置。
我第一次打开IAR环境的时候,发现工作区有明显分层现象。
如图一所示图一这是我郁闷了好久,网上也不知道该如何搜索相关,只有自己慢慢找,最后还是找到了。
点击tools---options就会弹出一个对话框来,如图二所示图二点editor选项卡,可以看到右边有很多选项,这些选项关系到使用的习惯和便捷性。
首先要谈到的是tab size,这个表示tab的字符宽度,默认值为8,indent size表示缩进的字符宽度,默认为2。
有人喜欢缩进为4,有人喜欢缩进为2,根据个人喜好,和程序的复杂度来选择,我一般选择2。
然后紧跟着,下面有个tab key funtion,说得是按下tab键所起到的作用,第一个表示插入制表符,第二个表示插入空格,一般选择插入空着(insert with space)这个选项。
为了解决图一的问题,就在show right margin(显示右边空白),处理方法很多,可以不选中,也可以选择Printing edge(显示到边缘),也可以把Columns(分栏)占的比例修改为100都可以。
另外,根据个人习惯,有人喜欢列出行号,有人不喜欢,这个可以在configure的下面show line numbers的选项,选中即可列出行号。
其他可以根据自己习惯设定,设定好了之后,如图三的效果,就看起来舒服多了。
图三下面一个重点就是进行项目设定了,这个步骤非常重要,如果没有设置好,有可能编译不通过或者出错。
其实我们当初选择empty project模版的时候,配置都是属于默认的,但是有些关键配置还是需要自己手动配置的,虽然配置项目很多,根据网上经验和资料,以及个人理解,列举了几个关键选项来配置即可。
1、IAR EWARM 允许为工作区中的任何一级目录和文件单独设置选项,但是用户必须首先为整个项目设置通用的选项General Option。
IAR 使用指南周立功单片机有限公司目录第1章 EWARM 集成开发环境 (1)简介 (1)1.1 IAREWARMLINK调试器介绍 (1)1.2 LMEWARM的安装 (1)1.3 IAR第2章安装流明诺瑞驱动库 (6)2.1 下载最新库文件 (6)2.2 拷贝连接器命令文件 (6)2.3 拷贝驱动库头文件 (7)2.4 拷贝底层驱动函数库 (8)第3章在EWARM中新建一个新项目 (10)3.1 建立一个项目文件目录 (10)3.2 新建工作区 (10)3.3 生成新项目 (11)3.4 添加/新建文件 (13)3.5 项目选项设置 (15)3.6 通用选项设置 (16)3.7 C/C++编译器选项设置 (16)第4章编译和运行应用程序 (23)4.1 编译连接处理 (23)4.2 查看MAP文件 (23)4.3 加载应用程序 (23)第5章生成hex文件和bin文件 (25)5.1 生成hex文件 (25)5.2 生成bin文件 (26)第1章 EWARM 集成开发环境1.1IAR EWARM 简介IAR Embedded Workbench for ARM(下面简称IAR EWARM)是一个针对ARM 处理器的集成开发环境,它包含项目管理器、编辑器、C/C++编译器和ARM 汇编器、连接器XLINK 和支持RTOS 的调试工具C-SPY。
在EWARM 环境下可以使用C/C++和汇编语言方便地开发嵌入式应用程序。
比较其他的ARM开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。
目前IAR EWARM支持ARM Cortex-M3内核的最新版本是 4.42a,该版本支持Luminary 全系列的MCU。
为了方便用户学习评估,IAR 提供一个限制32K代码的免费试用版本。
用户可以到IAR 公司的网站/ewarm下载。
1.2LM LINK调试器介绍LM LINK是由广州致远电子有限公司开发的低成本高性能USB JTAG调试器,它专门用于对Luminary系列单片机程序的调试与下载。
IAR Embedded Workbench用户指南IAR Embedded Workbench for ARM是IAR Systems公司为ARM微处理器开发的一个集成开发环境(下面简称IAR EWARM)。
比较其他的ARM开发环境,IAR EWARM具有入门容易、使用方便和代码紧凑等特点。
故在这里介绍给打算学习使用或正在使用ARM 芯片的朋友们共同探讨。
IAR Systems公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.30,并提供一个32k代码限制、但没有时间限制的免费评估版。
有兴趣的朋友可以到IAR 公司的网站/ewarm或南京万利电子的网站(本地网站)去寻找和下载。
IAR EWARM中包含一个全软件的模拟程序(simulator)。
用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。
从中可以了解和评估IAR EWARM的功能和使用方法。
我们编译整理的这本快速用户指南采用评估版软件安装目录C:\Program files\IAR System\Embedded workbench 4.0\ARM\tutor下的教程为例,一步一步介绍 IAR EWARM 的使用方法。
该教程采用了两个C语言程序,tutor.c 和utilities.c。
它们不和任何特定的硬件关联,所以介绍中的全部操作都是用模拟程序完成的。
如果用户已经购买了IAR的JTAG 仿真器J-Link,则可以在真实的目标板上运行。
IAR EWARM的主要特点如下:z高度优化的IAR ARM C/C++ Compilerz IAR ARM Assemblerz一个通用的IAR XLINK Linkerz IAR XAR和XLIB建库程序和IAR DLIB C/C++运行库z功能强大的编辑器z项目管理器z命令行实用程序z IAR C-SPY调试器(先进的高级语言调试器)下面我们分步介绍如何使用IAR EWARM一.生成一个新项目EWARM是按项目进行管理的,它提供了应用程序和库程序的项目模板。
如何在IAR中植入PE代码?
视频功能:
在本视频中,飞思卡尔工程师通过实例讲解并演示了如何在IAR工程中植入Processor Expert产生的代码。
软件准备:
需要安装如下软件:
✓Processor Expert Microcontroller Driver Suite v 10.0
✓IAR Embedded Workbench v 6.40.3
操作步骤:
1 ,新建一个Processor Expert工程,具体操作过程,请查看Processor Expert相关文档。
2,在Processor Expert工程中,当所有的组件都定义好,点击“Generate Processor Expert Code”按钮,生成代码。
如图1所示,图中的1和2两种方法均可以实现代码的生成。
图 1 生成PE代码
3,打开IAR软件,新建一个工程:Project->Create New Project如图2。
新建一个空的工程,如图3。
保存工程,如图4,原则上是可以保存在任何地方,但是为了方便调用PE的代码,通常选择保存在所建PE工程的文件夹路径下,图4中IAR 文件夹即之前PE建立工程时的文件夹。
图 2 新建IAR工程图 3 新建空的工程
图 4 设置保存路径及文件名
4,设置IAR工程的芯片类型,点击workspace中刚新建的工程,右击选择options,如图5所示。
在options界面中,分类栏选择General Options->Target->Device->选
择具体的芯片型号,如图6所示。
图 5 进入options
图 6 选择芯片型号
5,要在IAR中成功导入PE代码,下面需要做三件事情,第一,在IAR中添加文件(PE中生成的代码文件);第二,添加文件路径;第三,添加正确的链接命令文件。
如下分别讲解。
6,为IAR工程添加两个新的文件夹,分别为:GeneratedCode和Sources。
GeneratedCode中是PE生成的各个模块的代码,Source中用于放PE中的ProcessorExpert等,即main程序。
添加文件夹的方法为:以添加GeneratedCode文件夹为例,点击workspace中刚新建的工程,右击选择Add=>AddGroup=》命名文件夹名,如图7。
同样的方法添加Sources文件夹。
图 7 添加文件夹
7,为IAR工程新添加的文件夹GeneratedCode和Sources分别添加文件。
GeneratedCode文件夹需要添加PE生成的Generated_Code文件中的所有文件;Sources文件夹即添加PE生成的Sources文件夹中的所有文件。
以GeneratedCode
文件夹添加文件为例,选择IAR中新建的GeneratedCode,右击选择Add=>AddFiles,在弹出的界面中,选择到PE文件夹下Generated_Code文件夹,打开选择所有文件,点击OK,具体操作如图8。
同样的方法为IAR中Sources文件添加PE中Sources文
件夹中的所有文件。
图 8为新建文件夹添加对应的PE文件
8,为IAR工程添加文件路径,路径通常有,第一,Generated_Code文件夹的路径;第二,Sources文件夹的路径;第三,Processor Expert 头文件的路径。
这些路径并
不是固定的,由用户自己工程所在路径以及PE安装路径决定。
“Generated_Code
文件夹”的路径和“Sources文件夹”的路径即所建PE工程对应文件夹的目录。
对
于Processor Expert头文件的路径,如果用户选择的PE安装为默认安装,则在路径如下:
否则,根据自定义路径选择到相应的inc以及iofiles。
具体的添加方法为,在workspace中点击刚新建的工程,右击选择
Options=>C/C++ Complier=>Preprocessor=》设置additional include directories,如图9所示。
图 9添加路径
在本视频中,这部分路径添加是直接拷贝进去的。
若不知道路径,其实还可以在PE的ProjectInfo.xml文件中查看,如图10所示。
图 10 ProjectInfo.xml中路径情况
由于视频中并没有演示单条添加路径的操作,所以,这里做一个添加路径的补充,以添加头文件路径为例,如图11所示,其他类同。
图 11 单条添加路径操作步骤
9,为IAR工程添加链接命令文件路径
Processor Expert提供了一个链接命令文件,位置是所建的PE工程文件夹的:Project_Settings\Linker_Files\ProcessorExpert.icf
需要在IAR的link中添加这个链接命令文件,具体操作为Options=》Linker=》Config=》Override default,然后选择PE工程文件夹下的:
Project_Settings\Linker_Files\ProcessorExpert.icf
如图12所示。
设置好后,最后点击Options右下角的OK。
图 12 添加链接命令文件路径
10,编译整个工程
工程右击,点击Make,如图13所示。
图 13 编译工程
11,IAR工程下Debug需要的设置(视频补充内容)
选择Options=>Debugger=>Download=>Use flash loader(s),选择芯片对应的flash 文件。
如图14所示。
图 14 Debugger所需选择对应flash文件的步骤
参考资料:
(1),/bbs/article_1280_546419.html链接下的3.2节如何在IAR和Keil中如何结合PE生成代码。
(2),/ProcessorExpert。