尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7)

尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7)

最近有客户问到如何移植PE生成的TSI代码到IAR中,按照常规的方法在把头文件和库文件意义一一包含进来,非常繁琐,于是研究了一下相关的操作。在早期的IAR版本中,需要用户自己手动添加芯片名称,链接文件和包含的路径信息,特别是在PE增加或者删除组件后,需要用户去增减相应的文件,更增加了难度。而在最新版本的 IAR 6.7中集成了对PE工程的链接机制,它可以方便的读取PE工程的XML文件,从而实现移植PE生成的代码到 IAR Embedded Workbench中,相对于早期的IAR版本,主要完成以下几个工作:

  • 自动检测使用的芯片类型;
  • 自动添加PE的LCF连接配置文件;
  • 自动更新包含的头文件路径;
  • PE增加或者删除Component组件后,IAR工程会自动Add 或Delete 相应的组件代码;

尽管IAR完成了一些繁琐的工作,但网上没有太多的资源可以参考,对于首次使用的用户来说还是需要一些探索,为节省大家的时间,下面以一个具体的示例Step By Step的介绍如何在IAR中集成PE的工程。


1. 打开Processor Expert software 新建一个PE的工程并保存生成代码,这个过程比较简单,此处不再赘述,重点讲述一下在IAR中的使用步骤;


2. 在IAR Workbench中"Creat New Project"新建一个空的工程。

8320_8320.png1.png

3. 保存新建的工程文件到PE工程的文件夹中,需要注意的是此处也可以选择其他路径,但为简便和易维护性上还是建议直接存放到PE工程中。

8324_8324.png3.PNG.png

4. 打开Tools->Options->Project选项,勾选“Enable project connects”,这个选项的目的在于使能 IAR 能够读取Freescale Processor Expert和Infineon DAVE等第三方工具生成.XML文件。

8323_8323.png2.png


5. 添加PE工程的XML文件,选择Project->Add Project Connection,会弹出链接选择对话框,选择使用Freescale Processor Expert,默认是IAR Project Connection;

8325_8325.png4.png

8326_8326.png5.PNG.png

6. 点击OK后,选择建立PE工程时生成的工程描述符文件Projectinfo.xml;

8327_8327.png6.png

7. 完成上面步骤后,在IAR中自动完成以下三方面工作:自动加载PE生成的文件IAR中,自动安装LCF链接配置文件,自动包含头文件路径。这几个步骤在之前版本的IAR中需要自己手动添加,并且当在PE中重新生成Code时需要重新添加对应的文件;

8328_8328.png7.PNG.png

8338_8338.png11.PNG.png8340_8340.png12.PNG.png


8. 完成上面步骤之后,需要根据实际情况配置采用的下载/调试器,Project->Options->Debugger->Setup 选择下载Driver,实验中使用的是KL25的FRDM板,所以在PE Macro中选择OpenSDA,点击OK,完成设置;

8341_8341.png13.PNG.png8342_8342.png14.PNG.png

9. 编译工程,下载Debug;

8329_8329.png8.PNG.png

总结下来,主要完成两个工作:(1)配置使能 Project connection,并导入PE生成的XML文件; (2)配置调试的下载器仿真器;

Comments

Good document, it's useful to me! Thank you!

您好!

我按照你的文章使用PE建立了一个关于TSS库的工程,使用IAR编译文件时出现了错误:

Error[Li005]: no definition for "TSS_Init" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o]

Error[Li005]: no definition for "TSS_SetKeypadConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o]

Error[Li005]: no definition for "TSS_SetSystemConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o]

Error[Li005]: no definition for "TSS_GetSystemConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS_SensorTSI.o]

Error while running Linker

我找到错误的原因是:在<ProjectInfo.xml>文件中

<Libraries>

      <PathName>"TSS_KXX_M4.a"</PathName>

    </Libraries>

上述路径在IAR中识别为无效路径,导致库中的函数无法引用,

我在IAR加载文件之后,在你说的地4步《打开Tools->Options->Project选项,勾选“Enable project connects” 》中取消了工程链接,删除了IAR工程中包含的TSS_KXX_M4.a文件,然后重新加载了这个文件,这时候编译通过了。

请问这个应该怎么做呢。

我使用的是IAR6.7.1,PE10.3

你要查看一下PathName 的路径了,因为默认的路径应该是在TSS的安装目录中,另外在IARLinker配置项的library选项配置也需要check一下,需要使能atuo runtime library selection

我看了一下.xml配置文件,上面显示的库的路径是在工程文件夹下面的,实际上在Open Containing Folder命令中打开的路径也是工程所在的路径,但是并不是库的路径,是他的上级路径,应该是他没有识别到。

你说的那个选项我勾选了(atuo runtime library selection),仍然不行,但是我在选项下面的Additional libraries 中添加了库的路径之后就可以了。

第二个方法就是上面我说的方法,取消链接之后自己添加一遍库,我注意到自动添加的库是带引号的,自己添加的不带引号,不知道这意味着什么。。

下面是XML的路径片段,路径中没有中文

<PATHS>

    <LinkerCommandFile>D:\PE_K60\TEST1.0\Project_Settings\Linker_Files\ProcessorExpert.icf</LinkerCommandFile>

    <IncludePaths>

      <Path>D:\PE_K60\TEST1.0\Sources\TSS\</Path>

      <Path>C:\Freescale\PExDrv v10.3\eclipse\ProcessorExpert\lib\Kinetis\iofiles\</Path>

      <Path>C:\Freescale\PExDrv v10.3\eclipse\ProcessorExpert\lib\Kinetis\pdd\inc\</Path>

      <Path>D:\PE_K60\TEST1.0\Sources\</Path>

      <Path>D:\PE_K60\TEST1.0\Generated_Code\</Path>

    </IncludePaths>

    <SourceCodePaths>

      <Path>D:\PE_K60\TEST1.0\Generated_Code\</Path>

      <Path>D:\PE_K60\TEST1.0\Sources\</Path>

      <Path>D:\PE_K60\TEST1.0\Sources\TSS\</Path>

    </SourceCodePaths>

    <LibPaths>

      <Path>D:\PE_K60\TEST1.0\Sources\TSS\</Path>

    </LibPaths>

  </PATHS>

The problem may be replied below:


When you add a library in “Libraries(-l)”, the gcc linker knew this is a gcc library, so no need to add ‘lib’ prefix and ‘.a’ suffix.

But when you add a library in “Miscellaneous”, gcc linker doesn’t  think it is a gcc library if the file is without ‘lib’ prefix and ‘.a’ suffix.

No ratings
Version history
Last update:
‎12-15-2013 06:24 AM
Updated by: