ERTEC200P-2 PROFINET设备完全开发手册(10)

文章介绍了ERTEC200P-2设备SPIFlash的固件结构,包括ROMHeader、FirmwareBinary、TraceData和NVData区域。提到了烧写过程中需注意的TraceData和NVData的起始地址,以及标准烧写方法和使用Python编写的烧写工具。该工具通过JLinkGDBServer和SDRAM完成固件及参数的更新。文章还包含了适配其他评估板的说明和对读者的致谢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10. 固化程序

固件在SPI Flash的结构

由于绝大多数的设计都是使用SPI Flash,因此这里只介绍SPI Flash的烧写。ERTEC200P-2的固件在SPI Flash中的Layout如下图所示:

其中ROM Header:格式如下图所示: 

Firmware Binary: 协议栈固件的二进制程序

Trace Data:当协议栈出现致命错误时,会将Trace数据写入到这个区域,但是目前没有开放工具支持读取和分析这些数据

NV Data: 非易失性参数(例如:MAC地址,IP地址,设备名称)

这里需要注意的是,目前协议栈默认Trace Data起始地址为0x00570000注意与原始协议栈不同),NV Data的起始地址为0x005F0000 注意与原始协议栈不同),如果二进制程序的比较大,越过这些数据(e.g. Trace Data)的起始地址,就会被这些数据覆盖,导致协议栈无法启动。解决的办法是修改协议栈的宏SPI_FLASH_TRACE_START和SPI_NV_ADDRESS

10.1 标准的烧写方法

注意:烧写时一定要断开网线与PLC的连接。在TIA博图软件中更新在线设备,在“在线和诊断” “分配IP地址” 将设备的IP地址改为 “192.168.1.10”。

编译生成的二进制文件ecos.bin位于\pn_ioddevkits\src\projects\pnio_proj\ertec\EB200P_Debug_EcosNative,将bin文件拷贝到\tools\TcpFwLoader文件中。用记事本打开TcpFwLoader_EB200P.bat文件,修改IP地址,使IP地址与目标板一致。同时修改.bat文件中的.bin文件名,使其与BootableBinary文件中的.bin文件名一致。例如:

tcpFwLoader ecos.bin 192.168.1.10 999

在putty串口终端键入“f”后,双击TcpFwLoader_EB200P.bat运行下载程序

 选择SPI FLASH,键入“2”,完成后,关闭Eclipse和GDB Server,重启开发板就可以看到新的固件运行了。

10.2 Python 烧写工具

笔者开发了一个基于Python的小工具。基本运行步骤是:

  1. 通过JLink的GDB Server初始化SDRAM
  2. 将一个可执行程序(flash_spi.elf)加载到SDRAM的起始地址
  3. 将固件的二进制文件加载SDRAM到指定区域
  4. 将MAC地址等参数加载到SDRAM
  5. 启动可执行程序(flash_spi.elf),可执行程序会完成烧写固件,烧写NV Data,校验等操作

运行界面如下:

运行前的准备

  1. 安装pyhthon3
  2. 安装依赖库,在windows命令行中输入: 

pip3 install ConfigParser

pip3 install wxPython

pip3 install pygdbmi

如果提示找不到pip3,需要在系统路径中添加pyhton39/scripts/

开始烧写

连接JLink到目标板,打开JLink GDB Server,确认JLink GDB Server处于运行状态;运行flash_gui.py;指定gdb的可执行程序和需要烧写的二进制代码。修改相关参数,例如MAC地址(注意:每个PN设备需要占用3个MAC地址,例如当前设备的MAC地址是80_20_CB_30_00_50,那么当前设备就占用了80_20_CB_30_00_50,80_20_CB_30_00_51,80_20_CB_30_00_52三个MAC地址,下一个设备就只能从80_20_CB_30_00_53开始。此外MAC地址不能自行随意定义,需要从相关机构购买。)和SPI的偏移量(注意:一定要与固件中的宏SPI_NV_ADDRESS保持一致)。依次运行“Start GDB”和“Flash”完成烧写,烧写完成后会自动弹出对话框提示烧写完成;在烧写过程中,ERTEC200P-2调试串口会打印出状态信息:

 如果需要修改默认值,可以直接编辑config.ini文件

 附录

1. 其他的评估板的适配

如果要适配NINICARD和NANO评估板,打开项目中的Makefile

如果是MINICARD,去掉#DEFD += -DMINI_BOARD_V1=1 的注释标识#

如果是NANO,去掉#DEFD += -DNANO_BOARD_V1=1 的注释标识#

2. 致谢

感谢大家选择西门子ERTEC200P芯片进行PN设备的开发!您对PN技术的支持,给我们增添了在技术的道路上勇往直前的信心和勇气。

祝开发顺利 !

                                                                                                                 芥末博士

                                                                                                                 2023-4-24

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值