微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PSoC Creator Bootloader更新PSoC?3固件程序

基于PSoC Creator Bootloader更新PSoC?3固件程序

时间:03-07 来源:电子产品世界 点击:

可以直接使应用于项目开发,图 3是PSoC3 I2C Bootloader的工作流程图。

  图 3 PSoC3 I2C Bootloader 工作流程图

PSoC3内部有一个8位寄存器,其最高2位只能通过上电复位清除,软件复位不影响其数值,因此可以用作运行类型标志位,每次系统上电或软件复位后都会检查此标志位,以决定是直接运行应用程序还是进入Bootloader更新固件。PSoC3 Bootloader已经定义一组用于更新固件的通讯协议,其中PSoC3作为从设备,接收主设备发送的命令数据包,处理后回复主设备状态数据包,表 1是两种数据包的格式定义。

  表 1PSoC3 I2C Bootloader通信数据包格式

表 2列出了PSoC Creator 1.0 Bootloader通讯协议支持的命令,开发者如果直接使用该协议更新固件,在设计主机更新程序时需参考此表中内容,更详细的命令定义可以参考PSoC Creator 1.0帮助文档中的系统参考指南(System Reference Guide)。

  表 2 PSoC Creator 1.0 Bootloader内嵌通讯协议命令列表

  4. PSoC3 Bootloader二次开发

PSoC Creator 1.0现提供基于I2C或USB的Bootloader实现,开发者若想使用其他的通讯接口,或者修改通讯协议和更新流程,可以在Bootloader框架基础上进行快速二次开发。cybtldr.c 是Bootloader核心功能层的实现代码,其中两个关键函数覆盖了Bootloader主要功能:

· CyBtldr_Start函数

该函数实现了执行Bootloader更新前的所有检查流程,如果需要修改图 3中的工作流程,可以修改此函数中代码。

· CyBtldr_HostLink函数

该函数是Bootloader的核心功能函数,实现了数据包的解析,命令的处理,更新Flash,以及发送状态数据包的功能。修改此函数,可以添加新命令数据包,修改数据包结构等。

CyBtldr_HostLink通过调用CyBtldrCommRead函数接收数据,调用CyBtldrCommWrite函数发送数据,这两个函数都属于通讯协议处理层,由Bootloader使用的通讯接口模块独立维护,不同的通讯接口模块具有不同实现。若使用专有通讯接口时,还需实现上述两函数以便CyBtldr_HostLink能够收发数据。

  5. 总结

使用PSoC Creator 1.0的Bootloader开发框架,开发者可以通过I2C或USB轻松更新基于PSoC3的应用产品固件程序,即使针对不同的应用需求,开发者只需较少的开发投入,就可以在Bootloader框架基础上进行二次开发,实现多样的产品特性。

参考文献

[1]. PSoC3 Architecture Technical Reference Manual, Cypress Semiconductor Ltd.

[2]. PSoC Creator: Timer Component Datasheet, Cypress Semiconductor Ltd.

[3]. PSoC Creator: Interrupt Component Datasheet, Cypress Semiconductor Ltd.

[4]. PSoC Creator: System Reference Guide, Cypress Semiconductor Ltd.

[5]. AN60317, PSoC 3 / PSoC 5 I2C Bootloader, Cypress Semiconductor Ltd.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top