EtherCAT 的应用在国内比较流行,使用AM335x/AMIC110/AM437x/AMIC120可以支持EtherCAT slave的应用,所以这里从零开始,以AM335x/AMIC110为例,从零开始,把如何在AM系列上玩转这一套方案的流程进行了描述,希望对大家有帮助。本文涉及到的安装和编译,最后demo搭建部分,直接参考相关的user guide即可。
特别提示:因为EtherCAT会使用到Processor SDK的相关组件,所以两者间是有一定的对应关系的。考虑到我写这个文档的时候的软件版本到后面肯定会有所改变,所以一定要注意版本的对应关系!下载了新版本的软件时,一定要先看release notes,确认你的版本对应关系没搞错,没下载错。
下面的流程仅仅是供大家参考,在你本地的编译上版本多半会有所差异。一定要注意。
软件版本选择及安装、CCS升级:
在跑AM335x/AMIC110的EtherCAT slave demo的时候,首先要安装两个部分: 一个是PRU-ICSS-ETHERCAT-SLAVE 开发包,当前版本为:01_00_03_01
下载地址:http://software-dl.ti.com/processor-industrial-sw/esd/PRU_ICSS_EtherCAT_Slave/latest/index_FDS.html 另一个就是我们的PROCESS SDK RTOS ,建议版本为:03_03_00_04
下载地址:http://software-dl.ti.com/processor-sdk-rtos/esd/AM335X/03_03_00_04/index_FDS.html
注意:后续的软件版本可能会有更新,但一定要注意版本的匹配问题。比如当前的PRU-ICSS-ETHERCAT-SLAVE开发包中,安装完成后在docs文件夹下PRU_ICSS_EtherCAT_User_Guide.pdf文件,中会有对当前支持版本的描述,如下:
据此,我们选择PROCESSOR RTOS的版本为3.3.0.4。
下载安装完成以上两个开发包后,就可以开始RTOS的编译和ETHERCAT SLAVE的例程编译工作了。
这里,因为大部分用户都是使用windows的,所以我目前用的是windows 10 64-bit作为环境。
这里简单介绍一下AMIC110的开发板:
AMIC110的开发板上,主要是使用SPI启动的方式,因此编译的image,都是要基于SPI flash来进行操作。PS: 对于AMIC110 ICE EVM 版bootloader的支持,不建议使用当前的建议使用3.3.0.4版本,并不完善。建议使用processor_sdk_rtos_am335x_4_00_00_04版本。对于AM335x ICE 及其他EVM,3.3.0.4足以。 CCS一般建议7.0及以上版本。特别需要注意的是:在建立target configuration的时候,如果没有AMIC110和ICE_AMIC110的选项,你需要升级当前的CCS组件,方法如下:
选择CCS的Help选项卡 ,然后选择 Check for Updates,在弹出的窗体中选择Sitara device support,然后升级这个部分,升级完成之后,就可以在新配置中看到新发布的产品选项,比如ICE_AMIC110。
RTOS和相关软件的安装:安装的时候,RTOS的相关组件一般建议完整安装,使用默认,不要乱取消即可,列表如下。相关软件建议就安装在默认位置,C盘的TI目录下。若是要改变安装路径,后续的脚本编译过程中,要记得改路径名。
软件编译:
安装完成之后,就准备开始编译工作了。
Step 1:确认路径以及环境变量的设置
若是CCS或者SDK没有安装在默认路径,需要按照下面的方法来设置你的安装路径,在设置完后,即可使用脚本编译。
注意:你的CCS的安装路径和SDK的安装路径可能是分开的,所以要根据对应的条目来确认你的安装方法。例如,CCS安装在自定义路径,但是SDK安装在默认路径时,就看链接中的“CCS in Custom Path and SDK RTOS in Default Path”。链接中描述的很详细,注意找对相应的条目。
http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Install_In_Custom_Path
如果是安装在默认路径,可以忽略这个步骤。
Step2:编译SDK
2.1 设置环境变量 — 运行setupenv.bat
Windows打开cmd,然后进入到PDK的根目录下,例如:C:\ti\processor_sdk_rtos_am335x_3_03_00_04, 然后运行setupenv.bat文件。
cd c:/ti
cd processor_sdk_rtos_am335x_3_03_00_04
setupenv.bat
即可,正常情况下的情况如下所示。
如果发生任何问题:
1. 请先检查一下上面step1过程中的路径设置是否正确,这其中包括CCS的路径,PDK的路径,PRU-ETHERCAT的路径。
2. 然后再确认你在CMD命令行下的操作,是否是在正确的文件夹下了。
3. 再有就是权限的控制,因为有些公司是有相关的安全要求,所以会有加密和权限等设置,目前接触的case中是有类似情况发生的,建议找台相关干净一些的电脑进行相关操作。
2.2使用gmake进行编译:
在命令行中,敲入“gmake”,此后,脚本便开始编译工作,下面是正常开始编译的截图。完整编完的时间会比较长 (> 40min).
编译开始:
编译完成:
参考:http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Building_The_SDK
至此,编译工作已经完成。将MLO (bootloader)和app烧录到AMIC110 ICE SPI中,即可使其工作。
PS: 编译成功的bootloader image文件在以下文件夹下:
C:\ti\pdk_am335x_1_0_6\packages\ti\starterware\binary\bootloader\bin\am335x-evm\gcc
Step 3烧录到SPI flash中的需要使用CCS运行flash write。
使用步骤:
1. 打开CCS,从View->Target Configuration中,右键点击User Defined文件夹,新建一个ccxml文件,并从中选择你的仿真器型号和板卡型号。比如我建立的是AMIC110_ICE.ccxml,使用的是XDS200的仿真器,板子是AMIC 110 ICE板卡,选择如下:
2. Save保存后,接好仿真器,给板子通上电后,即可右键点击AMIC110_ICE.ccxml,选择Launch Selected Configuration。这时候就会进入到debug界面,然后在Cortex A8那里右键点击选择Connect Target。这时候,如果正常连接,就能看到地址信息(如下图的0x0002008C,这是当前指针停的位置),同时GEL文件就会自动运行,GEL中会初始化ARM和DDR,这样后续就可以正常的load文件从而运行了。参考如下:
3. Load 烧写flash的文件,下列文件即为可以进行SPI flash烧录的工具文件:
C:\ti\pdk_am335x_1_0_6\packages\ti\starterware\tools\flash_writer\spi_flash_writer_AM335X.out
这个是已经编译好的,load进去执行即可。
操作:在debug界面下,选择Run->Load->Load Program,在弹出的选项卡中选择browse,选择上面的out文件,点击OK即可进行load,出现如下界面的时候点击绿色播放按钮,即可正常执行。
PS: 红框部分,只是因为没有找到源文件关联才出现的提示,所以不用管它,正常执行即可。
4. 烧录bootloader到地址0x00000000区间上。
在点击运行之后,在console中即会出现相关的打印信息,按照提示操作即可进行文件的烧录。Bootloader的文件名是bootloader_boot_mcspi_a8host_release_ti.bin,注意在输入文件名的时候,需要输入完整的路径,如下所示:
正常烧录完成后,即可看到如下提示:
此时bootloader烧录完成。
5. 烧录app到地址0x20000区间上。
App即为EtherCAT slave的应用程序。
这里可以直接download EtherCAT slave编译好的prebuilt binaries。下载后解压,适用于AMIC110 ICE开发板的即为:C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.03.01\pru_icss_ethercat_slave_prebuilt_01.00.03.01\applications\ethercat_slave_demo_arm\AMIC11x_release目录下的app文件
下载链接:
http://software-dl.ti.com/processor-industrial-sw/esd/PRU_ICSS_EtherCAT_Slave/latest/index_FDS.html
编译EtherCAT slave的app
安装完PRU-ETHERCAT的软件后,可以在C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.03.01\docs文件夹下查看PRU_ICSS_EtherCAT_User_Guide.pdf,里面包含了所有的编译流程,描述如下:
1. 打开windows命令行,进入到如下文件夹:
C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.03.01\protocols\ethercat_slave\projects
使用如下命令进行工程文件的创建:
projectCreate.bat AMIC11x arm ethercat_slave_demo
创建完成后,在C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.03.01\protocols\ethercat_slave\projects文件夹下便会存在一个新的ethercat_slave_demo_AMIC11x_arm文件夹。该工程即为CCS工程。
2.使用CCS进行文件的导入编译。
在CCS中,选择file->import,然后在Code Composer Studio下面选择CCS Projects,然后选择到上述文件目录,即可完成导入。导入后,邮件选择该工程,进行工程的重建,rebuild project。正常情况下,即可编译生成EtherCAT slave的demo例程以及相关app文件。
PS: 对于EtherCAT的应用,一般建议在我们提供的app中直接进行修改。若是自建工程进行RTOS的学习、测试,一定要注意版本的对应关系,可以参考相关的release notes
http://processors.wiki.ti.com/index.php?title=Processor_SDK_RTOS_Release_Notes&oldid=227097#Component_Version
参考:EtherCAT Slave Demo Application User Guide
PS: 这个有别于full feature demo,另有一个帖子来讲述full feature demo的编译。两个帖子分开,方便大家针对不同阶段的问题进行提问。
peng zhou:
你好:看了你的这篇文章解决了一些困惑,但我在按照EtherCAT Full Feature Demo 编译指南搭建环境的时候还是碰到问题,我使用CCS7.2 SDK4.1 PRU-ICSS-EtherCAT_Slave-01.00.05.00 版本应该是匹配的,整个过程也是按照文章流程走的,有一个地方不一样,您用的是SSC_V5i11_r 而我的是SSC_V5i11 下面是我用的资料
在搭建AMIC11x arm ethercat_slave_demo一切顺利,包括烧写都和上面的文章一致,
现在不清楚问题出现在哪里,希望您能帮我解答下,谢谢
Damon_Gu:
嗨,Steven:我按照您上面所说的烧录方式,分别烧录bootloader_boot_mcspi_a8host_release_ti.bin 和 profibus_slave的app到SPI Flash对应的0x0及0x20000地址处,但是重新给AMIC110上电,发现无法从SPI Flash启动,我试过用CCS 进行仿真 是可以的,因此想向您请教下,可能是什么原因导致的?还有就是是否要配置SPI Flash为默认启动,如何配置?谢谢!
yongqing wang:
回复 Damon_Gu:
你是怎么烧写的?
Damon_Gu:
回复 yongqing wang:
我在使用CCS给 AMIC110 SPI Flash烧录bootloader和APP时出现一些问题;具体如下: 首先我参考的是https://e2echina.ti.com/question_answer/dsp_arm/sitara_arm/f/25/t/145729
bootloader_boot_mcspi_a8host_debug_ti.bin 烧录地址为 0x00000000;2. 烧录的app文件路径如下:C:\ti\PRU-ICSS-Profibus_Slave_01.00.02.01\protocols\profibus_slave\projects\profibus_slave_AMIC11x_arm\AMIC11x_debug
文件名称为:profibus_slave_AMIC11x_arm.bin文件(也尝试烧录profibus_slave_AMIC11x_arm .out 但是烧录时间太长!)烧录地址:0x20000;
(!!!!以上的都烧录成功且显示Verify Success)
烧录完成后断电重启并接上串口 结果:并没有APP显示的Menu 。 (!!!我使用CCS9.1仿真loader profibus_slave_AMIC11x_arm .out 可以显示APP后的Menu)
Damon_Gu:
请问一下,如果使用CCS打开profibus_slave工程,编译生成bin文件,那么以上烧录到0x20000的app文件是否需要替换成生成的bin文件?