一、概述 Bootloader 系统使用新应用代码和/或数据管理组件闪存的更新流程。为了使流程生效,我们使用以下组件: Bootloader 工程 - 包含 Bootloader 和通信组件的工程 Bootloadable 工程- 包含用于创建代码的 Bootloadable 组件的工程
1、Bootloader 组件 Bootloader 组件允许用户对组件闪存进行代码更新。Bootloader 接受并执行命令,然后将这些命令的响应传回通信组件。Bootloader 收集并整理接收到的数据,并通过一个简单的命令/状态寄存接口管理对闪存的写入操作。 工程应用类型需与原理图上放置的组件匹配。例如,对于 Bootloader 工程,将应用类型设置为 Bootloader 并将 Bootloader 组件放置在原理图上。
2、通信组件 通信组件管理通信协议从外部系统接收命令,然后将这些命令传递到 Bootloader 。它还将 Bootloader 的命令响应传递回片外系统。
3、Bootloadable 组件 使用 Bootloadable 组件时,可以为 Bootloadable 项目指定附加参数。
二、应用程序编程 (API )接口
应用程序编程接口 (API) 库例程允许您使用软件配置组件。下表列出了每个函数的接口并进行了说明。以下各节将更详细地介绍每个函数。 默认情况下, PSoC Creator 将实例名称“Bootloade _1”分配给指定设计中的 Bootloader 组件的第一个实例,将“Bootloadable_1”分配给 Bootloadable 组件的第一个实例。您可以将该实例重命名为符合标识符语法规则的任意唯一值。实例名称会成为每个全局函数名称、变量和常量符号的前缀。出于可读性考虑,下表中使用的实例名称为“Bootloader” 和 “Bootloadable”。 Bootloader 和 Bootloadable 的函数
三、功能描述
1、Bootloader 和 Bootloadable 的函数 Bootloader 工程通过 Bootloader工程的通信组件可将 Bootloadable 工程(或新代码)整体烧写到闪存中。传输后,会始终对处理器进行复位。Bootloader 工程还负责在复位时测试特定条件,并有可能在 Bootloadable 工程不存在或损坏的情况下自动启动传输操作。 启动时,Bootloader 代码加载其自己配置的配置字节。此外还必须初始化堆栈和其他资源以及外设以便进行传输。传输完成后,控件通过软件复位传递到 Bootloadable 中。 然后, Bootloadable 加载其自己配置的配置字节,并对堆栈及其函数的其他资源和外设重新进行初始化。 Bootloadable 可调用其中的 Bootloadable_Load() 函数,以切换为引导加载应用程序(这会再次造成软件复位)。 下图显示了 Bootloader 的工作原理。
2、Bootloader 应用程序 通常,您可以通过将 Bootloader 组件和通信组件拖到原理图上、将 I/O 路由至引脚、设置时钟等操作来完成 Bootloader 设计工程。包含 Bootloader 组件和通信组件的工程实现基本引导加载应用程序函数的新代码接收并将其写入闪存。您可以通过将其他组件拖到原理图上或添加源代码来向基本的 Bootloader 工程添加自定义函数。
3、Bootloadable 应用 Bootloadable 应用实际上就是代码。它与常规应用类型非常相似。主要区别是,Bootloadable 应用始终与引导加载应用相关联,而常规工程从不会与引导加载应用关联。
四、应用例子 以上经典描述,显得生涩难懂,不知所云,难以理解。下面几个例子就是Bootloader、Bootloadable工程程序,在The PSoS 4 kit CY8CKIT-042开发板上的试用,目的是了解引导加载应用程序的实现、特点(与常规工程应用相比)和过程。
一)、UART Bootloader工程
UART Bootloader工程有三个项目:UART_Bootloader、Bootloadabie1 和Bootloadabie2 。建造完毕(过程略)、硬件连接(UART和 PSoC 5LP 之间P0.0- P12.7、P0.1- P12.6的连接)后,经Build和Program(CY8CKIT-042经USB接口与PC相连)成功后,可以进行工作。
1、UART_Bootloader项目
这时可以看到 CY8CKIT-042板上RGB LED红灯闪亮,原理图如下: 说明Bootloader处于等待引导加载命令状态, UART是通信组件,配置给Bootloader 组件,PWM已处于工作状态,脉冲输出分配给P1.6管脚,红灯点亮。 组件和组件配置见附件:UART_Bootloader_Project图片. 软件及其它见附件:UART_Bootloader_Project.
2、Bootloadabie1项目 Bootloadabie1 配置有UART_Bootloader.hex代码,点压 CY8CKIT-042板上的“SW2”按钮,系统处于Bootloader 处于等待引导加载命令状态,CY8CKIT-042板上RGB LED红灯闪亮;打开Bootloader Host Application (UARTBootloaderHost.exe,在附件文件夹:UART_Bootloader_Project), 选择通信端口 COM(从PC设备管理器查找),点击“ Connect”按钮进行连接;连接成功后,选择引导加载文件(从文件夹里查找,路径...\Bootloadable1.cydsn\ CortexM0\ ARM_GCC_441\Debug\Bootloadable1.cyacd),点击“Bootload” 按钮引导加载文件, 引导加载成功后,点亮 CY8CKIT-042板上RGB LED绿灯。
实现原理图如下: 组件和组件配置见附件:UART_Bootloader_Project图片. 软件及其它见附件:UART_Bootloader_Project.
3、Bootloadabie2项目 过程与“2、Bootloadabie1项目”完全相同,只不过加载的是“Bootloadable1.cyacd”代码文件,点亮的是CY8CKIT-042板上RGB LED蓝灯。同样,点压CY8CKIT-042板上的“SW2”按钮,系统处于Bootloader处于等待引导加载命令状态,CY8CKIT-042板上RGB LED红灯闪亮,RGB LED其它灯灭,可以引导加载“Bootloadable1.cyacd”代码文件等循环过程。
实现原理图如下: 组件和组件配置见附件:UART_Bootloader_Project图片. 软件及其它见附件:UART_Bootloader_Project.
4、视频:
5.附件:
二)、I2C Bootloader工程
(河南 薛)
|